diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+Copyright (c) 2010-2012 Hamish Mackenzie, Victor Nazarov, Luite Stegeman
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
diff --git a/Setup.lhs b/Setup.lhs
new file mode 100644
--- /dev/null
+++ b/Setup.lhs
@@ -0,0 +1,6 @@
+#!/usr/bin/runhaskell 
+> module Main where
+> import Distribution.Simple
+> main :: IO ()
+> main = defaultMain
+
diff --git a/ghcjs-dom-javascript.cabal b/ghcjs-dom-javascript.cabal
new file mode 100644
--- /dev/null
+++ b/ghcjs-dom-javascript.cabal
@@ -0,0 +1,1237 @@
+cabal-version: 3.6
+name: ghcjs-dom-javascript
+version: 0.9.9.0
+build-type: Simple
+license: MIT
+license-file: LICENSE
+maintainer: Hamish Mackenzie <Hamish.K.Mackenzie@googlemail.com>
+synopsis: DOM library using JSFFI and GHCJS
+description: Documentent Object Model (DOM) functions that work with
+             GHCJS.
+author: Hamish Mackenzie
+category: Web
+
+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-javascript
+
+library
+    build-depends: base <5,
+                   transformers >=0.2 && <0.7,
+                   text >= 0.11.0.6 && < 2.2,
+                   ghcjs-base >=0.8.0.0 && <0.9,
+                   ghc-prim
+
+    default-language: Haskell2010
+
+    if impl(ghcjs)
+        other-extensions: JavaScriptFFI
+        build-depends: ghcjs-prim
+
+    hs-source-dirs: src
+    cpp-options: -DUSE_JAVASCRIPTFFI
+    exposed: True
+    if impl(ghcjs) || arch(javascript)
+        buildable: True
+    else
+        buildable: False
+    js-sources: jsbits/xhr.js
+
+    exposed-modules:
+          GHCJS.DOM
+          GHCJS.DOM.Types
+          GHCJS.DOM.EventM
+          GHCJS.DOM.EventTargetClosures
+          GHCJS.DOM.Internal
+
+          GHCJS.DOM.JSFFI.AudioContext
+          GHCJS.DOM.JSFFI.Database
+          GHCJS.DOM.JSFFI.DOMError
+          GHCJS.DOM.JSFFI.Geolocation
+          GHCJS.DOM.JSFFI.Navigator
+          GHCJS.DOM.JSFFI.NavigatorUserMediaError
+          GHCJS.DOM.JSFFI.PositionError
+          GHCJS.DOM.JSFFI.RTCPeerConnectionError
+          GHCJS.DOM.JSFFI.SpeechGrammar
+          GHCJS.DOM.JSFFI.SpeechRecognition
+          GHCJS.DOM.JSFFI.SpeechRecognitionError
+          GHCJS.DOM.JSFFI.SpeechRecognitionEvent
+          GHCJS.DOM.JSFFI.SQLError
+          GHCJS.DOM.JSFFI.SQLTransaction
+          GHCJS.DOM.JSFFI.Window
+          GHCJS.DOM.JSFFI.XMLHttpRequest
+
+          -- (cd ghcjs-dom-javascript/src/GHCJS/DOM/JSFFI/Generated && ls | sed 's|\(^.*\)\.hs|          GHCJS.DOM.JSFFI.Generated.\1|' | pbcopy)
+          GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+          GHCJS.DOM.JSFFI.Generated.AbstractWorker
+          GHCJS.DOM.JSFFI.Generated.AnalyserNode
+          GHCJS.DOM.JSFFI.Generated.Animatable
+          GHCJS.DOM.JSFFI.Generated.Animation
+          GHCJS.DOM.JSFFI.Generated.AnimationEvent
+          GHCJS.DOM.JSFFI.Generated.ApplePayError
+          GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent
+          GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent
+          GHCJS.DOM.JSFFI.Generated.ApplePaySession
+          GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent
+          GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent
+          GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent
+          GHCJS.DOM.JSFFI.Generated.ApplicationCache
+          GHCJS.DOM.JSFFI.Generated.Attr
+          GHCJS.DOM.JSFFI.Generated.AudioBuffer
+          GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
+          GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+          GHCJS.DOM.JSFFI.Generated.AudioContext
+          GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+          GHCJS.DOM.JSFFI.Generated.AudioListener
+          GHCJS.DOM.JSFFI.Generated.AudioNode
+          GHCJS.DOM.JSFFI.Generated.AudioParam
+          GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+          GHCJS.DOM.JSFFI.Generated.AudioTrack
+          GHCJS.DOM.JSFFI.Generated.AudioTrackList
+          GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+          GHCJS.DOM.JSFFI.Generated.BarProp
+          GHCJS.DOM.JSFFI.Generated.BasicCredential
+          GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+          GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+          GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+          GHCJS.DOM.JSFFI.Generated.Blob
+          GHCJS.DOM.JSFFI.Generated.BlobCallback
+          GHCJS.DOM.JSFFI.Generated.Body
+          GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy
+          GHCJS.DOM.JSFFI.Generated.CSS
+          GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
+          GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+          GHCJS.DOM.JSFFI.Generated.CSSImportRule
+          GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+          GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+          GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+          GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule
+          GHCJS.DOM.JSFFI.Generated.CSSPageRule
+          GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
+          GHCJS.DOM.JSFFI.Generated.CSSRule
+          GHCJS.DOM.JSFFI.Generated.CSSRuleList
+          GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
+          GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+          GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
+          GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+          GHCJS.DOM.JSFFI.Generated.CSSValue
+          GHCJS.DOM.JSFFI.Generated.CSSValueList
+          GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack
+          GHCJS.DOM.JSFFI.Generated.CanvasGradient
+          GHCJS.DOM.JSFFI.Generated.CanvasPath
+          GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+          GHCJS.DOM.JSFFI.Generated.CharacterData
+          GHCJS.DOM.JSFFI.Generated.ChildNode
+          GHCJS.DOM.JSFFI.Generated.ClipboardEvent
+          GHCJS.DOM.JSFFI.Generated.CloseEvent
+          GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
+          GHCJS.DOM.JSFFI.Generated.Comment
+          GHCJS.DOM.JSFFI.Generated.CompositionEvent
+          GHCJS.DOM.JSFFI.Generated.ConvolverNode
+          GHCJS.DOM.JSFFI.Generated.Coordinates
+          GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy
+          GHCJS.DOM.JSFFI.Generated.Counter
+          GHCJS.DOM.JSFFI.Generated.Crypto
+          GHCJS.DOM.JSFFI.Generated.CryptoKey
+          GHCJS.DOM.JSFFI.Generated.CustomElementRegistry
+          GHCJS.DOM.JSFFI.Generated.CustomEvent
+          GHCJS.DOM.JSFFI.Generated.DOMError
+          GHCJS.DOM.JSFFI.Generated.DOMException
+          GHCJS.DOM.JSFFI.Generated.DOMImplementation
+          GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
+          GHCJS.DOM.JSFFI.Generated.DOMParser
+          GHCJS.DOM.JSFFI.Generated.DOMPoint
+          GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly
+          GHCJS.DOM.JSFFI.Generated.DOMRect
+          GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly
+          GHCJS.DOM.JSFFI.Generated.DOMStringList
+          GHCJS.DOM.JSFFI.Generated.DOMStringMap
+          GHCJS.DOM.JSFFI.Generated.DOMTokenList
+          GHCJS.DOM.JSFFI.Generated.DataCue
+          GHCJS.DOM.JSFFI.Generated.DataTransfer
+          GHCJS.DOM.JSFFI.Generated.DataTransferItem
+          GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+          GHCJS.DOM.JSFFI.Generated.Database
+          GHCJS.DOM.JSFFI.Generated.DatabaseCallback
+          GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.DelayNode
+          GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+          GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+          GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
+          GHCJS.DOM.JSFFI.Generated.Document
+          GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers
+          GHCJS.DOM.JSFFI.Generated.DocumentFragment
+          GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot
+          GHCJS.DOM.JSFFI.Generated.DocumentTimeline
+          GHCJS.DOM.JSFFI.Generated.DocumentType
+          GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+          GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+          GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+          GHCJS.DOM.JSFFI.Generated.EXTsRGB
+          GHCJS.DOM.JSFFI.Generated.Element
+          GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle
+          GHCJS.DOM.JSFFI.Generated.Enums
+          GHCJS.DOM.JSFFI.Generated.ErrorEvent
+          GHCJS.DOM.JSFFI.Generated.Event
+          GHCJS.DOM.JSFFI.Generated.EventListener
+          GHCJS.DOM.JSFFI.Generated.EventSource
+          GHCJS.DOM.JSFFI.Generated.EventTarget
+          GHCJS.DOM.JSFFI.Generated.File
+          GHCJS.DOM.JSFFI.Generated.FileError
+          GHCJS.DOM.JSFFI.Generated.FileException
+          GHCJS.DOM.JSFFI.Generated.FileList
+          GHCJS.DOM.JSFFI.Generated.FileReader
+          GHCJS.DOM.JSFFI.Generated.FileReaderSync
+          GHCJS.DOM.JSFFI.Generated.FocusEvent
+          GHCJS.DOM.JSFFI.Generated.FontFace
+          GHCJS.DOM.JSFFI.Generated.FontFaceSet
+          GHCJS.DOM.JSFFI.Generated.FormData
+          GHCJS.DOM.JSFFI.Generated.GainNode
+          GHCJS.DOM.JSFFI.Generated.Gamepad
+          GHCJS.DOM.JSFFI.Generated.GamepadButton
+          GHCJS.DOM.JSFFI.Generated.GamepadEvent
+          GHCJS.DOM.JSFFI.Generated.Geolocation
+          GHCJS.DOM.JSFFI.Generated.Geoposition
+          GHCJS.DOM.JSFFI.Generated.GlobalCrypto
+          GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers
+          GHCJS.DOM.JSFFI.Generated.GlobalPerformance
+          GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+          GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
+          GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
+          GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
+          GHCJS.DOM.JSFFI.Generated.HTMLCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLDListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDataElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDivElement
+          GHCJS.DOM.JSFFI.Generated.HTMLDocument
+          GHCJS.DOM.JSFFI.Generated.HTMLElement
+          GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFontElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLFormElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
+          GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHRElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
+          GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils
+          GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
+          GHCJS.DOM.JSFFI.Generated.HTMLImageElement
+          GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+          GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLIElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
+          GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMapElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
+          GHCJS.DOM.JSFFI.Generated.HTMLModElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
+          GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+          GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
+          GHCJS.DOM.JSFFI.Generated.HTMLParamElement
+          GHCJS.DOM.JSFFI.Generated.HTMLPreElement
+          GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
+          GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
+          GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSlotElement
+          GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+          GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTimeElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
+          GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
+          GHCJS.DOM.JSFFI.Generated.HTMLUListElement
+          GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
+          GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+          GHCJS.DOM.JSFFI.Generated.Headers
+          GHCJS.DOM.JSFFI.Generated.History
+          GHCJS.DOM.JSFFI.Generated.IDBCursor
+          GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+          GHCJS.DOM.JSFFI.Generated.IDBDatabase
+          GHCJS.DOM.JSFFI.Generated.IDBFactory
+          GHCJS.DOM.JSFFI.Generated.IDBIndex
+          GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+          GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+          GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+          GHCJS.DOM.JSFFI.Generated.IDBRequest
+          GHCJS.DOM.JSFFI.Generated.IDBTransaction
+          GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+          GHCJS.DOM.JSFFI.Generated.ImageData
+          GHCJS.DOM.JSFFI.Generated.InputEvent
+          GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserver
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback
+          GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry
+          GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+          GHCJS.DOM.JSFFI.Generated.KeyframeEffect
+          GHCJS.DOM.JSFFI.Generated.Location
+          GHCJS.DOM.JSFFI.Generated.MediaController
+          GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+          GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo
+          GHCJS.DOM.JSFFI.Generated.MediaDevices
+          GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+          GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent
+          GHCJS.DOM.JSFFI.Generated.MediaError
+          GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+          GHCJS.DOM.JSFFI.Generated.MediaKeySession
+          GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap
+          GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess
+          GHCJS.DOM.JSFFI.Generated.MediaKeys
+          GHCJS.DOM.JSFFI.Generated.MediaList
+          GHCJS.DOM.JSFFI.Generated.MediaQueryList
+          GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
+          GHCJS.DOM.JSFFI.Generated.MediaRemoteControls
+          GHCJS.DOM.JSFFI.Generated.MediaSession
+          GHCJS.DOM.JSFFI.Generated.MediaSource
+          GHCJS.DOM.JSFFI.Generated.MediaStream
+          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+          GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+          GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
+          GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+          GHCJS.DOM.JSFFI.Generated.MessageChannel
+          GHCJS.DOM.JSFFI.Generated.MessageEvent
+          GHCJS.DOM.JSFFI.Generated.MessagePort
+          GHCJS.DOM.JSFFI.Generated.MimeType
+          GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+          GHCJS.DOM.JSFFI.Generated.MouseEvent
+          GHCJS.DOM.JSFFI.Generated.MutationEvent
+          GHCJS.DOM.JSFFI.Generated.MutationObserver
+          GHCJS.DOM.JSFFI.Generated.MutationRecord
+          GHCJS.DOM.JSFFI.Generated.NamedNodeMap
+          GHCJS.DOM.JSFFI.Generated.Navigator
+          GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware
+          GHCJS.DOM.JSFFI.Generated.NavigatorID
+          GHCJS.DOM.JSFFI.Generated.NavigatorLanguage
+          GHCJS.DOM.JSFFI.Generated.NavigatorOnLine
+          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError
+          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
+          GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
+          GHCJS.DOM.JSFFI.Generated.Node
+          GHCJS.DOM.JSFFI.Generated.NodeFilter
+          GHCJS.DOM.JSFFI.Generated.NodeIterator
+          GHCJS.DOM.JSFFI.Generated.NodeList
+          GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode
+          GHCJS.DOM.JSFFI.Generated.NonElementParentNode
+          GHCJS.DOM.JSFFI.Generated.Notification
+          GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
+          GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
+          GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
+          GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+          GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+          GHCJS.DOM.JSFFI.Generated.OscillatorNode
+          GHCJS.DOM.JSFFI.Generated.OverconstrainedError
+          GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent
+          GHCJS.DOM.JSFFI.Generated.OverflowEvent
+          GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+          GHCJS.DOM.JSFFI.Generated.PannerNode
+          GHCJS.DOM.JSFFI.Generated.ParentNode
+          GHCJS.DOM.JSFFI.Generated.PasswordCredential
+          GHCJS.DOM.JSFFI.Generated.Path2D
+          GHCJS.DOM.JSFFI.Generated.Performance
+          GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+          GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserver
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback
+          GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList
+          GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+          GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+          GHCJS.DOM.JSFFI.Generated.Plugin
+          GHCJS.DOM.JSFFI.Generated.PluginArray
+          GHCJS.DOM.JSFFI.Generated.PopStateEvent
+          GHCJS.DOM.JSFFI.Generated.PositionCallback
+          GHCJS.DOM.JSFFI.Generated.PositionError
+          GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
+          GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
+          GHCJS.DOM.JSFFI.Generated.ProgressEvent
+          GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent
+          GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
+          GHCJS.DOM.JSFFI.Generated.RGBColor
+          GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+          GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannel
+          GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+          GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+          GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
+          GHCJS.DOM.JSFFI.Generated.RTCIceTransport
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
+          GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent
+          GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver
+          GHCJS.DOM.JSFFI.Generated.RTCRtpSender
+          GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver
+          GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+          GHCJS.DOM.JSFFI.Generated.RTCTrackEvent
+          GHCJS.DOM.JSFFI.Generated.RadioNodeList
+          GHCJS.DOM.JSFFI.Generated.Range
+          GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController
+          GHCJS.DOM.JSFFI.Generated.ReadableStream
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader
+          GHCJS.DOM.JSFFI.Generated.ReadableStreamSource
+          GHCJS.DOM.JSFFI.Generated.Rect
+          GHCJS.DOM.JSFFI.Generated.Request
+          GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
+          GHCJS.DOM.JSFFI.Generated.Response
+          GHCJS.DOM.JSFFI.Generated.SQLError
+          GHCJS.DOM.JSFFI.Generated.SQLException
+          GHCJS.DOM.JSFFI.Generated.SQLResultSet
+          GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
+          GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
+          GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
+          GHCJS.DOM.JSFFI.Generated.SQLTransaction
+          GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
+          GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
+          GHCJS.DOM.JSFFI.Generated.SVGAElement
+          GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
+          GHCJS.DOM.JSFFI.Generated.SVGAngle
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+          GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+          GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+          GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+          GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+          GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+          GHCJS.DOM.JSFFI.Generated.SVGElement
+          GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+          GHCJS.DOM.JSFFI.Generated.SVGException
+          GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
+          GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+          GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+          GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+          GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
+          GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+          GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
+          GHCJS.DOM.JSFFI.Generated.SVGFilterElement
+          GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+          GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+          GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+          GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
+          GHCJS.DOM.JSFFI.Generated.SVGGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+          GHCJS.DOM.JSFFI.Generated.SVGImageElement
+          GHCJS.DOM.JSFFI.Generated.SVGLength
+          GHCJS.DOM.JSFFI.Generated.SVGLengthList
+          GHCJS.DOM.JSFFI.Generated.SVGLineElement
+          GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
+          GHCJS.DOM.JSFFI.Generated.SVGMaskElement
+          GHCJS.DOM.JSFFI.Generated.SVGMatrix
+          GHCJS.DOM.JSFFI.Generated.SVGNumber
+          GHCJS.DOM.JSFFI.Generated.SVGNumberList
+          GHCJS.DOM.JSFFI.Generated.SVGPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGPathSeg
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegList
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
+          GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
+          GHCJS.DOM.JSFFI.Generated.SVGPatternElement
+          GHCJS.DOM.JSFFI.Generated.SVGPoint
+          GHCJS.DOM.JSFFI.Generated.SVGPointList
+          GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+          GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+          GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
+          GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
+          GHCJS.DOM.JSFFI.Generated.SVGRect
+          GHCJS.DOM.JSFFI.Generated.SVGRectElement
+          GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
+          GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+          GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+          GHCJS.DOM.JSFFI.Generated.SVGStopElement
+          GHCJS.DOM.JSFFI.Generated.SVGStringList
+          GHCJS.DOM.JSFFI.Generated.SVGStyleElement
+          GHCJS.DOM.JSFFI.Generated.SVGTests
+          GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+          GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
+          GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+          GHCJS.DOM.JSFFI.Generated.SVGTransform
+          GHCJS.DOM.JSFFI.Generated.SVGTransformList
+          GHCJS.DOM.JSFFI.Generated.SVGURIReference
+          GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+          GHCJS.DOM.JSFFI.Generated.SVGUseElement
+          GHCJS.DOM.JSFFI.Generated.SVGViewElement
+          GHCJS.DOM.JSFFI.Generated.SVGViewSpec
+          GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
+          GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
+          GHCJS.DOM.JSFFI.Generated.Screen
+          GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+          GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+          GHCJS.DOM.JSFFI.Generated.Selection
+          GHCJS.DOM.JSFFI.Generated.ShadowRoot
+          GHCJS.DOM.JSFFI.Generated.SiteBoundCredential
+          GHCJS.DOM.JSFFI.Generated.Slotable
+          GHCJS.DOM.JSFFI.Generated.SourceBuffer
+          GHCJS.DOM.JSFFI.Generated.SourceBufferList
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+          GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+          GHCJS.DOM.JSFFI.Generated.StaticRange
+          GHCJS.DOM.JSFFI.Generated.Storage
+          GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
+          GHCJS.DOM.JSFFI.Generated.StorageEvent
+          GHCJS.DOM.JSFFI.Generated.StorageInfo
+          GHCJS.DOM.JSFFI.Generated.StorageQuota
+          GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
+          GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
+          GHCJS.DOM.JSFFI.Generated.StringCallback
+          GHCJS.DOM.JSFFI.Generated.StyleMedia
+          GHCJS.DOM.JSFFI.Generated.StyleSheet
+          GHCJS.DOM.JSFFI.Generated.StyleSheetList
+          GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+          GHCJS.DOM.JSFFI.Generated.Text
+          GHCJS.DOM.JSFFI.Generated.TextDecoder
+          GHCJS.DOM.JSFFI.Generated.TextEncoder
+          GHCJS.DOM.JSFFI.Generated.TextEvent
+          GHCJS.DOM.JSFFI.Generated.TextMetrics
+          GHCJS.DOM.JSFFI.Generated.TextTrack
+          GHCJS.DOM.JSFFI.Generated.TextTrackCue
+          GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+          GHCJS.DOM.JSFFI.Generated.TextTrackList
+          GHCJS.DOM.JSFFI.Generated.TimeRanges
+          GHCJS.DOM.JSFFI.Generated.Touch
+          GHCJS.DOM.JSFFI.Generated.TouchEvent
+          GHCJS.DOM.JSFFI.Generated.TouchList
+          GHCJS.DOM.JSFFI.Generated.TrackEvent
+          GHCJS.DOM.JSFFI.Generated.TransitionEvent
+          GHCJS.DOM.JSFFI.Generated.TreeWalker
+          GHCJS.DOM.JSFFI.Generated.UIEvent
+          GHCJS.DOM.JSFFI.Generated.URL
+          GHCJS.DOM.JSFFI.Generated.URLSearchParams
+          GHCJS.DOM.JSFFI.Generated.UserMessageHandler
+          GHCJS.DOM.JSFFI.Generated.VTTCue
+          GHCJS.DOM.JSFFI.Generated.VTTRegion
+          GHCJS.DOM.JSFFI.Generated.VTTRegionList
+          GHCJS.DOM.JSFFI.Generated.ValidityState
+          GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+          GHCJS.DOM.JSFFI.Generated.VideoTrack
+          GHCJS.DOM.JSFFI.Generated.VideoTrackList
+          GHCJS.DOM.JSFFI.Generated.VoidCallback
+          GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+          GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+          GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
+          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
+          GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
+          GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+          GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
+          GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
+          GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
+          GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
+          GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
+          GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+          GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+          GHCJS.DOM.JSFFI.Generated.WebGPUBuffer
+          GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer
+          GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue
+          GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder
+          GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState
+          GHCJS.DOM.JSFFI.Generated.WebGPUDrawable
+          GHCJS.DOM.JSFFI.Generated.WebGPUFunction
+          GHCJS.DOM.JSFFI.Generated.WebGPULibrary
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState
+          GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext
+          GHCJS.DOM.JSFFI.Generated.WebGPUTexture
+          GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor
+          GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+          GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError
+          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession
+          GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys
+          GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
+          GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+          GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+          GHCJS.DOM.JSFFI.Generated.WebKitPoint
+          GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto
+          GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+          GHCJS.DOM.JSFFI.Generated.WebSocket
+          GHCJS.DOM.JSFFI.Generated.WheelEvent
+          GHCJS.DOM.JSFFI.Generated.Window
+          GHCJS.DOM.JSFFI.Generated.WindowEventHandlers
+          GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.Worker
+          GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+          GHCJS.DOM.JSFFI.Generated.WorkerLocation
+          GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+          GHCJS.DOM.JSFFI.Generated.WritableStream
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget
+          GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+          GHCJS.DOM.JSFFI.Generated.XMLSerializer
+          GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+          GHCJS.DOM.JSFFI.Generated.XPathException
+          GHCJS.DOM.JSFFI.Generated.XPathExpression
+          GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+          GHCJS.DOM.JSFFI.Generated.XPathResult
+          GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+
+    reexported-modules:
+          -- cat ghcjs-dom-javascript/reexported-modules.txt | pbcopy
+          -- Generated by domconv-webkit-jsffi
+            GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays as GHCJS.DOM.ANGLEInstancedArrays
+          , GHCJS.DOM.JSFFI.Generated.AbstractWorker as GHCJS.DOM.AbstractWorker
+          , GHCJS.DOM.JSFFI.Generated.AnalyserNode as GHCJS.DOM.AnalyserNode
+          , GHCJS.DOM.JSFFI.Generated.Animatable as GHCJS.DOM.Animatable
+          , GHCJS.DOM.JSFFI.Generated.Animation as GHCJS.DOM.Animation
+          , GHCJS.DOM.JSFFI.Generated.AnimationEvent as GHCJS.DOM.AnimationEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplePayError as GHCJS.DOM.ApplePayError
+          , GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent as GHCJS.DOM.ApplePayPaymentAuthorizedEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent as GHCJS.DOM.ApplePayPaymentMethodSelectedEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplePaySession as GHCJS.DOM.ApplePaySession
+          , GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent as GHCJS.DOM.ApplePayShippingContactSelectedEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent as GHCJS.DOM.ApplePayShippingMethodSelectedEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent as GHCJS.DOM.ApplePayValidateMerchantEvent
+          , GHCJS.DOM.JSFFI.Generated.ApplicationCache as GHCJS.DOM.ApplicationCache
+          , GHCJS.DOM.JSFFI.Generated.Attr as GHCJS.DOM.Attr
+          , GHCJS.DOM.JSFFI.Generated.AudioBuffer as GHCJS.DOM.AudioBuffer
+          , GHCJS.DOM.JSFFI.Generated.AudioBufferCallback as GHCJS.DOM.AudioBufferCallback
+          , GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode as GHCJS.DOM.AudioBufferSourceNode
+          , GHCJS.DOM.JSFFI.AudioContext as GHCJS.DOM.AudioContext
+          , GHCJS.DOM.JSFFI.Generated.AudioDestinationNode as GHCJS.DOM.AudioDestinationNode
+          , GHCJS.DOM.JSFFI.Generated.AudioListener as GHCJS.DOM.AudioListener
+          , GHCJS.DOM.JSFFI.Generated.AudioNode as GHCJS.DOM.AudioNode
+          , GHCJS.DOM.JSFFI.Generated.AudioParam as GHCJS.DOM.AudioParam
+          , GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent as GHCJS.DOM.AudioProcessingEvent
+          , GHCJS.DOM.JSFFI.Generated.AudioTrack as GHCJS.DOM.AudioTrack
+          , GHCJS.DOM.JSFFI.Generated.AudioTrackList as GHCJS.DOM.AudioTrackList
+          , GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent as GHCJS.DOM.AutocompleteErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.BarProp as GHCJS.DOM.BarProp
+          , GHCJS.DOM.JSFFI.Generated.BasicCredential as GHCJS.DOM.BasicCredential
+          , GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent as GHCJS.DOM.BeforeLoadEvent
+          , GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent as GHCJS.DOM.BeforeUnloadEvent
+          , GHCJS.DOM.JSFFI.Generated.BiquadFilterNode as GHCJS.DOM.BiquadFilterNode
+          , GHCJS.DOM.JSFFI.Generated.Blob as GHCJS.DOM.Blob
+          , GHCJS.DOM.JSFFI.Generated.BlobCallback as GHCJS.DOM.BlobCallback
+          , GHCJS.DOM.JSFFI.Generated.Body as GHCJS.DOM.Body
+          , GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy as GHCJS.DOM.ByteLengthQueuingStrategy
+          , GHCJS.DOM.JSFFI.Generated.CSS as GHCJS.DOM.CSS
+          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent as GHCJS.DOM.CSSFontFaceLoadEvent
+          , GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule as GHCJS.DOM.CSSFontFaceRule
+          , GHCJS.DOM.JSFFI.Generated.CSSImportRule as GHCJS.DOM.CSSImportRule
+          , GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule as GHCJS.DOM.CSSKeyframeRule
+          , GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule as GHCJS.DOM.CSSKeyframesRule
+          , GHCJS.DOM.JSFFI.Generated.CSSMediaRule as GHCJS.DOM.CSSMediaRule
+          , GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule as GHCJS.DOM.CSSNamespaceRule
+          , GHCJS.DOM.JSFFI.Generated.CSSPageRule as GHCJS.DOM.CSSPageRule
+          , GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue as GHCJS.DOM.CSSPrimitiveValue
+          , GHCJS.DOM.JSFFI.Generated.CSSRule as GHCJS.DOM.CSSRule
+          , GHCJS.DOM.JSFFI.Generated.CSSRuleList as GHCJS.DOM.CSSRuleList
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration as GHCJS.DOM.CSSStyleDeclaration
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleRule as GHCJS.DOM.CSSStyleRule
+          , GHCJS.DOM.JSFFI.Generated.CSSStyleSheet as GHCJS.DOM.CSSStyleSheet
+          , GHCJS.DOM.JSFFI.Generated.CSSSupportsRule as GHCJS.DOM.CSSSupportsRule
+          , GHCJS.DOM.JSFFI.Generated.CSSValue as GHCJS.DOM.CSSValue
+          , GHCJS.DOM.JSFFI.Generated.CSSValueList as GHCJS.DOM.CSSValueList
+          , GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack as GHCJS.DOM.CanvasCaptureMediaStreamTrack
+          , GHCJS.DOM.JSFFI.Generated.CanvasGradient as GHCJS.DOM.CanvasGradient
+          , GHCJS.DOM.JSFFI.Generated.CanvasPath as GHCJS.DOM.CanvasPath
+          , GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D as GHCJS.DOM.CanvasRenderingContext2D
+          , GHCJS.DOM.JSFFI.Generated.CharacterData as GHCJS.DOM.CharacterData
+          , GHCJS.DOM.JSFFI.Generated.ChildNode as GHCJS.DOM.ChildNode
+          , GHCJS.DOM.JSFFI.Generated.ClipboardEvent as GHCJS.DOM.ClipboardEvent
+          , GHCJS.DOM.JSFFI.Generated.CloseEvent as GHCJS.DOM.CloseEvent
+          , GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost as GHCJS.DOM.CommandLineAPIHost
+          , GHCJS.DOM.JSFFI.Generated.Comment as GHCJS.DOM.Comment
+          , GHCJS.DOM.JSFFI.Generated.CompositionEvent as GHCJS.DOM.CompositionEvent
+          , GHCJS.DOM.JSFFI.Generated.ConvolverNode as GHCJS.DOM.ConvolverNode
+          , GHCJS.DOM.JSFFI.Generated.Coordinates as GHCJS.DOM.Coordinates
+          , GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy as GHCJS.DOM.CountQueuingStrategy
+          , GHCJS.DOM.JSFFI.Generated.Counter as GHCJS.DOM.Counter
+          , GHCJS.DOM.JSFFI.Generated.Crypto as GHCJS.DOM.Crypto
+          , GHCJS.DOM.JSFFI.Generated.CryptoKey as GHCJS.DOM.CryptoKey
+          , GHCJS.DOM.JSFFI.Generated.CustomElementRegistry as GHCJS.DOM.CustomElementRegistry
+          , GHCJS.DOM.JSFFI.Generated.CustomEvent as GHCJS.DOM.CustomEvent
+          , GHCJS.DOM.JSFFI.DOMError as GHCJS.DOM.DOMError
+          , GHCJS.DOM.JSFFI.Generated.DOMException as GHCJS.DOM.DOMException
+          , GHCJS.DOM.JSFFI.Generated.DOMImplementation as GHCJS.DOM.DOMImplementation
+          , GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection as GHCJS.DOM.DOMNamedFlowCollection
+          , GHCJS.DOM.JSFFI.Generated.DOMParser as GHCJS.DOM.DOMParser
+          , GHCJS.DOM.JSFFI.Generated.DOMPoint as GHCJS.DOM.DOMPoint
+          , GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly as GHCJS.DOM.DOMPointReadOnly
+          , GHCJS.DOM.JSFFI.Generated.DOMRect as GHCJS.DOM.DOMRect
+          , GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly as GHCJS.DOM.DOMRectReadOnly
+          , GHCJS.DOM.JSFFI.Generated.DOMStringList as GHCJS.DOM.DOMStringList
+          , GHCJS.DOM.JSFFI.Generated.DOMStringMap as GHCJS.DOM.DOMStringMap
+          , GHCJS.DOM.JSFFI.Generated.DOMTokenList as GHCJS.DOM.DOMTokenList
+          , GHCJS.DOM.JSFFI.Generated.DataCue as GHCJS.DOM.DataCue
+          , GHCJS.DOM.JSFFI.Generated.DataTransfer as GHCJS.DOM.DataTransfer
+          , GHCJS.DOM.JSFFI.Generated.DataTransferItem as GHCJS.DOM.DataTransferItem
+          , GHCJS.DOM.JSFFI.Generated.DataTransferItemList as GHCJS.DOM.DataTransferItemList
+          , GHCJS.DOM.JSFFI.Database as GHCJS.DOM.Database
+          , GHCJS.DOM.JSFFI.Generated.DatabaseCallback as GHCJS.DOM.DatabaseCallback
+          , GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope as GHCJS.DOM.DedicatedWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.DelayNode as GHCJS.DOM.DelayNode
+          , GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent as GHCJS.DOM.DeviceMotionEvent
+          , GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent as GHCJS.DOM.DeviceOrientationEvent
+          , GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent as GHCJS.DOM.DeviceProximityEvent
+          , GHCJS.DOM.JSFFI.Generated.Document as GHCJS.DOM.Document
+          , GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers as GHCJS.DOM.DocumentAndElementEventHandlers
+          , GHCJS.DOM.JSFFI.Generated.DocumentFragment as GHCJS.DOM.DocumentFragment
+          , GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot as GHCJS.DOM.DocumentOrShadowRoot
+          , GHCJS.DOM.JSFFI.Generated.DocumentTimeline as GHCJS.DOM.DocumentTimeline
+          , GHCJS.DOM.JSFFI.Generated.DocumentType as GHCJS.DOM.DocumentType
+          , GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode as GHCJS.DOM.DynamicsCompressorNode
+          , GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax as GHCJS.DOM.EXTBlendMinMax
+          , GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic as GHCJS.DOM.EXTTextureFilterAnisotropic
+          , GHCJS.DOM.JSFFI.Generated.EXTsRGB as GHCJS.DOM.EXTsRGB
+          , GHCJS.DOM.JSFFI.Generated.Element as GHCJS.DOM.Element
+          , GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle as GHCJS.DOM.ElementCSSInlineStyle
+          , GHCJS.DOM.JSFFI.Generated.Enums as GHCJS.DOM.Enums
+          , GHCJS.DOM.JSFFI.Generated.ErrorEvent as GHCJS.DOM.ErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.Event as GHCJS.DOM.Event
+          , GHCJS.DOM.JSFFI.Generated.EventListener as GHCJS.DOM.EventListener
+          , GHCJS.DOM.JSFFI.Generated.EventSource as GHCJS.DOM.EventSource
+          , GHCJS.DOM.JSFFI.Generated.EventTarget as GHCJS.DOM.EventTarget
+          , GHCJS.DOM.JSFFI.Generated.File as GHCJS.DOM.File
+          , GHCJS.DOM.JSFFI.Generated.FileError as GHCJS.DOM.FileError
+          , GHCJS.DOM.JSFFI.Generated.FileException as GHCJS.DOM.FileException
+          , GHCJS.DOM.JSFFI.Generated.FileList as GHCJS.DOM.FileList
+          , GHCJS.DOM.JSFFI.Generated.FileReader as GHCJS.DOM.FileReader
+          , GHCJS.DOM.JSFFI.Generated.FileReaderSync as GHCJS.DOM.FileReaderSync
+          , GHCJS.DOM.JSFFI.Generated.FocusEvent as GHCJS.DOM.FocusEvent
+          , GHCJS.DOM.JSFFI.Generated.FontFace as GHCJS.DOM.FontFace
+          , GHCJS.DOM.JSFFI.Generated.FontFaceSet as GHCJS.DOM.FontFaceSet
+          , GHCJS.DOM.JSFFI.Generated.FormData as GHCJS.DOM.FormData
+          , GHCJS.DOM.JSFFI.Generated.GainNode as GHCJS.DOM.GainNode
+          , GHCJS.DOM.JSFFI.Generated.Gamepad as GHCJS.DOM.Gamepad
+          , GHCJS.DOM.JSFFI.Generated.GamepadButton as GHCJS.DOM.GamepadButton
+          , GHCJS.DOM.JSFFI.Generated.GamepadEvent as GHCJS.DOM.GamepadEvent
+          , GHCJS.DOM.JSFFI.Geolocation as GHCJS.DOM.Geolocation
+          , GHCJS.DOM.JSFFI.Generated.Geoposition as GHCJS.DOM.Geoposition
+          , GHCJS.DOM.JSFFI.Generated.GlobalCrypto as GHCJS.DOM.GlobalCrypto
+          , GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers as GHCJS.DOM.GlobalEventHandlers
+          , GHCJS.DOM.JSFFI.Generated.GlobalPerformance as GHCJS.DOM.GlobalPerformance
+          , GHCJS.DOM.JSFFI.Generated.HTMLAllCollection as GHCJS.DOM.HTMLAllCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement as GHCJS.DOM.HTMLAnchorElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLAppletElement as GHCJS.DOM.HTMLAppletElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLAreaElement as GHCJS.DOM.HTMLAreaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement as GHCJS.DOM.HTMLAttachmentElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBRElement as GHCJS.DOM.HTMLBRElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBaseElement as GHCJS.DOM.HTMLBaseElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLBodyElement as GHCJS.DOM.HTMLBodyElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLButtonElement as GHCJS.DOM.HTMLButtonElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement as GHCJS.DOM.HTMLCanvasElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLCollection as GHCJS.DOM.HTMLCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLDListElement as GHCJS.DOM.HTMLDListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDataElement as GHCJS.DOM.HTMLDataElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDataListElement as GHCJS.DOM.HTMLDataListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement as GHCJS.DOM.HTMLDetailsElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement as GHCJS.DOM.HTMLDirectoryElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDivElement as GHCJS.DOM.HTMLDivElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLDocument as GHCJS.DOM.HTMLDocument
+          , GHCJS.DOM.JSFFI.Generated.HTMLElement as GHCJS.DOM.HTMLElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement as GHCJS.DOM.HTMLEmbedElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement as GHCJS.DOM.HTMLFieldSetElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFontElement as GHCJS.DOM.HTMLFontElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection as GHCJS.DOM.HTMLFormControlsCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLFormElement as GHCJS.DOM.HTMLFormElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFrameElement as GHCJS.DOM.HTMLFrameElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement as GHCJS.DOM.HTMLFrameSetElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHRElement as GHCJS.DOM.HTMLHRElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHeadElement as GHCJS.DOM.HTMLHeadElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement as GHCJS.DOM.HTMLHeadingElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement as GHCJS.DOM.HTMLHtmlElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils as GHCJS.DOM.HTMLHyperlinkElementUtils
+          , GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement as GHCJS.DOM.HTMLIFrameElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLImageElement as GHCJS.DOM.HTMLImageElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLInputElement as GHCJS.DOM.HTMLInputElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement as GHCJS.DOM.HTMLKeygenElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLIElement as GHCJS.DOM.HTMLLIElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLabelElement as GHCJS.DOM.HTMLLabelElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLegendElement as GHCJS.DOM.HTMLLegendElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLLinkElement as GHCJS.DOM.HTMLLinkElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMapElement as GHCJS.DOM.HTMLMapElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement as GHCJS.DOM.HTMLMarqueeElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMediaElement as GHCJS.DOM.HTMLMediaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMenuElement as GHCJS.DOM.HTMLMenuElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMetaElement as GHCJS.DOM.HTMLMetaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLMeterElement as GHCJS.DOM.HTMLMeterElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLModElement as GHCJS.DOM.HTMLModElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOListElement as GHCJS.DOM.HTMLOListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLObjectElement as GHCJS.DOM.HTMLObjectElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement as GHCJS.DOM.HTMLOptGroupElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptionElement as GHCJS.DOM.HTMLOptionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection as GHCJS.DOM.HTMLOptionsCollection
+          , GHCJS.DOM.JSFFI.Generated.HTMLOutputElement as GHCJS.DOM.HTMLOutputElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement as GHCJS.DOM.HTMLParagraphElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLParamElement as GHCJS.DOM.HTMLParamElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLPreElement as GHCJS.DOM.HTMLPreElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLProgressElement as GHCJS.DOM.HTMLProgressElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement as GHCJS.DOM.HTMLQuoteElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLScriptElement as GHCJS.DOM.HTMLScriptElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSelectElement as GHCJS.DOM.HTMLSelectElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSlotElement as GHCJS.DOM.HTMLSlotElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLSourceElement as GHCJS.DOM.HTMLSourceElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLStyleElement as GHCJS.DOM.HTMLStyleElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement as GHCJS.DOM.HTMLTableCaptionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement as GHCJS.DOM.HTMLTableCellElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableColElement as GHCJS.DOM.HTMLTableColElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableElement as GHCJS.DOM.HTMLTableElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement as GHCJS.DOM.HTMLTableRowElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement as GHCJS.DOM.HTMLTableSectionElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement as GHCJS.DOM.HTMLTemplateElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement as GHCJS.DOM.HTMLTextAreaElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTimeElement as GHCJS.DOM.HTMLTimeElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTitleElement as GHCJS.DOM.HTMLTitleElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLTrackElement as GHCJS.DOM.HTMLTrackElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLUListElement as GHCJS.DOM.HTMLUListElement
+          , GHCJS.DOM.JSFFI.Generated.HTMLVideoElement as GHCJS.DOM.HTMLVideoElement
+          , GHCJS.DOM.JSFFI.Generated.HashChangeEvent as GHCJS.DOM.HashChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.Headers as GHCJS.DOM.Headers
+          , GHCJS.DOM.JSFFI.Generated.History as GHCJS.DOM.History
+          , GHCJS.DOM.JSFFI.Generated.IDBCursor as GHCJS.DOM.IDBCursor
+          , GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue as GHCJS.DOM.IDBCursorWithValue
+          , GHCJS.DOM.JSFFI.Generated.IDBDatabase as GHCJS.DOM.IDBDatabase
+          , GHCJS.DOM.JSFFI.Generated.IDBFactory as GHCJS.DOM.IDBFactory
+          , GHCJS.DOM.JSFFI.Generated.IDBIndex as GHCJS.DOM.IDBIndex
+          , GHCJS.DOM.JSFFI.Generated.IDBKeyRange as GHCJS.DOM.IDBKeyRange
+          , GHCJS.DOM.JSFFI.Generated.IDBObjectStore as GHCJS.DOM.IDBObjectStore
+          , GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest as GHCJS.DOM.IDBOpenDBRequest
+          , GHCJS.DOM.JSFFI.Generated.IDBRequest as GHCJS.DOM.IDBRequest
+          , GHCJS.DOM.JSFFI.Generated.IDBTransaction as GHCJS.DOM.IDBTransaction
+          , GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent as GHCJS.DOM.IDBVersionChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.ImageData as GHCJS.DOM.ImageData
+          , GHCJS.DOM.JSFFI.Generated.InputEvent as GHCJS.DOM.InputEvent
+          , GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost as GHCJS.DOM.InspectorFrontendHost
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserver as GHCJS.DOM.IntersectionObserver
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback as GHCJS.DOM.IntersectionObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry as GHCJS.DOM.IntersectionObserverEntry
+          , GHCJS.DOM.JSFFI.Generated.KeyboardEvent as GHCJS.DOM.KeyboardEvent
+          , GHCJS.DOM.JSFFI.Generated.KeyframeEffect as GHCJS.DOM.KeyframeEffect
+          , GHCJS.DOM.JSFFI.Generated.Location as GHCJS.DOM.Location
+          , GHCJS.DOM.JSFFI.Generated.MediaController as GHCJS.DOM.MediaController
+          , GHCJS.DOM.JSFFI.Generated.MediaControlsHost as GHCJS.DOM.MediaControlsHost
+          , GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo as GHCJS.DOM.MediaDeviceInfo
+          , GHCJS.DOM.JSFFI.Generated.MediaDevices as GHCJS.DOM.MediaDevices
+          , GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode as GHCJS.DOM.MediaElementAudioSourceNode
+          , GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent as GHCJS.DOM.MediaEncryptedEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaError as GHCJS.DOM.MediaError
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent as GHCJS.DOM.MediaKeyMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySession as GHCJS.DOM.MediaKeySession
+          , GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap as GHCJS.DOM.MediaKeyStatusMap
+          , GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess as GHCJS.DOM.MediaKeySystemAccess
+          , GHCJS.DOM.JSFFI.Generated.MediaKeys as GHCJS.DOM.MediaKeys
+          , GHCJS.DOM.JSFFI.Generated.MediaList as GHCJS.DOM.MediaList
+          , GHCJS.DOM.JSFFI.Generated.MediaQueryList as GHCJS.DOM.MediaQueryList
+          , GHCJS.DOM.JSFFI.Generated.MediaQueryListListener as GHCJS.DOM.MediaQueryListListener
+          , GHCJS.DOM.JSFFI.Generated.MediaRemoteControls as GHCJS.DOM.MediaRemoteControls
+          , GHCJS.DOM.JSFFI.Generated.MediaSession as GHCJS.DOM.MediaSession
+          , GHCJS.DOM.JSFFI.Generated.MediaSource as GHCJS.DOM.MediaSource
+          , GHCJS.DOM.JSFFI.Generated.MediaStream as GHCJS.DOM.MediaStream
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode as GHCJS.DOM.MediaStreamAudioDestinationNode
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode as GHCJS.DOM.MediaStreamAudioSourceNode
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamEvent as GHCJS.DOM.MediaStreamEvent
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrack as GHCJS.DOM.MediaStreamTrack
+          , GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent as GHCJS.DOM.MediaStreamTrackEvent
+          , GHCJS.DOM.JSFFI.Generated.MessageChannel as GHCJS.DOM.MessageChannel
+          , GHCJS.DOM.JSFFI.Generated.MessageEvent as GHCJS.DOM.MessageEvent
+          , GHCJS.DOM.JSFFI.Generated.MessagePort as GHCJS.DOM.MessagePort
+          , GHCJS.DOM.JSFFI.Generated.MimeType as GHCJS.DOM.MimeType
+          , GHCJS.DOM.JSFFI.Generated.MimeTypeArray as GHCJS.DOM.MimeTypeArray
+          , GHCJS.DOM.JSFFI.Generated.MouseEvent as GHCJS.DOM.MouseEvent
+          , GHCJS.DOM.JSFFI.Generated.MutationEvent as GHCJS.DOM.MutationEvent
+          , GHCJS.DOM.JSFFI.Generated.MutationObserver as GHCJS.DOM.MutationObserver
+          , GHCJS.DOM.JSFFI.Generated.MutationRecord as GHCJS.DOM.MutationRecord
+          , GHCJS.DOM.JSFFI.Generated.NamedNodeMap as GHCJS.DOM.NamedNodeMap
+          , GHCJS.DOM.JSFFI.Navigator as GHCJS.DOM.Navigator
+          , GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware as GHCJS.DOM.NavigatorConcurrentHardware
+          , GHCJS.DOM.JSFFI.Generated.NavigatorID as GHCJS.DOM.NavigatorID
+          , GHCJS.DOM.JSFFI.Generated.NavigatorLanguage as GHCJS.DOM.NavigatorLanguage
+          , GHCJS.DOM.JSFFI.Generated.NavigatorOnLine as GHCJS.DOM.NavigatorOnLine
+          , GHCJS.DOM.JSFFI.NavigatorUserMediaError as GHCJS.DOM.NavigatorUserMediaError
+          , GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback as GHCJS.DOM.NavigatorUserMediaErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback as GHCJS.DOM.NavigatorUserMediaSuccessCallback
+          , GHCJS.DOM.JSFFI.Generated.Node as GHCJS.DOM.Node
+          , GHCJS.DOM.JSFFI.Generated.NodeFilter as GHCJS.DOM.NodeFilter
+          , GHCJS.DOM.JSFFI.Generated.NodeIterator as GHCJS.DOM.NodeIterator
+          , GHCJS.DOM.JSFFI.Generated.NodeList as GHCJS.DOM.NodeList
+          , GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode as GHCJS.DOM.NonDocumentTypeChildNode
+          , GHCJS.DOM.JSFFI.Generated.NonElementParentNode as GHCJS.DOM.NonElementParentNode
+          , GHCJS.DOM.JSFFI.Generated.Notification as GHCJS.DOM.Notification
+          , GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback as GHCJS.DOM.NotificationPermissionCallback
+          , GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives as GHCJS.DOM.OESStandardDerivatives
+          , GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat as GHCJS.DOM.OESTextureHalfFloat
+          , GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject as GHCJS.DOM.OESVertexArrayObject
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent as GHCJS.DOM.OfflineAudioCompletionEvent
+          , GHCJS.DOM.JSFFI.Generated.OfflineAudioContext as GHCJS.DOM.OfflineAudioContext
+          , GHCJS.DOM.JSFFI.Generated.OscillatorNode as GHCJS.DOM.OscillatorNode
+          , GHCJS.DOM.JSFFI.Generated.OverconstrainedError as GHCJS.DOM.OverconstrainedError
+          , GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent as GHCJS.DOM.OverconstrainedErrorEvent
+          , GHCJS.DOM.JSFFI.Generated.OverflowEvent as GHCJS.DOM.OverflowEvent
+          , GHCJS.DOM.JSFFI.Generated.PageTransitionEvent as GHCJS.DOM.PageTransitionEvent
+          , GHCJS.DOM.JSFFI.Generated.PannerNode as GHCJS.DOM.PannerNode
+          , GHCJS.DOM.JSFFI.Generated.ParentNode as GHCJS.DOM.ParentNode
+          , GHCJS.DOM.JSFFI.Generated.PasswordCredential as GHCJS.DOM.PasswordCredential
+          , GHCJS.DOM.JSFFI.Generated.Path2D as GHCJS.DOM.Path2D
+          , GHCJS.DOM.JSFFI.Generated.Performance as GHCJS.DOM.Performance
+          , GHCJS.DOM.JSFFI.Generated.PerformanceEntry as GHCJS.DOM.PerformanceEntry
+          , GHCJS.DOM.JSFFI.Generated.PerformanceNavigation as GHCJS.DOM.PerformanceNavigation
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserver as GHCJS.DOM.PerformanceObserver
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback as GHCJS.DOM.PerformanceObserverCallback
+          , GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList as GHCJS.DOM.PerformanceObserverEntryList
+          , GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming as GHCJS.DOM.PerformanceResourceTiming
+          , GHCJS.DOM.JSFFI.Generated.PerformanceTiming as GHCJS.DOM.PerformanceTiming
+          , GHCJS.DOM.JSFFI.Generated.Plugin as GHCJS.DOM.Plugin
+          , GHCJS.DOM.JSFFI.Generated.PluginArray as GHCJS.DOM.PluginArray
+          , GHCJS.DOM.JSFFI.Generated.PopStateEvent as GHCJS.DOM.PopStateEvent
+          , GHCJS.DOM.JSFFI.Generated.PositionCallback as GHCJS.DOM.PositionCallback
+          , GHCJS.DOM.JSFFI.PositionError as GHCJS.DOM.PositionError
+          , GHCJS.DOM.JSFFI.Generated.PositionErrorCallback as GHCJS.DOM.PositionErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.ProcessingInstruction as GHCJS.DOM.ProcessingInstruction
+          , GHCJS.DOM.JSFFI.Generated.ProgressEvent as GHCJS.DOM.ProgressEvent
+          , GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent as GHCJS.DOM.PromiseRejectionEvent
+          , GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement as GHCJS.DOM.QuickTimePluginReplacement
+          , GHCJS.DOM.JSFFI.Generated.RGBColor as GHCJS.DOM.RGBColor
+          , GHCJS.DOM.JSFFI.Generated.RTCDTMFSender as GHCJS.DOM.RTCDTMFSender
+          , GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent as GHCJS.DOM.RTCDTMFToneChangeEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannel as GHCJS.DOM.RTCDataChannel
+          , GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent as GHCJS.DOM.RTCDataChannelEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidate as GHCJS.DOM.RTCIceCandidate
+          , GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent as GHCJS.DOM.RTCIceCandidateEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCIceTransport as GHCJS.DOM.RTCIceTransport
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnection as GHCJS.DOM.RTCPeerConnection
+          , GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent as GHCJS.DOM.RTCPeerConnectionIceEvent
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver as GHCJS.DOM.RTCRtpReceiver
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpSender as GHCJS.DOM.RTCRtpSender
+          , GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver as GHCJS.DOM.RTCRtpTransceiver
+          , GHCJS.DOM.JSFFI.Generated.RTCSessionDescription as GHCJS.DOM.RTCSessionDescription
+          , GHCJS.DOM.JSFFI.Generated.RTCTrackEvent as GHCJS.DOM.RTCTrackEvent
+          , GHCJS.DOM.JSFFI.Generated.RadioNodeList as GHCJS.DOM.RadioNodeList
+          , GHCJS.DOM.JSFFI.Generated.Range as GHCJS.DOM.Range
+          , GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController as GHCJS.DOM.ReadableByteStreamController
+          , GHCJS.DOM.JSFFI.Generated.ReadableStream as GHCJS.DOM.ReadableStream
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader as GHCJS.DOM.ReadableStreamBYOBReader
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest as GHCJS.DOM.ReadableStreamBYOBRequest
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController as GHCJS.DOM.ReadableStreamDefaultController
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader as GHCJS.DOM.ReadableStreamDefaultReader
+          , GHCJS.DOM.JSFFI.Generated.ReadableStreamSource as GHCJS.DOM.ReadableStreamSource
+          , GHCJS.DOM.JSFFI.Generated.Rect as GHCJS.DOM.Rect
+          , GHCJS.DOM.JSFFI.Generated.Request as GHCJS.DOM.Request
+          , GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback as GHCJS.DOM.RequestAnimationFrameCallback
+          , GHCJS.DOM.JSFFI.Generated.Response as GHCJS.DOM.Response
+          , GHCJS.DOM.JSFFI.SQLError as GHCJS.DOM.SQLError
+          , GHCJS.DOM.JSFFI.Generated.SQLException as GHCJS.DOM.SQLException
+          , GHCJS.DOM.JSFFI.Generated.SQLResultSet as GHCJS.DOM.SQLResultSet
+          , GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList as GHCJS.DOM.SQLResultSetRowList
+          , GHCJS.DOM.JSFFI.Generated.SQLStatementCallback as GHCJS.DOM.SQLStatementCallback
+          , GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback as GHCJS.DOM.SQLStatementErrorCallback
+          , GHCJS.DOM.JSFFI.SQLTransaction as GHCJS.DOM.SQLTransaction
+          , GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback as GHCJS.DOM.SQLTransactionCallback
+          , GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback as GHCJS.DOM.SQLTransactionErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.SVGAElement as GHCJS.DOM.SVGAElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement as GHCJS.DOM.SVGAltGlyphElement
+          , GHCJS.DOM.JSFFI.Generated.SVGAngle as GHCJS.DOM.SVGAngle
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle as GHCJS.DOM.SVGAnimatedAngle
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean as GHCJS.DOM.SVGAnimatedBoolean
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration as GHCJS.DOM.SVGAnimatedEnumeration
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger as GHCJS.DOM.SVGAnimatedInteger
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength as GHCJS.DOM.SVGAnimatedLength
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList as GHCJS.DOM.SVGAnimatedLengthList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber as GHCJS.DOM.SVGAnimatedNumber
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList as GHCJS.DOM.SVGAnimatedNumberList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio as GHCJS.DOM.SVGAnimatedPreserveAspectRatio
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect as GHCJS.DOM.SVGAnimatedRect
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedString as GHCJS.DOM.SVGAnimatedString
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList as GHCJS.DOM.SVGAnimatedTransformList
+          , GHCJS.DOM.JSFFI.Generated.SVGAnimationElement as GHCJS.DOM.SVGAnimationElement
+          , GHCJS.DOM.JSFFI.Generated.SVGCircleElement as GHCJS.DOM.SVGCircleElement
+          , GHCJS.DOM.JSFFI.Generated.SVGClipPathElement as GHCJS.DOM.SVGClipPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement as GHCJS.DOM.SVGComponentTransferFunctionElement
+          , GHCJS.DOM.JSFFI.Generated.SVGCursorElement as GHCJS.DOM.SVGCursorElement
+          , GHCJS.DOM.JSFFI.Generated.SVGElement as GHCJS.DOM.SVGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGEllipseElement as GHCJS.DOM.SVGEllipseElement
+          , GHCJS.DOM.JSFFI.Generated.SVGException as GHCJS.DOM.SVGException
+          , GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired as GHCJS.DOM.SVGExternalResourcesRequired
+          , GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement as GHCJS.DOM.SVGFEBlendElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement as GHCJS.DOM.SVGFEColorMatrixElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement as GHCJS.DOM.SVGFEComponentTransferElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement as GHCJS.DOM.SVGFECompositeElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement as GHCJS.DOM.SVGFEConvolveMatrixElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement as GHCJS.DOM.SVGFEDiffuseLightingElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement as GHCJS.DOM.SVGFEDisplacementMapElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement as GHCJS.DOM.SVGFEDistantLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement as GHCJS.DOM.SVGFEDropShadowElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement as GHCJS.DOM.SVGFEGaussianBlurElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEImageElement as GHCJS.DOM.SVGFEImageElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement as GHCJS.DOM.SVGFEMergeNodeElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement as GHCJS.DOM.SVGFEMorphologyElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement as GHCJS.DOM.SVGFEOffsetElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement as GHCJS.DOM.SVGFEPointLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement as GHCJS.DOM.SVGFESpecularLightingElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement as GHCJS.DOM.SVGFESpotLightElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFETileElement as GHCJS.DOM.SVGFETileElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement as GHCJS.DOM.SVGFETurbulenceElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFilterElement as GHCJS.DOM.SVGFilterElement
+          , GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes as GHCJS.DOM.SVGFilterPrimitiveStandardAttributes
+          , GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox as GHCJS.DOM.SVGFitToViewBox
+          , GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement as GHCJS.DOM.SVGForeignObjectElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement as GHCJS.DOM.SVGGlyphRefElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGradientElement as GHCJS.DOM.SVGGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement as GHCJS.DOM.SVGGraphicsElement
+          , GHCJS.DOM.JSFFI.Generated.SVGImageElement as GHCJS.DOM.SVGImageElement
+          , GHCJS.DOM.JSFFI.Generated.SVGLength as GHCJS.DOM.SVGLength
+          , GHCJS.DOM.JSFFI.Generated.SVGLengthList as GHCJS.DOM.SVGLengthList
+          , GHCJS.DOM.JSFFI.Generated.SVGLineElement as GHCJS.DOM.SVGLineElement
+          , GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement as GHCJS.DOM.SVGLinearGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMarkerElement as GHCJS.DOM.SVGMarkerElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMaskElement as GHCJS.DOM.SVGMaskElement
+          , GHCJS.DOM.JSFFI.Generated.SVGMatrix as GHCJS.DOM.SVGMatrix
+          , GHCJS.DOM.JSFFI.Generated.SVGNumber as GHCJS.DOM.SVGNumber
+          , GHCJS.DOM.JSFFI.Generated.SVGNumberList as GHCJS.DOM.SVGNumberList
+          , GHCJS.DOM.JSFFI.Generated.SVGPathElement as GHCJS.DOM.SVGPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSeg as GHCJS.DOM.SVGPathSeg
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs as GHCJS.DOM.SVGPathSegArcAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel as GHCJS.DOM.SVGPathSegArcRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs as GHCJS.DOM.SVGPathSegCurvetoCubicAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel as GHCJS.DOM.SVGPathSegCurvetoCubicRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs as GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel as GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs as GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel as GHCJS.DOM.SVGPathSegCurvetoQuadraticRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs as GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel as GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs as GHCJS.DOM.SVGPathSegLinetoAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs as GHCJS.DOM.SVGPathSegLinetoHorizontalAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel as GHCJS.DOM.SVGPathSegLinetoHorizontalRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel as GHCJS.DOM.SVGPathSegLinetoRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs as GHCJS.DOM.SVGPathSegLinetoVerticalAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel as GHCJS.DOM.SVGPathSegLinetoVerticalRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegList as GHCJS.DOM.SVGPathSegList
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs as GHCJS.DOM.SVGPathSegMovetoAbs
+          , GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel as GHCJS.DOM.SVGPathSegMovetoRel
+          , GHCJS.DOM.JSFFI.Generated.SVGPatternElement as GHCJS.DOM.SVGPatternElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPoint as GHCJS.DOM.SVGPoint
+          , GHCJS.DOM.JSFFI.Generated.SVGPointList as GHCJS.DOM.SVGPointList
+          , GHCJS.DOM.JSFFI.Generated.SVGPolygonElement as GHCJS.DOM.SVGPolygonElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPolylineElement as GHCJS.DOM.SVGPolylineElement
+          , GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio as GHCJS.DOM.SVGPreserveAspectRatio
+          , GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement as GHCJS.DOM.SVGRadialGradientElement
+          , GHCJS.DOM.JSFFI.Generated.SVGRect as GHCJS.DOM.SVGRect
+          , GHCJS.DOM.JSFFI.Generated.SVGRectElement as GHCJS.DOM.SVGRectElement
+          , GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent as GHCJS.DOM.SVGRenderingIntent
+          , GHCJS.DOM.JSFFI.Generated.SVGSVGElement as GHCJS.DOM.SVGSVGElement
+          , GHCJS.DOM.JSFFI.Generated.SVGScriptElement as GHCJS.DOM.SVGScriptElement
+          , GHCJS.DOM.JSFFI.Generated.SVGStopElement as GHCJS.DOM.SVGStopElement
+          , GHCJS.DOM.JSFFI.Generated.SVGStringList as GHCJS.DOM.SVGStringList
+          , GHCJS.DOM.JSFFI.Generated.SVGStyleElement as GHCJS.DOM.SVGStyleElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTests as GHCJS.DOM.SVGTests
+          , GHCJS.DOM.JSFFI.Generated.SVGTextContentElement as GHCJS.DOM.SVGTextContentElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTextPathElement as GHCJS.DOM.SVGTextPathElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement as GHCJS.DOM.SVGTextPositioningElement
+          , GHCJS.DOM.JSFFI.Generated.SVGTransform as GHCJS.DOM.SVGTransform
+          , GHCJS.DOM.JSFFI.Generated.SVGTransformList as GHCJS.DOM.SVGTransformList
+          , GHCJS.DOM.JSFFI.Generated.SVGURIReference as GHCJS.DOM.SVGURIReference
+          , GHCJS.DOM.JSFFI.Generated.SVGUnitTypes as GHCJS.DOM.SVGUnitTypes
+          , GHCJS.DOM.JSFFI.Generated.SVGUseElement as GHCJS.DOM.SVGUseElement
+          , GHCJS.DOM.JSFFI.Generated.SVGViewElement as GHCJS.DOM.SVGViewElement
+          , GHCJS.DOM.JSFFI.Generated.SVGViewSpec as GHCJS.DOM.SVGViewSpec
+          , GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan as GHCJS.DOM.SVGZoomAndPan
+          , GHCJS.DOM.JSFFI.Generated.SVGZoomEvent as GHCJS.DOM.SVGZoomEvent
+          , GHCJS.DOM.JSFFI.Generated.Screen as GHCJS.DOM.Screen
+          , GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode as GHCJS.DOM.ScriptProcessorNode
+          , GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent as GHCJS.DOM.SecurityPolicyViolationEvent
+          , GHCJS.DOM.JSFFI.Generated.Selection as GHCJS.DOM.Selection
+          , GHCJS.DOM.JSFFI.Generated.ShadowRoot as GHCJS.DOM.ShadowRoot
+          , GHCJS.DOM.JSFFI.Generated.SiteBoundCredential as GHCJS.DOM.SiteBoundCredential
+          , GHCJS.DOM.JSFFI.Generated.Slotable as GHCJS.DOM.Slotable
+          , GHCJS.DOM.JSFFI.Generated.SourceBuffer as GHCJS.DOM.SourceBuffer
+          , GHCJS.DOM.JSFFI.Generated.SourceBufferList as GHCJS.DOM.SourceBufferList
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesis as GHCJS.DOM.SpeechSynthesis
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent as GHCJS.DOM.SpeechSynthesisEvent
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance as GHCJS.DOM.SpeechSynthesisUtterance
+          , GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice as GHCJS.DOM.SpeechSynthesisVoice
+          , GHCJS.DOM.JSFFI.Generated.StaticRange as GHCJS.DOM.StaticRange
+          , GHCJS.DOM.JSFFI.Generated.Storage as GHCJS.DOM.Storage
+          , GHCJS.DOM.JSFFI.Generated.StorageErrorCallback as GHCJS.DOM.StorageErrorCallback
+          , GHCJS.DOM.JSFFI.Generated.StorageEvent as GHCJS.DOM.StorageEvent
+          , GHCJS.DOM.JSFFI.Generated.StorageInfo as GHCJS.DOM.StorageInfo
+          , GHCJS.DOM.JSFFI.Generated.StorageQuota as GHCJS.DOM.StorageQuota
+          , GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback as GHCJS.DOM.StorageQuotaCallback
+          , GHCJS.DOM.JSFFI.Generated.StorageUsageCallback as GHCJS.DOM.StorageUsageCallback
+          , GHCJS.DOM.JSFFI.Generated.StringCallback as GHCJS.DOM.StringCallback
+          , GHCJS.DOM.JSFFI.Generated.StyleMedia as GHCJS.DOM.StyleMedia
+          , GHCJS.DOM.JSFFI.Generated.StyleSheet as GHCJS.DOM.StyleSheet
+          , GHCJS.DOM.JSFFI.Generated.StyleSheetList as GHCJS.DOM.StyleSheetList
+          , GHCJS.DOM.JSFFI.Generated.SubtleCrypto as GHCJS.DOM.SubtleCrypto
+          , GHCJS.DOM.JSFFI.Generated.Text as GHCJS.DOM.Text
+          , GHCJS.DOM.JSFFI.Generated.TextDecoder as GHCJS.DOM.TextDecoder
+          , GHCJS.DOM.JSFFI.Generated.TextEncoder as GHCJS.DOM.TextEncoder
+          , GHCJS.DOM.JSFFI.Generated.TextEvent as GHCJS.DOM.TextEvent
+          , GHCJS.DOM.JSFFI.Generated.TextMetrics as GHCJS.DOM.TextMetrics
+          , GHCJS.DOM.JSFFI.Generated.TextTrack as GHCJS.DOM.TextTrack
+          , GHCJS.DOM.JSFFI.Generated.TextTrackCue as GHCJS.DOM.TextTrackCue
+          , GHCJS.DOM.JSFFI.Generated.TextTrackCueList as GHCJS.DOM.TextTrackCueList
+          , GHCJS.DOM.JSFFI.Generated.TextTrackList as GHCJS.DOM.TextTrackList
+          , GHCJS.DOM.JSFFI.Generated.TimeRanges as GHCJS.DOM.TimeRanges
+          , GHCJS.DOM.JSFFI.Generated.Touch as GHCJS.DOM.Touch
+          , GHCJS.DOM.JSFFI.Generated.TouchEvent as GHCJS.DOM.TouchEvent
+          , GHCJS.DOM.JSFFI.Generated.TouchList as GHCJS.DOM.TouchList
+          , GHCJS.DOM.JSFFI.Generated.TrackEvent as GHCJS.DOM.TrackEvent
+          , GHCJS.DOM.JSFFI.Generated.TransitionEvent as GHCJS.DOM.TransitionEvent
+          , GHCJS.DOM.JSFFI.Generated.TreeWalker as GHCJS.DOM.TreeWalker
+          , GHCJS.DOM.JSFFI.Generated.UIEvent as GHCJS.DOM.UIEvent
+          , GHCJS.DOM.JSFFI.Generated.URL as GHCJS.DOM.URL
+          , GHCJS.DOM.JSFFI.Generated.URLSearchParams as GHCJS.DOM.URLSearchParams
+          , GHCJS.DOM.JSFFI.Generated.UserMessageHandler as GHCJS.DOM.UserMessageHandler
+          , GHCJS.DOM.JSFFI.Generated.VTTCue as GHCJS.DOM.VTTCue
+          , GHCJS.DOM.JSFFI.Generated.VTTRegion as GHCJS.DOM.VTTRegion
+          , GHCJS.DOM.JSFFI.Generated.VTTRegionList as GHCJS.DOM.VTTRegionList
+          , GHCJS.DOM.JSFFI.Generated.ValidityState as GHCJS.DOM.ValidityState
+          , GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality as GHCJS.DOM.VideoPlaybackQuality
+          , GHCJS.DOM.JSFFI.Generated.VideoTrack as GHCJS.DOM.VideoTrack
+          , GHCJS.DOM.JSFFI.Generated.VideoTrackList as GHCJS.DOM.VideoTrackList
+          , GHCJS.DOM.JSFFI.Generated.VoidCallback as GHCJS.DOM.VoidCallback
+          , GHCJS.DOM.JSFFI.Generated.WaveShaperNode as GHCJS.DOM.WaveShaperNode
+          , GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext as GHCJS.DOM.WebGL2RenderingContext
+          , GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo as GHCJS.DOM.WebGLActiveInfo
+          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC as GHCJS.DOM.WebGLCompressedTextureATC
+          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC as GHCJS.DOM.WebGLCompressedTexturePVRTC
+          , GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC as GHCJS.DOM.WebGLCompressedTextureS3TC
+          , GHCJS.DOM.JSFFI.Generated.WebGLContextEvent as GHCJS.DOM.WebGLContextEvent
+          , GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo as GHCJS.DOM.WebGLDebugRendererInfo
+          , GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders as GHCJS.DOM.WebGLDebugShaders
+          , GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture as GHCJS.DOM.WebGLDepthTexture
+          , GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers as GHCJS.DOM.WebGLDrawBuffers
+          , GHCJS.DOM.JSFFI.Generated.WebGLLoseContext as GHCJS.DOM.WebGLLoseContext
+          , GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase as GHCJS.DOM.WebGLRenderingContextBase
+          , GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat as GHCJS.DOM.WebGLShaderPrecisionFormat
+          , GHCJS.DOM.JSFFI.Generated.WebGPUBuffer as GHCJS.DOM.WebGPUBuffer
+          , GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer as GHCJS.DOM.WebGPUCommandBuffer
+          , GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue as GHCJS.DOM.WebGPUCommandQueue
+          , GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder as GHCJS.DOM.WebGPUComputeCommandEncoder
+          , GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor as GHCJS.DOM.WebGPUDepthStencilDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState as GHCJS.DOM.WebGPUDepthStencilState
+          , GHCJS.DOM.JSFFI.Generated.WebGPUDrawable as GHCJS.DOM.WebGPUDrawable
+          , GHCJS.DOM.JSFFI.Generated.WebGPUFunction as GHCJS.DOM.WebGPUFunction
+          , GHCJS.DOM.JSFFI.Generated.WebGPULibrary as GHCJS.DOM.WebGPULibrary
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder as GHCJS.DOM.WebGPURenderCommandEncoder
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassAttachmentDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassColorAttachmentDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor as GHCJS.DOM.WebGPURenderPassDepthAttachmentDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor as GHCJS.DOM.WebGPURenderPassDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor as GHCJS.DOM.WebGPURenderPipelineColorAttachmentDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor as GHCJS.DOM.WebGPURenderPipelineDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState as GHCJS.DOM.WebGPURenderPipelineState
+          , GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext as GHCJS.DOM.WebGPURenderingContext
+          , GHCJS.DOM.JSFFI.Generated.WebGPUTexture as GHCJS.DOM.WebGPUTexture
+          , GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor as GHCJS.DOM.WebGPUTextureDescriptor
+          , GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent as GHCJS.DOM.WebKitAnimationEvent
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix as GHCJS.DOM.WebKitCSSMatrix
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule as GHCJS.DOM.WebKitCSSRegionRule
+          , GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule as GHCJS.DOM.WebKitCSSViewportRule
+          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError as GHCJS.DOM.WebKitMediaKeyError
+          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent as GHCJS.DOM.WebKitMediaKeyMessageEvent
+          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent as GHCJS.DOM.WebKitMediaKeyNeededEvent
+          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession as GHCJS.DOM.WebKitMediaKeySession
+          , GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys as GHCJS.DOM.WebKitMediaKeys
+          , GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow as GHCJS.DOM.WebKitNamedFlow
+          , GHCJS.DOM.JSFFI.Generated.WebKitNamespace as GHCJS.DOM.WebKitNamespace
+          , GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent as GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent
+          , GHCJS.DOM.JSFFI.Generated.WebKitPoint as GHCJS.DOM.WebKitPoint
+          , GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto as GHCJS.DOM.WebKitSubtleCrypto
+          , GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent as GHCJS.DOM.WebKitTransitionEvent
+          , GHCJS.DOM.JSFFI.Generated.WebSocket as GHCJS.DOM.WebSocket
+          , GHCJS.DOM.JSFFI.Generated.WheelEvent as GHCJS.DOM.WheelEvent
+          , GHCJS.DOM.JSFFI.Window as GHCJS.DOM.Window
+          , GHCJS.DOM.JSFFI.Generated.WindowEventHandlers as GHCJS.DOM.WindowEventHandlers
+          , GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope as GHCJS.DOM.WindowOrWorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.Worker as GHCJS.DOM.Worker
+          , GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope as GHCJS.DOM.WorkerGlobalScope
+          , GHCJS.DOM.JSFFI.Generated.WorkerLocation as GHCJS.DOM.WorkerLocation
+          , GHCJS.DOM.JSFFI.Generated.WorkerNavigator as GHCJS.DOM.WorkerNavigator
+          , GHCJS.DOM.JSFFI.Generated.WritableStream as GHCJS.DOM.WritableStream
+          , GHCJS.DOM.JSFFI.XMLHttpRequest as GHCJS.DOM.XMLHttpRequest
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget as GHCJS.DOM.XMLHttpRequestEventTarget
+          , GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent as GHCJS.DOM.XMLHttpRequestProgressEvent
+          , GHCJS.DOM.JSFFI.Generated.XMLSerializer as GHCJS.DOM.XMLSerializer
+          , GHCJS.DOM.JSFFI.Generated.XPathEvaluator as GHCJS.DOM.XPathEvaluator
+          , GHCJS.DOM.JSFFI.Generated.XPathException as GHCJS.DOM.XPathException
+          , GHCJS.DOM.JSFFI.Generated.XPathExpression as GHCJS.DOM.XPathExpression
+          , GHCJS.DOM.JSFFI.Generated.XPathNSResolver as GHCJS.DOM.XPathNSResolver
+          , GHCJS.DOM.JSFFI.Generated.XPathResult as GHCJS.DOM.XPathResult
+          , GHCJS.DOM.JSFFI.Generated.XSLTProcessor as GHCJS.DOM.XSLTProcessor
diff --git a/jsbits/xhr.js b/jsbits/xhr.js
new file mode 100644
--- /dev/null
+++ b/jsbits/xhr.js
@@ -0,0 +1,25 @@
+function h$dom$sendXHR(xhr, d, cont) {
+    var clear;
+    var error = function () {
+        clear(); cont(2);
+    };
+    var abort = function () {
+        clear(); cont(1);
+    };
+    var load = function () {
+        clear(); cont(0);
+    };
+    clear = function () {
+        xhr.removeEventListener('error', error);
+        xhr.removeEventListener('abort', abort);
+        xhr.removeEventListener('load', load);
+    }
+    xhr.addEventListener('error', error);
+    xhr.addEventListener('abort', abort);
+    xhr.addEventListener('load', load);
+    if(d) {
+	xhr.send(d);
+    } else {
+	xhr.send();
+    }
+}
diff --git a/src/GHCJS/DOM.hs b/src/GHCJS/DOM.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE CPP, ForeignFunctionInterface, OverloadedStrings #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM (
+  globalThis
+, globalThisUnchecked
+, currentWindow
+, currentWindowUnchecked
+, currentDocument
+, currentDocumentUnchecked
+, syncPoint
+, syncAfter
+, waitForAnimationFrame
+, nextAnimationFrame
+, AnimationFrameHandle
+, inAnimationFrame
+, inAnimationFrame'
+, catch
+, bracket
+) where
+
+import Control.Applicative ((<$>))
+import Control.Exception (catch, bracket)
+
+import Data.Maybe (fromJust)
+
+import GHCJS.Concurrent (OnBlocked(..))
+import JavaScript.Web.AnimationFrame (waitForAnimationFrame, AnimationFrameHandle, inAnimationFrame)
+
+import GHCJS.DOM.Types
+
+foreign import javascript unsafe "(() => { return globalThis; })"
+  ghcjs_globalThis :: IO (Nullable GlobalThis)
+foreign import javascript unsafe "(() => { return window; })"
+  ghcjs_currentWindow :: IO (Nullable Window)
+foreign import javascript unsafe "(() => { return document; })"
+  ghcjs_currentDocument :: IO (Nullable Document)
+
+globalThis :: MonadDOM m => m (Maybe GlobalThis)
+globalThis = liftDOM $ nullableToMaybe <$> ghcjs_globalThis
+globalThisUnchecked :: MonadDOM m => m GlobalThis
+globalThisUnchecked = liftDOM $ fromJust <$> globalThis
+currentWindow :: MonadDOM m => m (Maybe Window)
+currentWindow = liftDOM $ nullableToMaybe <$> ghcjs_currentWindow
+currentWindowUnchecked :: MonadDOM m => m Window
+currentWindowUnchecked = liftDOM $ fromJust <$> currentWindow
+currentDocument :: MonadDOM m => m (Maybe Document)
+currentDocument = liftDOM $ nullableToMaybe <$> ghcjs_currentDocument
+currentDocumentUnchecked :: MonadDOM m => m Document
+currentDocumentUnchecked = liftDOM $ fromJust <$> currentDocument
+
+syncPoint :: IO ()
+syncPoint = return ()
+
+syncAfter :: IO () -> IO ()
+syncAfter = id
+
+nextAnimationFrame :: (Double -> JSM a) -> JSM a
+nextAnimationFrame f = waitForAnimationFrame >>= f
+
+{- |
+     Run the action in an animationframe callback. The action runs in a
+     synchronous thread, and is passed the high-performance clock time
+     stamp for that frame.  On GHCJS this version will continue
+     asynchronously if it is not possible to complete the callback
+     synchronously.
+ -}
+inAnimationFrame' :: (Double -> JSM ())  -- ^ the action to run
+                 -> JSM AnimationFrameHandle
+inAnimationFrame' = inAnimationFrame ContinueAsync
diff --git a/src/GHCJS/DOM/EventM.hs b/src/GHCJS/DOM/EventM.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EventM.hs
@@ -0,0 +1,390 @@
+{-# LANGUAGE ConstraintKinds #-}
+{- | 'EventM' provides a convenient monadic interface for handling DOM events.
+
+The <https://developer.mozilla.org/en-US/docs/Web/API/Event DOM Event interface>
+is exposed, as well as functions for accessing UIEvents and MouseEvents.
+-}
+module GHCJS.DOM.EventM
+(
+-- $doc
+  EventM(..)
+, SaferEventListener(..)
+, EventName
+, newListener
+, newListenerSync
+, newListenerAsync
+, addListener
+, removeListener
+, releaseListener
+, on
+, onSync
+, onAsync
+, onTheseSync
+, onTheseAsync
+-- * Event interface
+, event
+, eventTarget
+, target
+, eventCurrentTarget
+, eventPhase
+, bubbles
+, cancelable
+, timeStamp
+, stopPropagation
+, preventDefault
+, defaultPrevented
+, stopImmediatePropagation
+, srcElement
+, getCancelBubble
+, cancelBubble
+, getReturnValue
+, returnValue
+-- * UIEvent helpers
+, uiView
+, uiDetail
+, uiKeyCode
+, uiCharCode
+, uiLayerX
+, uiLayerY
+, uiLayerXY
+, uiPageX
+, uiPageY
+, uiPageXY
+, uiWhich
+-- * MouseEvent helpers
+, mouseScreenX
+, mouseScreenY
+, mouseScreenXY
+, mouseClientX
+, mouseClientY
+, mouseClientXY
+, mouseMovementX
+, mouseMovementY
+, mouseMovementXY
+, mouseCtrlKey
+, mouseShiftKey
+, mouseAltKey
+, mouseMetaKey
+, mouseButton
+, mouseRelatedTarget
+, mouseOffsetX
+, mouseOffsetY
+, mouseOffsetXY
+, mouseX
+, mouseY
+, mouseXY
+, mouseFromElement
+, mouseToElement
+)
+where
+import           Control.Applicative ((<$>))
+import           Control.Monad.Trans.Reader (ReaderT, ask, runReaderT)
+import           Control.Monad.IO.Class (MonadIO(..))
+import           GHCJS.DOM.Types
+import qualified GHCJS.DOM.JSFFI.Generated.Event as Event
+import qualified GHCJS.DOM.JSFFI.Generated.UIEvent as UIEvent
+import qualified GHCJS.DOM.JSFFI.Generated.KeyboardEvent as KeyboardEvent
+import qualified GHCJS.DOM.JSFFI.Generated.MouseEvent as MouseEvent
+import           GHCJS.DOM.JSFFI.Generated.EventTarget
+import           GHCJS.DOM.EventTargetClosures
+import           Data.Word (Word)
+import           Data.Foldable (forM_)
+import           Data.Traversable (mapM)
+import           Data.Coerce (coerce)
+
+-- $doc
+-- TODO: small tutorial w/ example function
+
+-- | @IO@ with the current @Event@ in scope (read with 'event').
+type EventM t e = ReaderT e IO
+
+-- | See 'eventListenerNew'.
+newListener :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListener f = SaferEventListener <$> eventListenerNew (runReaderT f)
+
+-- | See 'eventListenerNewSync'.
+newListenerSync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerSync f = SaferEventListener <$> eventListenerNewSync (runReaderT f)
+
+-- | See 'eventListenerNewAsync'.
+newListenerAsync :: (IsEvent e) => EventM t e () -> IO (SaferEventListener t e)
+newListenerAsync f = SaferEventListener <$> eventListenerNewAsync (runReaderT f)
+
+-- | Add an EventListener to an EventTarget.
+addListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
+addListener target eventName (SaferEventListener l) useCapture =
+    addEventListener target (eventNameString eventName) (Just l) useCapture
+
+-- | Remove an EventListener from an EventTarget.
+removeListener :: (IsEventTarget t, IsEvent e) => t -> EventName t e -> SaferEventListener t e -> Bool -> IO ()
+removeListener target eventName (SaferEventListener l) useCapture =
+    removeEventListener target (eventNameString eventName) (Just l) useCapture
+
+-- | Release the listener (deallocates callbacks).
+releaseListener :: (IsEventTarget t, IsEvent e) => SaferEventListener t e -> IO ()
+releaseListener (SaferEventListener l) = eventListenerRelease l
+
+-- | Shortcut for create, add and release:
+--
+-- @
+-- releaseAction <- on element 'GHCJS.DOM.Document.click' $ do
+--     w <- 'GHCJS.DOM.currentWindowUnchecked'
+--     'GHCJS.DOM.Window.alert' w "I was clicked!"
+-- -- remove click handler again
+-- releaseAction
+-- @
+on :: (IsEventTarget t, IsEvent e)
+   => t             -- ^ target
+   -> EventName t e -- ^ event
+   -> EventM t e () -- ^ action
+   -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
+on target eventName@(EventNameSyncDefault _) = onSync target eventName
+on target eventName@(EventNameAsyncDefault _) = onAsync target eventName
+
+-- | Like 'on' but always uses 'newListenerSync'
+onSync :: (IsEventTarget t, IsEvent e)
+   => t             -- ^ target
+   -> EventName t e -- ^ event
+   -> EventM t e () -- ^ action
+   -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
+onSync target eventName callback = do
+    l <- newListenerSync callback
+    addListener target eventName l False
+    return (removeListener target eventName l False >> releaseListener l)
+
+-- | Like 'on' but uses 'newListenerAsync'
+onAsync :: (IsEventTarget t, IsEvent e)
+   => t             -- ^ target
+   -> EventName t e -- ^ event
+   -> EventM t e () -- ^ action
+   -> IO (IO ())    -- ^ @IO@ action that removes the listener from the element
+onAsync target eventName callback = do
+    l <- newListenerAsync callback
+    addListener target eventName l False
+    return (removeListener target eventName l False >> releaseListener l)
+
+-- | 'onSync' for multiple targets & events.
+--
+--   The returned @IO@ action removes them all at once.
+onTheseSync :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
+onTheseSync targetsAndEventNames callback = do
+    l <- newListenerSync callback
+    forM_ targetsAndEventNames $ \(target, eventName) ->
+        addListener target eventName l False
+    return (do
+        forM_ targetsAndEventNames (\(target, eventName) ->
+            removeListener target eventName l False)
+        releaseListener l)
+
+-- | 'onAsync' for multiple targets & events.
+--
+--   The returned @IO@ action removes them all at once.
+onTheseAsync :: (IsEventTarget t, IsEvent e) => [(t, EventName t e)] -> EventM t e () -> IO (IO ())
+onTheseAsync targetsAndEventNames callback = do
+    l <- newListenerAsync callback
+    forM_ targetsAndEventNames $ \(target, eventName) ->
+        addListener target eventName l False
+    return (do
+        forM_ targetsAndEventNames (\(target, eventName) ->
+            removeListener target eventName l False)
+        releaseListener l)
+
+event :: EventM t e e
+event = ask
+
+eventTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventTarget = event >>= Event.getTarget
+
+eventTargetUnsafe :: IsEvent e => EventM t e EventTarget
+eventTargetUnsafe = event >>= Event.getTargetUnsafe
+
+eventTargetUnchecked :: IsEvent e => EventM t e EventTarget
+eventTargetUnchecked = event >>= Event.getTargetUnchecked
+
+target :: (IsEvent e, IsGObject t) => EventM t e (Maybe t)
+target = eventTarget >>= mapM (liftJSM . fromJSValUnchecked . coerce)
+
+targetUnsafe :: (IsEvent e, IsGObject t) => EventM t e t
+targetUnsafe = eventTargetUnsafe >>= (liftJSM . fromJSValUnchecked . coerce)
+
+targetUnchecked :: (IsEvent e, IsGObject t) => EventM t e t
+targetUnchecked = eventTargetUnchecked >>= (liftJSM . fromJSValUnchecked . coerce)
+
+eventCurrentTarget :: IsEvent e => EventM t e (Maybe EventTarget)
+eventCurrentTarget = event >>= Event.getCurrentTarget
+
+eventCurrentTargetUnsafe :: IsEvent e => EventM t e EventTarget
+eventCurrentTargetUnsafe = event >>= Event.getCurrentTargetUnsafe
+
+eventCurrentTargetUnchecked :: IsEvent e => EventM t e EventTarget
+eventCurrentTargetUnchecked = event >>= Event.getCurrentTargetUnchecked
+
+eventPhase :: IsEvent e => EventM t e Word
+eventPhase = event >>= Event.getEventPhase
+
+bubbles :: IsEvent e => EventM t e Bool
+bubbles = event >>= Event.getBubbles
+
+cancelable :: IsEvent e => EventM t e Bool
+cancelable = event >>= Event.getCancelable
+
+timeStamp :: IsEvent e => EventM t e Word
+timeStamp = event >>= Event.getTimeStamp
+
+stopPropagation :: IsEvent e => EventM t e ()
+stopPropagation = event >>= Event.stopPropagation
+
+preventDefault :: IsEvent e => EventM t e ()
+preventDefault = event >>= Event.preventDefault
+
+defaultPrevented :: IsEvent e => EventM t e Bool
+defaultPrevented = event >>= Event.getDefaultPrevented
+
+stopImmediatePropagation :: IsEvent e => EventM t e ()
+stopImmediatePropagation = event >>= Event.stopImmediatePropagation
+
+srcElement :: IsEvent e => EventM t e EventTarget
+srcElement = event >>= Event.getSrcElement
+
+getCancelBubble :: IsEvent e => EventM t e Bool
+getCancelBubble = event >>= Event.getCancelBubble
+
+cancelBubble :: IsEvent e => Bool -> EventM t e ()
+cancelBubble f = event >>= flip Event.setCancelBubble f
+
+getReturnValue :: IsEvent e => EventM t e Bool
+getReturnValue = event >>= Event.getReturnValue
+
+returnValue :: IsEvent e => Bool -> EventM t e ()
+returnValue f = event >>= flip Event.setReturnValue f
+
+uiView :: IsUIEvent e => EventM t e Window
+uiView = event >>= UIEvent.getView
+
+uiDetail :: IsUIEvent e => EventM t e Int
+uiDetail = event >>= UIEvent.getDetail
+
+uiKeyCode :: EventM t KeyboardEvent Word
+uiKeyCode = event >>= KeyboardEvent.getKeyCode
+
+uiCharCode :: EventM t KeyboardEvent Word
+uiCharCode = event >>= KeyboardEvent.getCharCode
+
+uiLayerX :: IsUIEvent e => EventM t e Int
+uiLayerX = event >>= UIEvent.getLayerX
+
+uiLayerY :: IsUIEvent e => EventM t e Int
+uiLayerY = event >>= UIEvent.getLayerY
+
+uiLayerXY :: IsUIEvent e => EventM t e (Int, Int)
+uiLayerXY = do
+    e <- event
+    x <- UIEvent.getLayerX e
+    y <- UIEvent.getLayerY e
+    return (x, y)
+
+uiPageX :: IsUIEvent e => EventM t e Int
+uiPageX = event >>= UIEvent.getPageX
+
+uiPageY :: IsUIEvent e => EventM t e Int
+uiPageY = event >>= UIEvent.getPageY
+
+uiPageXY :: IsUIEvent e => EventM t e (Int, Int)
+uiPageXY = do
+    e <- event
+    x <- UIEvent.getPageX e
+    y <- UIEvent.getPageY e
+    return (x, y)
+
+uiWhich :: IsUIEvent e => EventM t e Int
+uiWhich = event >>= UIEvent.getWhich
+
+mouseScreenX :: IsMouseEvent e => EventM t e Int
+mouseScreenX = event >>= MouseEvent.getScreenX
+
+mouseScreenY :: IsMouseEvent e => EventM t e Int
+mouseScreenY = event >>= MouseEvent.getScreenY
+
+mouseScreenXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseScreenXY = do
+    e <- event
+    x <- MouseEvent.getScreenX e
+    y <- MouseEvent.getScreenY e
+    return (x, y)
+
+mouseClientX :: IsMouseEvent e => EventM t e Int
+mouseClientX = event >>= MouseEvent.getClientX
+
+mouseClientY :: IsMouseEvent e => EventM t e Int
+mouseClientY = event >>= MouseEvent.getClientY
+
+mouseClientXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseClientXY = do
+    e <- event
+    x <- MouseEvent.getClientX e
+    y <- MouseEvent.getClientY e
+    return (x, y)
+
+mouseMovementX :: IsMouseEvent e => EventM t e Int
+mouseMovementX = event >>= MouseEvent.getMovementX
+
+mouseMovementY :: IsMouseEvent e => EventM t e Int
+mouseMovementY = event >>= MouseEvent.getMovementY
+
+mouseMovementXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseMovementXY = do
+    e <- event
+    x <- MouseEvent.getMovementX e
+    y <- MouseEvent.getMovementY e
+    return (x, y)
+
+mouseCtrlKey :: IsMouseEvent e => EventM t e Bool
+mouseCtrlKey = event >>= MouseEvent.getCtrlKey
+
+mouseShiftKey :: IsMouseEvent e => EventM t e Bool
+mouseShiftKey = event >>= MouseEvent.getShiftKey
+
+mouseAltKey :: IsMouseEvent e => EventM t e Bool
+mouseAltKey = event >>= MouseEvent.getAltKey
+
+mouseMetaKey :: IsMouseEvent e => EventM t e Bool
+mouseMetaKey = event >>= MouseEvent.getMetaKey
+
+mouseButton :: IsMouseEvent e => EventM t e Word
+mouseButton = event >>= MouseEvent.getButton
+
+mouseRelatedTarget :: IsMouseEvent e => EventM t e (Maybe EventTarget)
+mouseRelatedTarget = event >>= MouseEvent.getRelatedTarget
+
+mouseOffsetX :: IsMouseEvent e => EventM t e Int
+mouseOffsetX = event >>= MouseEvent.getOffsetX
+
+mouseOffsetY :: IsMouseEvent e => EventM t e Int
+mouseOffsetY = event >>= MouseEvent.getOffsetY
+
+mouseOffsetXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseOffsetXY = do
+    e <- event
+    x <- MouseEvent.getOffsetX e
+    y <- MouseEvent.getOffsetY e
+    return (x, y)
+
+mouseX :: IsMouseEvent e => EventM t e Int
+mouseX = event >>= MouseEvent.getX
+
+mouseY :: IsMouseEvent e => EventM t e Int
+mouseY = event >>= MouseEvent.getY
+
+mouseXY :: IsMouseEvent e => EventM t e (Int, Int)
+mouseXY = do
+    e <- event
+    x <- MouseEvent.getX e
+    y <- MouseEvent.getY e
+    return (x, y)
+
+mouseFromElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseFromElement = event >>= MouseEvent.getFromElement
+
+mouseToElement :: IsMouseEvent e => EventM t e (Maybe Node)
+mouseToElement = event >>= MouseEvent.getToElement
+
diff --git a/src/GHCJS/DOM/EventTargetClosures.hs b/src/GHCJS/DOM/EventTargetClosures.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/EventTargetClosures.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE JavaScriptFFI, ForeignFunctionInterface #-}
+module GHCJS.DOM.EventTargetClosures
+       (
+         -- | __Note on Naming:__ 'SaferEventListener' is to 'EventListener' what
+         --   'EventName' is to 'DOMString'. If @SaferEventListener@ did not have
+         --   a prefix we would have two types called @EventListener@. That might
+         --   lead to confusion.
+         EventName(..)
+       , SaferEventListener(..)
+       , eventNameString
+       , unsafeEventName
+       , unsafeEventNameAsync
+       -- * Creation and Destruction
+       -- | __Note:__ Don’t forget to release your event listeners, or you will leak memory.
+       , eventListenerNew
+       , eventListenerNewSync
+       , eventListenerNewAsync
+       , eventListenerRelease ) where
+
+import Control.Applicative ((<$>))
+import Control.Monad ((>=>))
+import GHCJS.Types
+import GHC.JS.Foreign.Callback
+import GHCJS.Marshal.Pure
+import GHCJS.DOM.Types
+import GHCJS.DOM.Internal
+
+-- | Plain JS 'DOMString' that carries two phantom types:
+--
+--   * @t@: type of the event’s target
+--   * @e@: type of the event
+--
+--   Many @GHCJS.DOM@ modules export @EventName@s, for example
+--   "GHCJS.DOM.JSFFI.Generated.Window".
+data EventName t e = EventNameSyncDefault DOMString | EventNameAsyncDefault DOMString
+
+eventNameString :: EventName t e -> DOMString
+eventNameString (EventNameSyncDefault s) = s
+eventNameString (EventNameAsyncDefault s) = s
+
+-- | Plain JS 'EventListener' that carries the same phantom types as 'EventName'.
+newtype SaferEventListener t e = SaferEventListener EventListener
+
+instance PToJSVal (SaferEventListener t e) where
+    pToJSVal (SaferEventListener l) = pToJSVal l
+    {-# INLINE pToJSVal #-}
+
+instance PFromJSVal (SaferEventListener t e) where
+    pFromJSVal = SaferEventListener . pFromJSVal
+    {-# INLINE pFromJSVal #-}
+
+-- | Forces the phantom parameters.
+unsafeEventName :: DOMString -> EventName t e
+unsafeEventName = EventNameSyncDefault
+
+unsafeEventNameAsync :: DOMString -> EventName t e
+unsafeEventNameAsync = EventNameAsyncDefault
+
+-- | Create an EventListener that will try to run the callback synchronously,
+--   but fork a thread if it takes too long to execute ('ContinueAsync').
+eventListenerNew :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNew callback = (EventListener . jsval) <$> syncCallback1 ContinueAsync (fromJSValUnchecked >=> callback)
+
+-- | Create an sync EventListener, throw 'ThrowWouldBlock' if it takes too long.
+eventListenerNewSync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewSync callback = (EventListener . jsval) <$> syncCallback1 ThrowWouldBlock (fromJSValUnchecked >=> callback)
+
+-- | Create an async EventListener.
+eventListenerNewAsync :: IsEvent event => (event -> IO ()) -> IO EventListener
+eventListenerNewAsync callback = (EventListener . jsval) <$> asyncCallback1 (fromJSValUnchecked >=> callback)
+
+-- | Release the event listener (deallocate callback).
+eventListenerRelease :: EventListener -> IO ()
+eventListenerRelease (EventListener ref) = fromJSValUnchecked ref >>= releaseCallback
diff --git a/src/GHCJS/DOM/Internal.hs b/src/GHCJS/DOM/Internal.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Internal.hs
@@ -0,0 +1,14 @@
+module GHCJS.DOM.Internal where
+
+import Unsafe.Coerce (unsafeCoerce)
+
+import GHCJS.Marshal (FromJSVal(..))
+import GHC.JS.Foreign.Callback (Callback)
+
+
+-- This orphan instance is meant as a temporary solution
+-- until FromJSVal will be added to GHC.JS.Prim
+-- so that a proper instance leveraging Callback's
+-- constructor can be defined in base.
+instance FromJSVal (Callback a) where
+  fromJSVal = pure . Just . unsafeCoerce
diff --git a/src/GHCJS/DOM/JSFFI/AudioContext.hs b/src/GHCJS/DOM/JSFFI/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/AudioContext.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.AudioContext (
+    module Generated
+  , DecodeAudioError(..)
+  , js_decodeAudioData
+  , decodeAudioData
+) where
+
+import Control.Exception (Exception(..), throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Types (JSVal)
+import GHCJS.Foreign (jsNull)
+import GHCJS.Marshal (fromJSVal, fromJSValUnchecked)
+import GHC.JS.Foreign.Callback (releaseCallback)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.Generated.AudioContext as Generated hiding (js_decodeAudioData, decodeAudioData)
+
+data DecodeAudioError = DecodeAudioError deriving (Show, Eq)
+
+instance Exception DecodeAudioError
+
+foreign import javascript interruptible
+        "$1[\"decodeAudioData\"]($2, $c, function() { $c(null); });" js_decodeAudioData ::
+        AudioContext -> ArrayBuffer -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation>
+decodeAudioData :: (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) =>
+                   self -> audioData -> m AudioBuffer
+decodeAudioData self audioData = liftIO $ nullableToMaybe <$> js_decodeAudioData
+        (toAudioContext self)
+        (toArrayBuffer audioData)
+            >>= maybe (throwIO DecodeAudioError) return
+
diff --git a/src/GHCJS/DOM/JSFFI/DOMError.hs b/src/GHCJS/DOM/JSFFI/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/DOMError.hs
@@ -0,0 +1,20 @@
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.JSFFI.DOMError (
+    module Generated
+  , DOMErrorException(..)
+  , throwDOMErrorException
+) where
+
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.DOM.JSFFI.Generated.DOMError as Generated
+
+data DOMErrorException = DOMErrorException { domErrorName :: String } deriving (Show, Eq)
+
+instance Exception DOMErrorException
+
+throwDOMErrorException :: MonadIO m => DOMError -> m a
+throwDOMErrorException error = do
+    domErrorName <- getName error
+    liftIO $ throwIO DOMErrorException{..}
diff --git a/src/GHCJS/DOM/JSFFI/Database.hs b/src/GHCJS/DOM/JSFFI/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Database.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Database (
+    module Generated
+  , js_changeVersion
+  , changeVersion'
+  , changeVersion
+  , js_transaction
+  , transaction'
+  , transaction
+  , js_readTransaction
+  , readTransaction'
+  , readTransaction
+) where
+
+import Data.Maybe (fromJust, maybe)
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Exception (Exception, bracket)
+
+import GHCJS.Types (JSVal, JSString)
+import GHCJS.Foreign (jsNull)
+import GHC.JS.Foreign.Callback (OnBlocked(..))
+import GHCJS.Marshal (fromJSVal)
+import GHCJS.Marshal.Pure (pToJSVal)
+import GHC.JS.Foreign.Callback (releaseCallback)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.SQLError (throwSQLException)
+import GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback (newSQLTransactionCallbackSync)
+import GHCJS.DOM.JSFFI.Generated.Database as Generated hiding (js_changeVersion, changeVersion, js_transaction, transaction, js_readTransaction, readTransaction)
+
+withSQLTransactionCallback :: (SQLTransaction -> IO ()) -> (SQLTransactionCallback -> IO a) -> IO a
+withSQLTransactionCallback f = bracket (newSQLTransactionCallbackSync f) (\(SQLTransactionCallback c) -> releaseCallback c)
+
+foreign import javascript interruptible
+        "$1[\"changeVersion\"]($2, $3, $4, $c, function() { $c(null); });"
+        js_changeVersion :: Database -> JSString -> JSString -> Nullable SQLTransactionCallback -> IO (Nullable SQLError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation>
+changeVersion' :: (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
+                  Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> IO ()) -> m (Maybe SQLError)
+changeVersion' self oldVersion newVersion Nothing = liftIO $ nullableToMaybe <$>
+    js_changeVersion self (toJSString oldVersion) (toJSString newVersion) (Nullable jsNull)
+changeVersion' self oldVersion newVersion (Just callback) = liftIO $ nullableToMaybe <$>
+    withSQLTransactionCallback callback
+        (js_changeVersion self (toJSString oldVersion) (toJSString newVersion) . Nullable . pToJSVal)
+
+changeVersion :: (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
+                 Database -> oldVersion -> newVersion -> Maybe (SQLTransaction -> IO ()) -> m ()
+changeVersion self oldVersion newVersion callback =
+    changeVersion' self oldVersion newVersion callback >>= maybe (return ()) throwSQLException
+
+foreign import javascript interruptible "$1[\"transaction\"]($2, $c, function() { $c(null); });"
+        js_transaction :: Database -> SQLTransactionCallback -> IO (Nullable SQLError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation>
+transaction' :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m (Maybe SQLError)
+transaction' self callback = liftIO $ nullableToMaybe <$>
+    withSQLTransactionCallback callback
+        (js_transaction self)
+
+transaction :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m ()
+transaction self callback = transaction' self callback >>= maybe (return ()) throwSQLException
+
+foreign import javascript interruptible
+        "$1[\"readTransaction\"]($2, $c, function() { $c(null); });"
+        js_readTransaction :: Database -> SQLTransactionCallback -> IO (Nullable SQLError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation>
+readTransaction' :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m (Maybe SQLError)
+readTransaction' self callback = liftIO $ nullableToMaybe <$>
+      withSQLTransactionCallback callback (js_readTransaction self)
+
+readTransaction :: (MonadIO m) => Database -> (SQLTransaction -> IO ()) -> m ()
+readTransaction self callback = readTransaction' self callback >>= maybe (return ()) throwSQLException
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ANGLEInstancedArrays.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ANGLEInstancedArrays
+       (js_drawArraysInstancedANGLE, drawArraysInstancedANGLE,
+        js_drawElementsInstancedANGLE, drawElementsInstancedANGLE,
+        js_vertexAttribDivisorANGLE, vertexAttribDivisorANGLE,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE,
+        ANGLEInstancedArrays(..), gTypeANGLEInstancedArrays)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstancedANGLE\"]($2,\n$3, $4, $5); })"
+        js_drawArraysInstancedANGLE ::
+        ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawArraysInstancedANGLE Mozilla ANGLEInstancedArrays.drawArraysInstancedANGLE documentation> 
+drawArraysInstancedANGLE ::
+                         (MonadIO m) =>
+                           ANGLEInstancedArrays -> Word -> Int -> Int -> Int -> m ()
+drawArraysInstancedANGLE self mode first count primcount
+  = liftIO
+      (js_drawArraysInstancedANGLE self mode first count primcount)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstancedANGLE\"]($2,\n$3, $4, $5, $6); })"
+        js_drawElementsInstancedANGLE ::
+        ANGLEInstancedArrays ->
+          Word -> Int -> Word -> Double -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.drawElementsInstancedANGLE Mozilla ANGLEInstancedArrays.drawElementsInstancedANGLE documentation> 
+drawElementsInstancedANGLE ::
+                           (MonadIO m) =>
+                             ANGLEInstancedArrays -> Word -> Int -> Word -> Int64 -> Int -> m ()
+drawElementsInstancedANGLE self mode count type' offset primcount
+  = liftIO
+      (js_drawElementsInstancedANGLE self mode count type'
+         (fromIntegral offset)
+         primcount)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"vertexAttribDivisorANGLE\"]($2,\n$3); })"
+        js_vertexAttribDivisorANGLE ::
+        ANGLEInstancedArrays -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays.vertexAttribDivisorANGLE Mozilla ANGLEInstancedArrays.vertexAttribDivisorANGLE documentation> 
+vertexAttribDivisorANGLE ::
+                         (MonadIO m) => ANGLEInstancedArrays -> Word -> Word -> m ()
+vertexAttribDivisorANGLE self index divisor
+  = liftIO (js_vertexAttribDivisorANGLE self index divisor)
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AbstractWorker.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AbstractWorker
+       (error, AbstractWorker(..), gTypeAbstractWorker, IsAbstractWorker,
+        toAbstractWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker.onerror Mozilla AbstractWorker.onerror documentation> 
+error ::
+      (IsAbstractWorker self, IsEventTarget self) =>
+        EventName self UIEvent
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnalyserNode.hs
@@ -0,0 +1,141 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AnalyserNode
+       (js_getFloatFrequencyData, getFloatFrequencyData,
+        js_getByteFrequencyData, getByteFrequencyData,
+        js_getByteTimeDomainData, getByteTimeDomainData, js_setFftSize,
+        setFftSize, js_getFftSize, getFftSize, js_getFrequencyBinCount,
+        getFrequencyBinCount, js_setMinDecibels, setMinDecibels,
+        js_getMinDecibels, getMinDecibels, js_setMaxDecibels,
+        setMaxDecibels, js_getMaxDecibels, getMaxDecibels,
+        js_setSmoothingTimeConstant, setSmoothingTimeConstant,
+        js_getSmoothingTimeConstant, getSmoothingTimeConstant,
+        AnalyserNode(..), gTypeAnalyserNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getFloatFrequencyData\"]($2); })" js_getFloatFrequencyData ::
+        AnalyserNode -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getFloatFrequencyData Mozilla AnalyserNode.getFloatFrequencyData documentation> 
+getFloatFrequencyData ::
+                      (MonadIO m, IsFloat32Array array) =>
+                        AnalyserNode -> Maybe array -> m ()
+getFloatFrequencyData self array
+  = liftIO
+      (js_getFloatFrequencyData self
+         (maybeToOptional (fmap toFloat32Array array)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getByteFrequencyData\"]($2); })"
+        js_getByteFrequencyData ::
+        AnalyserNode -> Optional Uint8Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteFrequencyData Mozilla AnalyserNode.getByteFrequencyData documentation> 
+getByteFrequencyData ::
+                     (MonadIO m, IsUint8Array array) =>
+                       AnalyserNode -> Maybe array -> m ()
+getByteFrequencyData self array
+  = liftIO
+      (js_getByteFrequencyData self
+         (maybeToOptional (fmap toUint8Array array)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getByteTimeDomainData\"]($2); })" js_getByteTimeDomainData ::
+        AnalyserNode -> Optional Uint8Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.getByteTimeDomainData Mozilla AnalyserNode.getByteTimeDomainData documentation> 
+getByteTimeDomainData ::
+                      (MonadIO m, IsUint8Array array) =>
+                        AnalyserNode -> Maybe array -> m ()
+getByteTimeDomainData self array
+  = liftIO
+      (js_getByteTimeDomainData self
+         (maybeToOptional (fmap toUint8Array array)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"fftSize\"] = $2; })"
+        js_setFftSize :: AnalyserNode -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+setFftSize :: (MonadIO m) => AnalyserNode -> Word -> m ()
+setFftSize self val = liftIO (js_setFftSize self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fftSize\"]; })" js_getFftSize ::
+        AnalyserNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.fftSize Mozilla AnalyserNode.fftSize documentation> 
+getFftSize :: (MonadIO m) => AnalyserNode -> m Word
+getFftSize self = liftIO (js_getFftSize self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frequencyBinCount\"]; })"
+        js_getFrequencyBinCount :: AnalyserNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.frequencyBinCount Mozilla AnalyserNode.frequencyBinCount documentation> 
+getFrequencyBinCount :: (MonadIO m) => AnalyserNode -> m Word
+getFrequencyBinCount self = liftIO (js_getFrequencyBinCount self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"minDecibels\"] = $2; })"
+        js_setMinDecibels :: AnalyserNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+setMinDecibels :: (MonadIO m) => AnalyserNode -> Double -> m ()
+setMinDecibels self val = liftIO (js_setMinDecibels self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"minDecibels\"]; })"
+        js_getMinDecibels :: AnalyserNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.minDecibels Mozilla AnalyserNode.minDecibels documentation> 
+getMinDecibels :: (MonadIO m) => AnalyserNode -> m Double
+getMinDecibels self = liftIO (js_getMinDecibels self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"maxDecibels\"] = $2; })"
+        js_setMaxDecibels :: AnalyserNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+setMaxDecibels :: (MonadIO m) => AnalyserNode -> Double -> m ()
+setMaxDecibels self val = liftIO (js_setMaxDecibels self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxDecibels\"]; })"
+        js_getMaxDecibels :: AnalyserNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.maxDecibels Mozilla AnalyserNode.maxDecibels documentation> 
+getMaxDecibels :: (MonadIO m) => AnalyserNode -> m Double
+getMaxDecibels self = liftIO (js_getMaxDecibels self)
+ 
+foreign import javascript safe
+        "(($1, $2) => { $1[\"smoothingTimeConstant\"] = $2; })" js_setSmoothingTimeConstant
+        :: AnalyserNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
+setSmoothingTimeConstant ::
+                         (MonadIO m) => AnalyserNode -> Double -> m ()
+setSmoothingTimeConstant self val
+  = liftIO (js_setSmoothingTimeConstant self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"smoothingTimeConstant\"]; })"
+        js_getSmoothingTimeConstant :: AnalyserNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode.smoothingTimeConstant Mozilla AnalyserNode.smoothingTimeConstant documentation> 
+getSmoothingTimeConstant :: (MonadIO m) => AnalyserNode -> m Double
+getSmoothingTimeConstant self
+  = liftIO (js_getSmoothingTimeConstant self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animatable.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Animatable
+       (js_getAnimations, getAnimations, getAnimations_, Animatable(..),
+        gTypeAnimatable, IsAnimatable, toAnimatable)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAnimations\"](); })"
+        js_getAnimations :: Animatable -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
+getAnimations ::
+              (MonadIO m, IsAnimatable self) => self -> m [Animation]
+getAnimations self
+  = liftIO
+      ((js_getAnimations (toAnimatable self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animatable.getAnimations Mozilla Animatable.getAnimations documentation> 
+getAnimations_ :: (MonadIO m, IsAnimatable self) => self -> m ()
+getAnimations_ self
+  = liftIO (void (js_getAnimations (toAnimatable self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Animation.hs b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Animation.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Animation
+       (js_newAnimation, newAnimation, js_getEffect, getEffect,
+        getEffectUnsafe, getEffectUnchecked, js_getTimeline, getTimeline,
+        getTimelineUnsafe, getTimelineUnchecked, Animation(..),
+        gTypeAnimation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"Animation\"]($1, $2); })" js_newAnimation ::
+        Optional AnimationEffect ->
+          Optional AnimationTimeline -> IO Animation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation Mozilla Animation documentation> 
+newAnimation ::
+             (MonadIO m, IsAnimationEffect effect,
+              IsAnimationTimeline timeline) =>
+               Maybe effect -> Maybe timeline -> m Animation
+newAnimation effect timeline
+  = liftIO
+      (js_newAnimation (maybeToOptional (fmap toAnimationEffect effect))
+         (maybeToOptional (fmap toAnimationTimeline timeline)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"effect\"]; })" js_getEffect ::
+        Animation -> IO (Nullable AnimationEffect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
+getEffect :: (MonadIO m) => Animation -> m (Maybe AnimationEffect)
+getEffect self = liftIO (nullableToMaybe <$> (js_getEffect self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
+getEffectUnsafe ::
+                (MonadIO m, HasCallStack) => Animation -> m AnimationEffect
+getEffectUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getEffect self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.effect Mozilla Animation.effect documentation> 
+getEffectUnchecked :: (MonadIO m) => Animation -> m AnimationEffect
+getEffectUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getEffect self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })" js_getTimeline
+        :: Animation -> IO (Nullable AnimationTimeline)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
+getTimeline ::
+            (MonadIO m) => Animation -> m (Maybe AnimationTimeline)
+getTimeline self
+  = liftIO (nullableToMaybe <$> (js_getTimeline self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
+getTimelineUnsafe ::
+                  (MonadIO m, HasCallStack) => Animation -> m AnimationTimeline
+getTimelineUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTimeline self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Animation.timeline Mozilla Animation.timeline documentation> 
+getTimelineUnchecked ::
+                     (MonadIO m) => Animation -> m AnimationTimeline
+getTimelineUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTimeline self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AnimationEvent.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AnimationEvent
+       (js_newAnimationEvent, newAnimationEvent, js_getAnimationName,
+        getAnimationName, js_getElapsedTime, getElapsedTime,
+        AnimationEvent(..), gTypeAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"AnimationEvent\"]($1,\n$2); })" js_newAnimationEvent ::
+        JSString -> Optional AnimationEventInit -> IO AnimationEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation> 
+newAnimationEvent ::
+                  (MonadIO m, ToJSString type') =>
+                    type' -> Maybe AnimationEventInit -> m AnimationEvent
+newAnimationEvent type' animationEventInitDict
+  = liftIO
+      (js_newAnimationEvent (toJSString type')
+         (maybeToOptional animationEventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
+        js_getAnimationName :: AnimationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.animationName Mozilla AnimationEvent.animationName documentation> 
+getAnimationName ::
+                 (MonadIO m, FromJSString result) => AnimationEvent -> m result
+getAnimationName self
+  = liftIO (fromJSString <$> (js_getAnimationName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: AnimationEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent.elapsedTime Mozilla AnimationEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadIO m) => AnimationEvent -> m Double
+getElapsedTime self = liftIO (js_getElapsedTime self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayError.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayError
+       (js_newApplePayError, newApplePayError, js_setCode, setCode,
+        js_getCode, getCode, js_setContactField, setContactField,
+        js_getContactField, getContactField, getContactFieldUnsafe,
+        getContactFieldUnchecked, js_setMessage, setMessage, js_getMessage,
+        getMessage, ApplePayError(..), gTypeApplePayError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return new window[\"ApplePayError\"]($1,\n$2, $3); })" js_newApplePayError ::
+        JSVal ->
+          Optional ApplePayErrorContactField ->
+            Optional JSString -> IO ApplePayError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError Mozilla ApplePayError documentation> 
+newApplePayError ::
+                 (MonadIO m, ToJSString message) =>
+                   ApplePayErrorCode ->
+                     Maybe ApplePayErrorContactField -> Maybe message -> m ApplePayError
+newApplePayError errorCode contactField message
+  = liftIO
+      (js_newApplePayError (pToJSVal errorCode)
+         (maybeToOptional contactField)
+         (toOptionalJSString message))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
+        ApplePayError -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
+setCode ::
+        (MonadIO m) => ApplePayError -> ApplePayErrorCode -> m ()
+setCode self val = liftIO (js_setCode self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        ApplePayError -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.code Mozilla ApplePayError.code documentation> 
+getCode :: (MonadIO m) => ApplePayError -> m ApplePayErrorCode
+getCode self = liftIO ((js_getCode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"contactField\"] = $2; })"
+        js_setContactField ::
+        ApplePayError -> Optional ApplePayErrorContactField -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
+setContactField ::
+                (MonadIO m) =>
+                  ApplePayError -> Maybe ApplePayErrorContactField -> m ()
+setContactField self val
+  = liftIO (js_setContactField self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contactField\"]; })"
+        js_getContactField ::
+        ApplePayError -> IO (Nullable ApplePayErrorContactField)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
+getContactField ::
+                (MonadIO m) => ApplePayError -> m (Maybe ApplePayErrorContactField)
+getContactField self
+  = liftIO (nullableToMaybe <$> (js_getContactField self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
+getContactFieldUnsafe ::
+                      (MonadIO m, HasCallStack) =>
+                        ApplePayError -> m ApplePayErrorContactField
+getContactFieldUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getContactField self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.contactField Mozilla ApplePayError.contactField documentation> 
+getContactFieldUnchecked ::
+                         (MonadIO m) => ApplePayError -> m ApplePayErrorContactField
+getContactFieldUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getContactField self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"message\"] = $2; })"
+        js_setMessage :: ApplePayError -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
+setMessage ::
+           (MonadIO m, ToJSString val) => ApplePayError -> val -> m ()
+setMessage self val = liftIO (js_setMessage self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        ApplePayError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError.message Mozilla ApplePayError.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => ApplePayError -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentAuthorizedEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayPaymentAuthorizedEvent
+       (js_getPayment, getPayment, ApplePayPaymentAuthorizedEvent(..),
+        gTypeApplePayPaymentAuthorizedEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"payment\"]; })" js_getPayment ::
+        ApplePayPaymentAuthorizedEvent -> IO ApplePayPayment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizedEvent.payment Mozilla ApplePayPaymentAuthorizedEvent.payment documentation> 
+getPayment ::
+           (MonadIO m) => ApplePayPaymentAuthorizedEvent -> m ApplePayPayment
+getPayment self = liftIO (js_getPayment self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayPaymentMethodSelectedEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayPaymentMethodSelectedEvent
+       (js_getPaymentMethod, getPaymentMethod,
+        ApplePayPaymentMethodSelectedEvent(..),
+        gTypeApplePayPaymentMethodSelectedEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"paymentMethod\"]; })"
+        js_getPaymentMethod ::
+        ApplePayPaymentMethodSelectedEvent -> IO ApplePayPaymentMethod
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodSelectedEvent.paymentMethod Mozilla ApplePayPaymentMethodSelectedEvent.paymentMethod documentation> 
+getPaymentMethod ::
+                 (MonadIO m) =>
+                   ApplePayPaymentMethodSelectedEvent -> m ApplePayPaymentMethod
+getPaymentMethod self = liftIO (js_getPaymentMethod self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePaySession.hs
@@ -0,0 +1,309 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePaySession
+       (js_newApplePaySession, newApplePaySession, js_supportsVersion,
+        supportsVersion, supportsVersion_, js_canMakePayments,
+        canMakePayments, canMakePayments_,
+        js_canMakePaymentsWithActiveCard, canMakePaymentsWithActiveCard,
+        canMakePaymentsWithActiveCard_, js_openPaymentSetup,
+        openPaymentSetup, openPaymentSetup_, js_begin, begin, js_abort,
+        abort, js_completeMerchantValidation, completeMerchantValidation,
+        js_completeShippingMethodSelectionUpdate,
+        completeShippingMethodSelectionUpdate,
+        js_completeShippingContactSelectionUpdate,
+        completeShippingContactSelectionUpdate,
+        js_completePaymentMethodSelectionUpdate,
+        completePaymentMethodSelectionUpdate, js_completePaymentResult,
+        completePaymentResult, js_completeShippingMethodSelection,
+        completeShippingMethodSelection,
+        js_completeShippingContactSelection,
+        completeShippingContactSelection,
+        js_completePaymentMethodSelection, completePaymentMethodSelection,
+        js_completePayment, completePayment, pattern STATUS_SUCCESS,
+        pattern STATUS_FAILURE,
+        pattern STATUS_INVALID_BILLING_POSTAL_ADDRESS,
+        pattern STATUS_INVALID_SHIPPING_POSTAL_ADDRESS,
+        pattern STATUS_INVALID_SHIPPING_CONTACT,
+        pattern STATUS_PIN_REQUIRED, pattern STATUS_PIN_INCORRECT,
+        pattern STATUS_PIN_LOCKOUT, validatemerchant,
+        paymentmethodselected, paymentauthorized, shippingmethodselected,
+        shippingcontactselected, cancel, ApplePaySession(..),
+        gTypeApplePaySession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2) => { return new window[\"ApplePaySession\"]($1,\n$2); })" js_newApplePaySession ::
+        Word -> ApplePayPaymentRequest -> IO ApplePaySession
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession Mozilla ApplePaySession documentation> 
+newApplePaySession ::
+                   (MonadIO m) => Word -> ApplePayPaymentRequest -> m ApplePaySession
+newApplePaySession version paymentRequest
+  = liftIO (js_newApplePaySession version paymentRequest)
+ 
+foreign import javascript safe
+        "(($1) => { return (window[\"ApplePaySession\"][\"supportsVersion\"]($1) ? 1 : 0); })"
+        js_supportsVersion :: Word -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
+supportsVersion :: (MonadIO m) => Word -> m Bool
+supportsVersion version = liftIO (js_supportsVersion version)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.supportsVersion Mozilla ApplePaySession.supportsVersion documentation> 
+supportsVersion_ :: (MonadIO m) => Word -> m ()
+supportsVersion_ version
+  = liftIO (void (js_supportsVersion version))
+ 
+foreign import javascript safe
+        "(() => { return (window[\"ApplePaySession\"][\"canMakePayments\"]() ? 1 : 0); })"
+        js_canMakePayments :: IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
+canMakePayments :: (MonadIO m) => m Bool
+canMakePayments = liftIO (js_canMakePayments)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePayments Mozilla ApplePaySession.canMakePayments documentation> 
+canMakePayments_ :: (MonadIO m) => m ()
+canMakePayments_ = liftIO (void (js_canMakePayments))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return window[\"ApplePaySession\"][\"canMakePaymentsWithActiveCard\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_canMakePaymentsWithActiveCard :: JSString -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
+canMakePaymentsWithActiveCard ::
+                              (MonadIO m, ToJSString merchantIdentifier) =>
+                                merchantIdentifier -> m Bool
+canMakePaymentsWithActiveCard merchantIdentifier
+  = liftIO
+      ((js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.canMakePaymentsWithActiveCard Mozilla ApplePaySession.canMakePaymentsWithActiveCard documentation> 
+canMakePaymentsWithActiveCard_ ::
+                               (MonadIO m, ToJSString merchantIdentifier) =>
+                                 merchantIdentifier -> m ()
+canMakePaymentsWithActiveCard_ merchantIdentifier
+  = liftIO
+      (void
+         (js_canMakePaymentsWithActiveCard (toJSString merchantIdentifier)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return window[\"ApplePaySession\"][\"openPaymentSetup\"]($1).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_openPaymentSetup :: JSString -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
+openPaymentSetup ::
+                 (MonadIO m, ToJSString merchantIdentifier) =>
+                   merchantIdentifier -> m Bool
+openPaymentSetup merchantIdentifier
+  = liftIO
+      ((js_openPaymentSetup (toJSString merchantIdentifier)) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.openPaymentSetup Mozilla ApplePaySession.openPaymentSetup documentation> 
+openPaymentSetup_ ::
+                  (MonadIO m, ToJSString merchantIdentifier) =>
+                    merchantIdentifier -> m ()
+openPaymentSetup_ merchantIdentifier
+  = liftIO
+      (void (js_openPaymentSetup (toJSString merchantIdentifier)))
+ 
+foreign import javascript safe "(($1) => { return $1[\"begin\"](); })" js_begin ::
+        ApplePaySession -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.begin Mozilla ApplePaySession.begin documentation> 
+begin :: (MonadIO m) => ApplePaySession -> m ()
+begin self = liftIO (js_begin self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        ApplePaySession -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.abort Mozilla ApplePaySession.abort documentation> 
+abort :: (MonadIO m) => ApplePaySession -> m ()
+abort self = liftIO (js_abort self)
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"completeMerchantValidation\"]($2); })"
+        js_completeMerchantValidation :: ApplePaySession -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeMerchantValidation Mozilla ApplePaySession.completeMerchantValidation documentation> 
+completeMerchantValidation ::
+                           (MonadIO m, ToJSVal merchantSession) =>
+                             ApplePaySession -> merchantSession -> m ()
+completeMerchantValidation self merchantSession
+  = liftIO
+      (toJSVal merchantSession >>=
+         \ merchantSession' ->
+           js_completeMerchantValidation self merchantSession')
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"completeShippingMethodSelection\"]($2); })"
+        js_completeShippingMethodSelectionUpdate ::
+        ApplePaySession -> ApplePayShippingMethodUpdate -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
+completeShippingMethodSelectionUpdate ::
+                                      (MonadIO m) =>
+                                        ApplePaySession -> ApplePayShippingMethodUpdate -> m ()
+completeShippingMethodSelectionUpdate self update
+  = liftIO (js_completeShippingMethodSelectionUpdate self update)
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"completeShippingContactSelection\"]($2); })"
+        js_completeShippingContactSelectionUpdate ::
+        ApplePaySession -> ApplePayShippingContactUpdate -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
+completeShippingContactSelectionUpdate ::
+                                       (MonadIO m) =>
+                                         ApplePaySession -> ApplePayShippingContactUpdate -> m ()
+completeShippingContactSelectionUpdate self update
+  = liftIO (js_completeShippingContactSelectionUpdate self update)
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"completePaymentMethodSelection\"]($2); })"
+        js_completePaymentMethodSelectionUpdate ::
+        ApplePaySession -> ApplePayPaymentMethodUpdate -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
+completePaymentMethodSelectionUpdate ::
+                                     (MonadIO m) =>
+                                       ApplePaySession -> ApplePayPaymentMethodUpdate -> m ()
+completePaymentMethodSelectionUpdate self update
+  = liftIO (js_completePaymentMethodSelectionUpdate self update)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"completePayment\"]($2); })"
+        js_completePaymentResult ::
+        ApplePaySession -> ApplePayPaymentAuthorizationResult -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
+completePaymentResult ::
+                      (MonadIO m) =>
+                        ApplePaySession -> ApplePayPaymentAuthorizationResult -> m ()
+completePaymentResult self result
+  = liftIO (js_completePaymentResult self result)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return $1[\"completeShippingMethodSelection\"]($2,\n$3, $4); })"
+        js_completeShippingMethodSelection ::
+        ApplePaySession -> Word -> ApplePayLineItem -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingMethodSelection Mozilla ApplePaySession.completeShippingMethodSelection documentation> 
+completeShippingMethodSelection ::
+                                (MonadIO m) =>
+                                  ApplePaySession ->
+                                    Word -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
+completeShippingMethodSelection self status newTotal newLineItems
+  = liftIO
+      (toJSVal newLineItems >>=
+         \ newLineItems' ->
+           js_completeShippingMethodSelection self status newTotal
+             newLineItems')
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"completeShippingContactSelection\"]($2,\n$3, $4, $5); })"
+        js_completeShippingContactSelection ::
+        ApplePaySession ->
+          Word -> JSVal -> ApplePayLineItem -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completeShippingContactSelection Mozilla ApplePaySession.completeShippingContactSelection documentation> 
+completeShippingContactSelection ::
+                                 (MonadIO m) =>
+                                   ApplePaySession ->
+                                     Word ->
+                                       [ApplePayShippingMethod] ->
+                                         ApplePayLineItem -> [ApplePayLineItem] -> m ()
+completeShippingContactSelection self status newShippingMethods
+  newTotal newLineItems
+  = liftIO
+      (toJSVal newLineItems >>=
+         \ newLineItems' ->
+           toJSVal newShippingMethods >>=
+             \ newShippingMethods' ->
+               js_completeShippingContactSelection self status newShippingMethods'
+             newTotal
+             newLineItems')
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"completePaymentMethodSelection\"]($2,\n$3); })"
+        js_completePaymentMethodSelection ::
+        ApplePaySession -> ApplePayLineItem -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePaymentMethodSelection Mozilla ApplePaySession.completePaymentMethodSelection documentation> 
+completePaymentMethodSelection ::
+                               (MonadIO m) =>
+                                 ApplePaySession -> ApplePayLineItem -> [ApplePayLineItem] -> m ()
+completePaymentMethodSelection self newTotal newLineItems
+  = liftIO
+      (toJSVal newLineItems >>=
+         \ newLineItems' ->
+           js_completePaymentMethodSelection self newTotal newLineItems')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"completePayment\"]($2); })"
+        js_completePayment :: ApplePaySession -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.completePayment Mozilla ApplePaySession.completePayment documentation> 
+completePayment :: (MonadIO m) => ApplePaySession -> Word -> m ()
+completePayment self status
+  = liftIO (js_completePayment self status)
+pattern STATUS_SUCCESS = 0
+pattern STATUS_FAILURE = 1
+pattern STATUS_INVALID_BILLING_POSTAL_ADDRESS = 2
+pattern STATUS_INVALID_SHIPPING_POSTAL_ADDRESS = 3
+pattern STATUS_INVALID_SHIPPING_CONTACT = 4
+pattern STATUS_PIN_REQUIRED = 5
+pattern STATUS_PIN_INCORRECT = 6
+pattern STATUS_PIN_LOCKOUT = 7
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onvalidatemerchant Mozilla ApplePaySession.onvalidatemerchant documentation> 
+validatemerchant :: EventName ApplePaySession onvalidatemerchant
+validatemerchant = unsafeEventName (toJSString "validatemerchant")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onpaymentmethodselected Mozilla ApplePaySession.onpaymentmethodselected documentation> 
+paymentmethodselected ::
+                        EventName ApplePaySession onpaymentmethodselected
+paymentmethodselected
+  = unsafeEventName (toJSString "paymentmethodselected")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onpaymentauthorized Mozilla ApplePaySession.onpaymentauthorized documentation> 
+paymentauthorized :: EventName ApplePaySession onpaymentauthorized
+paymentauthorized
+  = unsafeEventName (toJSString "paymentauthorized")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onshippingmethodselected Mozilla ApplePaySession.onshippingmethodselected documentation> 
+shippingmethodselected ::
+                         EventName ApplePaySession onshippingmethodselected
+shippingmethodselected
+  = unsafeEventName (toJSString "shippingmethodselected")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.onshippingcontactselected Mozilla ApplePaySession.onshippingcontactselected documentation> 
+shippingcontactselected ::
+                          EventName ApplePaySession onshippingcontactselected
+shippingcontactselected
+  = unsafeEventName (toJSString "shippingcontactselected")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession.oncancel Mozilla ApplePaySession.oncancel documentation> 
+cancel :: EventName ApplePaySession oncancel
+cancel = unsafeEventName (toJSString "cancel")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingContactSelectedEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayShippingContactSelectedEvent
+       (js_getShippingContact, getShippingContact,
+        ApplePayShippingContactSelectedEvent(..),
+        gTypeApplePayShippingContactSelectedEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shippingContact\"]; })"
+        js_getShippingContact ::
+        ApplePayShippingContactSelectedEvent -> IO ApplePayPaymentContact
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactSelectedEvent.shippingContact Mozilla ApplePayShippingContactSelectedEvent.shippingContact documentation> 
+getShippingContact ::
+                   (MonadIO m) =>
+                     ApplePayShippingContactSelectedEvent -> m ApplePayPaymentContact
+getShippingContact self = liftIO (js_getShippingContact self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayShippingMethodSelectedEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayShippingMethodSelectedEvent
+       (js_getShippingMethod, getShippingMethod,
+        ApplePayShippingMethodSelectedEvent(..),
+        gTypeApplePayShippingMethodSelectedEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shippingMethod\"]; })"
+        js_getShippingMethod ::
+        ApplePayShippingMethodSelectedEvent -> IO ApplePayShippingMethod
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodSelectedEvent.shippingMethod Mozilla ApplePayShippingMethodSelectedEvent.shippingMethod documentation> 
+getShippingMethod ::
+                  (MonadIO m) =>
+                    ApplePayShippingMethodSelectedEvent -> m ApplePayShippingMethod
+getShippingMethod self = liftIO (js_getShippingMethod self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplePayValidateMerchantEvent.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplePayValidateMerchantEvent
+       (js_getValidationURL, getValidationURL,
+        ApplePayValidateMerchantEvent(..),
+        gTypeApplePayValidateMerchantEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationURL\"]; })"
+        js_getValidationURL :: ApplePayValidateMerchantEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayValidateMerchantEvent.validationURL Mozilla ApplePayValidateMerchantEvent.validationURL documentation> 
+getValidationURL ::
+                 (MonadIO m, FromJSString result) =>
+                   ApplePayValidateMerchantEvent -> m result
+getValidationURL self
+  = liftIO (fromJSString <$> (js_getValidationURL self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs b/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ApplicationCache.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ApplicationCache
+       (js_update, update, js_swapCache, swapCache, js_abort, abort,
+        pattern UNCACHED, pattern IDLE, pattern CHECKING,
+        pattern DOWNLOADING, pattern UPDATEREADY, pattern OBSOLETE,
+        js_getStatus, getStatus, checking, error, noUpdate, downloading,
+        progress, updateReady, cached, obsolete, ApplicationCache(..),
+        gTypeApplicationCache)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"update\"](); })" js_update ::
+        ApplicationCache -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.update Mozilla ApplicationCache.update documentation> 
+update :: (MonadIO m) => ApplicationCache -> m ()
+update self = liftIO (js_update self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"swapCache\"](); })" js_swapCache
+        :: ApplicationCache -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.swapCache Mozilla ApplicationCache.swapCache documentation> 
+swapCache :: (MonadIO m) => ApplicationCache -> m ()
+swapCache self = liftIO (js_swapCache self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        ApplicationCache -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.abort Mozilla ApplicationCache.abort documentation> 
+abort :: (MonadIO m) => ApplicationCache -> m ()
+abort self = liftIO (js_abort self)
+pattern UNCACHED = 0
+pattern IDLE = 1
+pattern CHECKING = 2
+pattern DOWNLOADING = 3
+pattern UPDATEREADY = 4
+pattern OBSOLETE = 5
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        ApplicationCache -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.status Mozilla ApplicationCache.status documentation> 
+getStatus :: (MonadIO m) => ApplicationCache -> m Word
+getStatus self = liftIO (js_getStatus self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onchecking Mozilla ApplicationCache.onchecking documentation> 
+checking :: EventName ApplicationCache Event
+checking = unsafeEventName (toJSString "checking")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onerror Mozilla ApplicationCache.onerror documentation> 
+error :: EventName ApplicationCache UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onnoupdate Mozilla ApplicationCache.onnoupdate documentation> 
+noUpdate :: EventName ApplicationCache Event
+noUpdate = unsafeEventName (toJSString "noupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.ondownloading Mozilla ApplicationCache.ondownloading documentation> 
+downloading :: EventName ApplicationCache Event
+downloading = unsafeEventName (toJSString "downloading")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onprogress Mozilla ApplicationCache.onprogress documentation> 
+progress :: EventName ApplicationCache ProgressEvent
+progress = unsafeEventNameAsync (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onupdateready Mozilla ApplicationCache.onupdateready documentation> 
+updateReady :: EventName ApplicationCache Event
+updateReady = unsafeEventName (toJSString "updateready")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.oncached Mozilla ApplicationCache.oncached documentation> 
+cached :: EventName ApplicationCache Event
+cached = unsafeEventName (toJSString "cached")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache.onobsolete Mozilla ApplicationCache.onobsolete documentation> 
+obsolete :: EventName ApplicationCache Event
+obsolete = unsafeEventName (toJSString "obsolete")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Attr.hs b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Attr.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Attr
+       (js_getNamespaceURI, getNamespaceURI, getNamespaceURIUnsafe,
+        getNamespaceURIUnchecked, js_getPrefix, getPrefix, getPrefixUnsafe,
+        getPrefixUnchecked, js_getLocalName, getLocalName, js_getName,
+        getName, js_setValue, setValue, js_getValue, getValue,
+        js_getOwnerElement, getOwnerElement, getOwnerElementUnsafe,
+        getOwnerElementUnchecked, js_getSpecified, getSpecified, Attr(..),
+        gTypeAttr)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
+        js_getNamespaceURI :: Attr -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
+getNamespaceURI ::
+                (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
+getNamespaceURI self
+  = liftIO (fromMaybeJSString <$> (js_getNamespaceURI self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
+getNamespaceURIUnsafe ::
+                      (MonadIO m, HasCallStack, FromJSString result) => Attr -> m result
+getNamespaceURIUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getNamespaceURI self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.namespaceURI Mozilla Attr.namespaceURI documentation> 
+getNamespaceURIUnchecked ::
+                         (MonadIO m, FromJSString result) => Attr -> m result
+getNamespaceURIUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getNamespaceURI self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
+        Attr -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
+getPrefix ::
+          (MonadIO m, FromJSString result) => Attr -> m (Maybe result)
+getPrefix self = liftIO (fromMaybeJSString <$> (js_getPrefix self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
+getPrefixUnsafe ::
+                (MonadIO m, HasCallStack, FromJSString result) => Attr -> m result
+getPrefixUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getPrefix self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.prefix Mozilla Attr.prefix documentation> 
+getPrefixUnchecked ::
+                   (MonadIO m, FromJSString result) => Attr -> m result
+getPrefixUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getPrefix self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"localName\"]; })"
+        js_getLocalName :: Attr -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.localName Mozilla Attr.localName documentation> 
+getLocalName ::
+             (MonadIO m, FromJSString result) => Attr -> m result
+getLocalName self
+  = liftIO (fromJSString <$> (js_getLocalName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        Attr -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.name Mozilla Attr.name documentation> 
+getName :: (MonadIO m, FromJSString result) => Attr -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: Attr -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+setValue :: (MonadIO m, ToJSString val) => Attr -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        Attr -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.value Mozilla Attr.value documentation> 
+getValue :: (MonadIO m, FromJSString result) => Attr -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ownerElement\"]; })"
+        js_getOwnerElement :: Attr -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+getOwnerElement :: (MonadIO m) => Attr -> m (Maybe Element)
+getOwnerElement self
+  = liftIO (nullableToMaybe <$> (js_getOwnerElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+getOwnerElementUnsafe ::
+                      (MonadIO m, HasCallStack) => Attr -> m Element
+getOwnerElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getOwnerElement self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.ownerElement Mozilla Attr.ownerElement documentation> 
+getOwnerElementUnchecked :: (MonadIO m) => Attr -> m Element
+getOwnerElementUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getOwnerElement self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"specified\"] ? 1 : 0); })"
+        js_getSpecified :: Attr -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Attr.specified Mozilla Attr.specified documentation> 
+getSpecified :: (MonadIO m) => Attr -> m Bool
+getSpecified self = liftIO (js_getSpecified self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBuffer.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioBuffer
+       (js_getChannelData, getChannelData, getChannelData_, js_getLength,
+        getLength, js_getDuration, getDuration, js_getSampleRate,
+        getSampleRate, js_setGain, setGain, js_getGain, getGain,
+        js_getNumberOfChannels, getNumberOfChannels, AudioBuffer(..),
+        gTypeAudioBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getChannelData\"]($2); })"
+        js_getChannelData :: AudioBuffer -> Word -> IO Float32Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
+getChannelData ::
+               (MonadIO m) => AudioBuffer -> Word -> m Float32Array
+getChannelData self channelIndex
+  = liftIO (js_getChannelData self channelIndex)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.getChannelData Mozilla AudioBuffer.getChannelData documentation> 
+getChannelData_ :: (MonadIO m) => AudioBuffer -> Word -> m ()
+getChannelData_ self channelIndex
+  = liftIO (void (js_getChannelData self channelIndex))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        AudioBuffer -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.length Mozilla AudioBuffer.length documentation> 
+getLength :: (MonadIO m) => AudioBuffer -> m Int
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: AudioBuffer -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.duration Mozilla AudioBuffer.duration documentation> 
+getDuration :: (MonadIO m) => AudioBuffer -> m Float
+getDuration self = liftIO (js_getDuration self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioBuffer -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.sampleRate Mozilla AudioBuffer.sampleRate documentation> 
+getSampleRate :: (MonadIO m) => AudioBuffer -> m Float
+getSampleRate self = liftIO (js_getSampleRate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"gain\"] = $2; })" js_setGain ::
+        AudioBuffer -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
+setGain :: (MonadIO m) => AudioBuffer -> Float -> m ()
+setGain self val = liftIO (js_setGain self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
+        AudioBuffer -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.gain Mozilla AudioBuffer.gain documentation> 
+getGain :: (MonadIO m) => AudioBuffer -> m Float
+getGain self = liftIO (js_getGain self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfChannels\"]; })"
+        js_getNumberOfChannels :: AudioBuffer -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer.numberOfChannels Mozilla AudioBuffer.numberOfChannels documentation> 
+getNumberOfChannels :: (MonadIO m) => AudioBuffer -> m Word
+getNumberOfChannels self = liftIO (js_getNumberOfChannels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferCallback.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioBufferCallback
+       (newAudioBufferCallback, newAudioBufferCallbackSync,
+        newAudioBufferCallbackAsync, AudioBufferCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallback ::
+                       (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
+newAudioBufferCallback callback
+  = liftIO
+      (AudioBufferCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ audioBuffer ->
+              fromJSValUnchecked audioBuffer >>=
+                \ audioBuffer' -> callback audioBuffer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallbackSync ::
+                           (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
+newAudioBufferCallbackSync callback
+  = liftIO
+      (AudioBufferCallback <$>
+         syncCallback1 ContinueAsync
+           (\ audioBuffer ->
+              fromJSValUnchecked audioBuffer >>=
+                \ audioBuffer' -> callback audioBuffer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferCallback Mozilla AudioBufferCallback documentation> 
+newAudioBufferCallbackAsync ::
+                            (MonadIO m) => (AudioBuffer -> IO ()) -> m AudioBufferCallback
+newAudioBufferCallbackAsync callback
+  = liftIO
+      (AudioBufferCallback <$>
+         asyncCallback1
+           (\ audioBuffer ->
+              fromJSValUnchecked audioBuffer >>=
+                \ audioBuffer' -> callback audioBuffer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioBufferSourceNode.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioBufferSourceNode
+       (js_start, start, js_stop, stop, pattern UNSCHEDULED_STATE,
+        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
+        pattern FINISHED_STATE, js_setBuffer, setBuffer, js_getBuffer,
+        getBuffer, getBufferUnsafe, getBufferUnchecked,
+        js_getPlaybackState, getPlaybackState, js_getGain, getGain,
+        js_getPlaybackRate, getPlaybackRate, js_setLoop, setLoop,
+        js_getLoop, getLoop, js_setLoopStart, setLoopStart,
+        js_getLoopStart, getLoopStart, js_setLoopEnd, setLoopEnd,
+        js_getLoopEnd, getLoopEnd, ended, AudioBufferSourceNode(..),
+        gTypeAudioBufferSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"start\"]($2, $3, $4); })" js_start
+        ::
+        AudioBufferSourceNode ->
+          Optional Double -> Optional Double -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.start Mozilla AudioBufferSourceNode.start documentation> 
+start ::
+      (MonadIO m) =>
+        AudioBufferSourceNode ->
+          Maybe Double -> Maybe Double -> Maybe Double -> m ()
+start self when grainOffset grainDuration
+  = liftIO
+      (js_start self (maybeToOptional when) (maybeToOptional grainOffset)
+         (maybeToOptional grainDuration))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"stop\"]($2); })" js_stop ::
+        AudioBufferSourceNode -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.stop Mozilla AudioBufferSourceNode.stop documentation> 
+stop ::
+     (MonadIO m) => AudioBufferSourceNode -> Maybe Double -> m ()
+stop self when = liftIO (js_stop self (maybeToOptional when))
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"buffer\"] = $2; })"
+        js_setBuffer ::
+        AudioBufferSourceNode -> Optional AudioBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+setBuffer ::
+          (MonadIO m) => AudioBufferSourceNode -> Maybe AudioBuffer -> m ()
+setBuffer self val
+  = liftIO (js_setBuffer self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })" js_getBuffer ::
+        AudioBufferSourceNode -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+getBuffer ::
+          (MonadIO m) => AudioBufferSourceNode -> m (Maybe AudioBuffer)
+getBuffer self = liftIO (nullableToMaybe <$> (js_getBuffer self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+getBufferUnsafe ::
+                (MonadIO m, HasCallStack) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBuffer self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.buffer Mozilla AudioBufferSourceNode.buffer documentation> 
+getBufferUnchecked ::
+                   (MonadIO m) => AudioBufferSourceNode -> m AudioBuffer
+getBufferUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getBuffer self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
+        js_getPlaybackState :: AudioBufferSourceNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackState Mozilla AudioBufferSourceNode.playbackState documentation> 
+getPlaybackState :: (MonadIO m) => AudioBufferSourceNode -> m Word
+getPlaybackState self = liftIO (js_getPlaybackState self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
+        AudioBufferSourceNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.gain Mozilla AudioBufferSourceNode.gain documentation> 
+getGain :: (MonadIO m) => AudioBufferSourceNode -> m AudioParam
+getGain self = liftIO (js_getGain self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: AudioBufferSourceNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.playbackRate Mozilla AudioBufferSourceNode.playbackRate documentation> 
+getPlaybackRate ::
+                (MonadIO m) => AudioBufferSourceNode -> m AudioParam
+getPlaybackRate self = liftIO (js_getPlaybackRate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
+        AudioBufferSourceNode -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+setLoop :: (MonadIO m) => AudioBufferSourceNode -> Bool -> m ()
+setLoop self val = liftIO (js_setLoop self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"loop\"] ? 1 : 0); })"
+        js_getLoop :: AudioBufferSourceNode -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loop Mozilla AudioBufferSourceNode.loop documentation> 
+getLoop :: (MonadIO m) => AudioBufferSourceNode -> m Bool
+getLoop self = liftIO (js_getLoop self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"loopStart\"] = $2; })"
+        js_setLoopStart :: AudioBufferSourceNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
+setLoopStart ::
+             (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
+setLoopStart self val = liftIO (js_setLoopStart self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loopStart\"]; })"
+        js_getLoopStart :: AudioBufferSourceNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopStart Mozilla AudioBufferSourceNode.loopStart documentation> 
+getLoopStart :: (MonadIO m) => AudioBufferSourceNode -> m Double
+getLoopStart self = liftIO (js_getLoopStart self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"loopEnd\"] = $2; })"
+        js_setLoopEnd :: AudioBufferSourceNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
+setLoopEnd ::
+           (MonadIO m) => AudioBufferSourceNode -> Double -> m ()
+setLoopEnd self val = liftIO (js_setLoopEnd self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loopEnd\"]; })" js_getLoopEnd ::
+        AudioBufferSourceNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.loopEnd Mozilla AudioBufferSourceNode.loopEnd documentation> 
+getLoopEnd :: (MonadIO m) => AudioBufferSourceNode -> m Double
+getLoopEnd self = liftIO (js_getLoopEnd self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode.onended Mozilla AudioBufferSourceNode.onended documentation> 
+ended :: EventName AudioBufferSourceNode Event
+ended = unsafeEventName (toJSString "ended")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioContext.hs
@@ -0,0 +1,552 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioContext
+       (js_newAudioContext, newAudioContext, js_suspend, suspend,
+        js_resume, resume, js_close, close, js_createBuffer, createBuffer,
+        createBuffer_, js_createBufferFromArrayBuffer,
+        createBufferFromArrayBuffer, createBufferFromArrayBuffer_,
+        js_decodeAudioData, decodeAudioData, js_createBufferSource,
+        createBufferSource, createBufferSource_,
+        js_createMediaElementSource, createMediaElementSource,
+        createMediaElementSource_, js_createMediaStreamSource,
+        createMediaStreamSource, createMediaStreamSource_,
+        js_createMediaStreamDestination, createMediaStreamDestination,
+        createMediaStreamDestination_, js_createGain, createGain,
+        createGain_, js_createDelay, createDelay, createDelay_,
+        js_createBiquadFilter, createBiquadFilter, createBiquadFilter_,
+        js_createWaveShaper, createWaveShaper, createWaveShaper_,
+        js_createPanner, createPanner, createPanner_, js_createConvolver,
+        createConvolver, createConvolver_, js_createDynamicsCompressor,
+        createDynamicsCompressor, createDynamicsCompressor_,
+        js_createAnalyser, createAnalyser, createAnalyser_,
+        js_createScriptProcessor, createScriptProcessor,
+        createScriptProcessor_, js_createOscillator, createOscillator,
+        createOscillator_, js_createPeriodicWave, createPeriodicWave,
+        createPeriodicWave_, js_createChannelSplitter,
+        createChannelSplitter, createChannelSplitter_,
+        js_createChannelMerger, createChannelMerger, createChannelMerger_,
+        js_startRendering, startRendering, js_getDestination,
+        getDestination, js_getCurrentTime, getCurrentTime,
+        js_getSampleRate, getSampleRate, js_getListener, getListener,
+        js_getState, getState, statechange, js_getActiveSourceCount,
+        getActiveSourceCount, complete, AudioContext(..),
+        gTypeAudioContext, IsAudioContext, toAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new (window[\"AudioContext\"]\n||\nwindow[\"webkitAudioContext\"])(); })"
+        js_newAudioContext :: IO AudioContext
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation> 
+newAudioContext :: (MonadIO m) => m AudioContext
+newAudioContext = liftIO (js_newAudioContext)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"suspend\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_suspend :: AudioContext -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.suspend Mozilla AudioContext.suspend documentation> 
+suspend :: (MonadIO m, IsAudioContext self) => self -> m ()
+suspend self
+  = liftIO
+      ((js_suspend (toAudioContext self)) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"resume\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_resume :: AudioContext -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.resume Mozilla AudioContext.resume documentation> 
+resume :: (MonadIO m, IsAudioContext self) => self -> m ()
+resume self
+  = liftIO
+      ((js_resume (toAudioContext self)) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: AudioContext -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.close Mozilla AudioContext.close documentation> 
+close :: (MonadIO m, IsAudioContext self) => self -> m ()
+close self
+  = liftIO
+      ((js_close (toAudioContext self)) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createBuffer\"]($2, $3, $4); })"
+        js_createBuffer ::
+        AudioContext -> Word -> Word -> Float -> IO AudioBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBuffer ::
+             (MonadIO m, IsAudioContext self) =>
+               self -> Word -> Word -> Float -> m AudioBuffer
+createBuffer self numberOfChannels numberOfFrames sampleRate
+  = liftIO
+      (js_createBuffer (toAudioContext self) numberOfChannels
+         numberOfFrames
+         sampleRate)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBuffer_ ::
+              (MonadIO m, IsAudioContext self) =>
+                self -> Word -> Word -> Float -> m ()
+createBuffer_ self numberOfChannels numberOfFrames sampleRate
+  = liftIO
+      (void
+         (js_createBuffer (toAudioContext self) numberOfChannels
+            numberOfFrames
+            sampleRate))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createBuffer\"]($2, $3); })"
+        js_createBufferFromArrayBuffer ::
+        AudioContext -> ArrayBuffer -> Bool -> IO AudioBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferFromArrayBuffer ::
+                            (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) =>
+                              self -> buffer -> Bool -> m AudioBuffer
+createBufferFromArrayBuffer self buffer mixToMono
+  = liftIO
+      (js_createBufferFromArrayBuffer (toAudioContext self)
+         (toArrayBuffer buffer)
+         mixToMono)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBuffer Mozilla AudioContext.createBuffer documentation> 
+createBufferFromArrayBuffer_ ::
+                             (MonadIO m, IsAudioContext self, IsArrayBuffer buffer) =>
+                               self -> buffer -> Bool -> m ()
+createBufferFromArrayBuffer_ self buffer mixToMono
+  = liftIO
+      (void
+         (js_createBufferFromArrayBuffer (toAudioContext self)
+            (toArrayBuffer buffer)
+            mixToMono))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"decodeAudioData\"]($2, $3,\n$4); })" js_decodeAudioData ::
+        AudioContext ->
+          ArrayBuffer ->
+            Optional AudioBufferCallback ->
+              Optional AudioBufferCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.decodeAudioData Mozilla AudioContext.decodeAudioData documentation> 
+decodeAudioData ::
+                (MonadIO m, IsAudioContext self, IsArrayBuffer audioData) =>
+                  self ->
+                    audioData ->
+                      Maybe AudioBufferCallback -> Maybe AudioBufferCallback -> m ()
+decodeAudioData self audioData successCallback errorCallback
+  = liftIO
+      (js_decodeAudioData (toAudioContext self) (toArrayBuffer audioData)
+         (maybeToOptional successCallback)
+         (maybeToOptional errorCallback))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createBufferSource\"](); })"
+        js_createBufferSource :: AudioContext -> IO AudioBufferSourceNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
+createBufferSource ::
+                   (MonadIO m, IsAudioContext self) => self -> m AudioBufferSourceNode
+createBufferSource self
+  = liftIO (js_createBufferSource (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBufferSource Mozilla AudioContext.createBufferSource documentation> 
+createBufferSource_ ::
+                    (MonadIO m, IsAudioContext self) => self -> m ()
+createBufferSource_ self
+  = liftIO (void (js_createBufferSource (toAudioContext self)))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"createMediaElementSource\"]($2); })" js_createMediaElementSource
+        ::
+        AudioContext -> HTMLMediaElement -> IO MediaElementAudioSourceNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
+createMediaElementSource ::
+                         (MonadIO m, IsAudioContext self,
+                          IsHTMLMediaElement mediaElement) =>
+                           self -> mediaElement -> m MediaElementAudioSourceNode
+createMediaElementSource self mediaElement
+  = liftIO
+      (js_createMediaElementSource (toAudioContext self)
+         (toHTMLMediaElement mediaElement))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaElementSource Mozilla AudioContext.createMediaElementSource documentation> 
+createMediaElementSource_ ::
+                          (MonadIO m, IsAudioContext self,
+                           IsHTMLMediaElement mediaElement) =>
+                            self -> mediaElement -> m ()
+createMediaElementSource_ self mediaElement
+  = liftIO
+      (void
+         (js_createMediaElementSource (toAudioContext self)
+            (toHTMLMediaElement mediaElement)))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"createMediaStreamSource\"]($2); })" js_createMediaStreamSource ::
+        AudioContext -> MediaStream -> IO MediaStreamAudioSourceNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
+createMediaStreamSource ::
+                        (MonadIO m, IsAudioContext self) =>
+                          self -> MediaStream -> m MediaStreamAudioSourceNode
+createMediaStreamSource self mediaStream
+  = liftIO
+      (js_createMediaStreamSource (toAudioContext self) mediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamSource Mozilla AudioContext.createMediaStreamSource documentation> 
+createMediaStreamSource_ ::
+                         (MonadIO m, IsAudioContext self) => self -> MediaStream -> m ()
+createMediaStreamSource_ self mediaStream
+  = liftIO
+      (void
+         (js_createMediaStreamSource (toAudioContext self) mediaStream))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"createMediaStreamDestination\"](); })"
+        js_createMediaStreamDestination ::
+        AudioContext -> IO MediaStreamAudioDestinationNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
+createMediaStreamDestination ::
+                             (MonadIO m, IsAudioContext self) =>
+                               self -> m MediaStreamAudioDestinationNode
+createMediaStreamDestination self
+  = liftIO (js_createMediaStreamDestination (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createMediaStreamDestination Mozilla AudioContext.createMediaStreamDestination documentation> 
+createMediaStreamDestination_ ::
+                              (MonadIO m, IsAudioContext self) => self -> m ()
+createMediaStreamDestination_ self
+  = liftIO
+      (void (js_createMediaStreamDestination (toAudioContext self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createGain\"](); })"
+        js_createGain :: AudioContext -> IO GainNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
+createGain ::
+           (MonadIO m, IsAudioContext self) => self -> m GainNode
+createGain self = liftIO (js_createGain (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createGain Mozilla AudioContext.createGain documentation> 
+createGain_ :: (MonadIO m, IsAudioContext self) => self -> m ()
+createGain_ self
+  = liftIO (void (js_createGain (toAudioContext self)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createDelay\"]($2); })"
+        js_createDelay :: AudioContext -> Optional Double -> IO DelayNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
+createDelay ::
+            (MonadIO m, IsAudioContext self) =>
+              self -> Maybe Double -> m DelayNode
+createDelay self maxDelayTime
+  = liftIO
+      (js_createDelay (toAudioContext self)
+         (maybeToOptional maxDelayTime))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDelay Mozilla AudioContext.createDelay documentation> 
+createDelay_ ::
+             (MonadIO m, IsAudioContext self) => self -> Maybe Double -> m ()
+createDelay_ self maxDelayTime
+  = liftIO
+      (void
+         (js_createDelay (toAudioContext self)
+            (maybeToOptional maxDelayTime)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createBiquadFilter\"](); })"
+        js_createBiquadFilter :: AudioContext -> IO BiquadFilterNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
+createBiquadFilter ::
+                   (MonadIO m, IsAudioContext self) => self -> m BiquadFilterNode
+createBiquadFilter self
+  = liftIO (js_createBiquadFilter (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createBiquadFilter Mozilla AudioContext.createBiquadFilter documentation> 
+createBiquadFilter_ ::
+                    (MonadIO m, IsAudioContext self) => self -> m ()
+createBiquadFilter_ self
+  = liftIO (void (js_createBiquadFilter (toAudioContext self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createWaveShaper\"](); })"
+        js_createWaveShaper :: AudioContext -> IO WaveShaperNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
+createWaveShaper ::
+                 (MonadIO m, IsAudioContext self) => self -> m WaveShaperNode
+createWaveShaper self
+  = liftIO (js_createWaveShaper (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createWaveShaper Mozilla AudioContext.createWaveShaper documentation> 
+createWaveShaper_ ::
+                  (MonadIO m, IsAudioContext self) => self -> m ()
+createWaveShaper_ self
+  = liftIO (void (js_createWaveShaper (toAudioContext self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createPanner\"](); })"
+        js_createPanner :: AudioContext -> IO PannerNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
+createPanner ::
+             (MonadIO m, IsAudioContext self) => self -> m PannerNode
+createPanner self = liftIO (js_createPanner (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPanner Mozilla AudioContext.createPanner documentation> 
+createPanner_ :: (MonadIO m, IsAudioContext self) => self -> m ()
+createPanner_ self
+  = liftIO (void (js_createPanner (toAudioContext self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createConvolver\"](); })"
+        js_createConvolver :: AudioContext -> IO ConvolverNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
+createConvolver ::
+                (MonadIO m, IsAudioContext self) => self -> m ConvolverNode
+createConvolver self
+  = liftIO (js_createConvolver (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createConvolver Mozilla AudioContext.createConvolver documentation> 
+createConvolver_ ::
+                 (MonadIO m, IsAudioContext self) => self -> m ()
+createConvolver_ self
+  = liftIO (void (js_createConvolver (toAudioContext self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"createDynamicsCompressor\"](); })" js_createDynamicsCompressor ::
+        AudioContext -> IO DynamicsCompressorNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
+createDynamicsCompressor ::
+                         (MonadIO m, IsAudioContext self) =>
+                           self -> m DynamicsCompressorNode
+createDynamicsCompressor self
+  = liftIO (js_createDynamicsCompressor (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createDynamicsCompressor Mozilla AudioContext.createDynamicsCompressor documentation> 
+createDynamicsCompressor_ ::
+                          (MonadIO m, IsAudioContext self) => self -> m ()
+createDynamicsCompressor_ self
+  = liftIO (void (js_createDynamicsCompressor (toAudioContext self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createAnalyser\"](); })"
+        js_createAnalyser :: AudioContext -> IO AnalyserNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
+createAnalyser ::
+               (MonadIO m, IsAudioContext self) => self -> m AnalyserNode
+createAnalyser self
+  = liftIO (js_createAnalyser (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createAnalyser Mozilla AudioContext.createAnalyser documentation> 
+createAnalyser_ :: (MonadIO m, IsAudioContext self) => self -> m ()
+createAnalyser_ self
+  = liftIO (void (js_createAnalyser (toAudioContext self)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return $1[\"createScriptProcessor\"]($2,\n$3, $4); })"
+        js_createScriptProcessor ::
+        AudioContext ->
+          Word -> Optional Word -> Optional Word -> IO ScriptProcessorNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
+createScriptProcessor ::
+                      (MonadIO m, IsAudioContext self) =>
+                        self -> Word -> Maybe Word -> Maybe Word -> m ScriptProcessorNode
+createScriptProcessor self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftIO
+      (js_createScriptProcessor (toAudioContext self) bufferSize
+         (maybeToOptional numberOfInputChannels)
+         (maybeToOptional numberOfOutputChannels))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createScriptProcessor Mozilla AudioContext.createScriptProcessor documentation> 
+createScriptProcessor_ ::
+                       (MonadIO m, IsAudioContext self) =>
+                         self -> Word -> Maybe Word -> Maybe Word -> m ()
+createScriptProcessor_ self bufferSize numberOfInputChannels
+  numberOfOutputChannels
+  = liftIO
+      (void
+         (js_createScriptProcessor (toAudioContext self) bufferSize
+            (maybeToOptional numberOfInputChannels)
+            (maybeToOptional numberOfOutputChannels)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createOscillator\"](); })"
+        js_createOscillator :: AudioContext -> IO OscillatorNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
+createOscillator ::
+                 (MonadIO m, IsAudioContext self) => self -> m OscillatorNode
+createOscillator self
+  = liftIO (js_createOscillator (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createOscillator Mozilla AudioContext.createOscillator documentation> 
+createOscillator_ ::
+                  (MonadIO m, IsAudioContext self) => self -> m ()
+createOscillator_ self
+  = liftIO (void (js_createOscillator (toAudioContext self)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPeriodicWave\"]($2, $3); })"
+        js_createPeriodicWave ::
+        AudioContext -> Float32Array -> Float32Array -> IO PeriodicWave
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
+createPeriodicWave ::
+                   (MonadIO m, IsAudioContext self, IsFloat32Array real,
+                    IsFloat32Array imag) =>
+                     self -> real -> imag -> m PeriodicWave
+createPeriodicWave self real imag
+  = liftIO
+      (js_createPeriodicWave (toAudioContext self) (toFloat32Array real)
+         (toFloat32Array imag))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createPeriodicWave Mozilla AudioContext.createPeriodicWave documentation> 
+createPeriodicWave_ ::
+                    (MonadIO m, IsAudioContext self, IsFloat32Array real,
+                     IsFloat32Array imag) =>
+                      self -> real -> imag -> m ()
+createPeriodicWave_ self real imag
+  = liftIO
+      (void
+         (js_createPeriodicWave (toAudioContext self) (toFloat32Array real)
+            (toFloat32Array imag)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createChannelSplitter\"]($2); })"
+        js_createChannelSplitter ::
+        AudioContext -> Optional Word -> IO ChannelSplitterNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
+createChannelSplitter ::
+                      (MonadIO m, IsAudioContext self) =>
+                        self -> Maybe Word -> m ChannelSplitterNode
+createChannelSplitter self numberOfOutputs
+  = liftIO
+      (js_createChannelSplitter (toAudioContext self)
+         (maybeToOptional numberOfOutputs))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelSplitter Mozilla AudioContext.createChannelSplitter documentation> 
+createChannelSplitter_ ::
+                       (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ()
+createChannelSplitter_ self numberOfOutputs
+  = liftIO
+      (void
+         (js_createChannelSplitter (toAudioContext self)
+            (maybeToOptional numberOfOutputs)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createChannelMerger\"]($2); })"
+        js_createChannelMerger ::
+        AudioContext -> Optional Word -> IO ChannelMergerNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
+createChannelMerger ::
+                    (MonadIO m, IsAudioContext self) =>
+                      self -> Maybe Word -> m ChannelMergerNode
+createChannelMerger self numberOfInputs
+  = liftIO
+      (js_createChannelMerger (toAudioContext self)
+         (maybeToOptional numberOfInputs))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.createChannelMerger Mozilla AudioContext.createChannelMerger documentation> 
+createChannelMerger_ ::
+                     (MonadIO m, IsAudioContext self) => self -> Maybe Word -> m ()
+createChannelMerger_ self numberOfInputs
+  = liftIO
+      (void
+         (js_createChannelMerger (toAudioContext self)
+            (maybeToOptional numberOfInputs)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startRendering\"](); })"
+        js_startRendering :: AudioContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.startRendering Mozilla AudioContext.startRendering documentation> 
+startRendering :: (MonadIO m, IsAudioContext self) => self -> m ()
+startRendering self
+  = liftIO (js_startRendering (toAudioContext self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
+        js_getDestination :: AudioContext -> IO AudioDestinationNode
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.destination Mozilla AudioContext.destination documentation> 
+getDestination ::
+               (MonadIO m, IsAudioContext self) => self -> m AudioDestinationNode
+getDestination self
+  = liftIO (js_getDestination (toAudioContext self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: AudioContext -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.currentTime Mozilla AudioContext.currentTime documentation> 
+getCurrentTime ::
+               (MonadIO m, IsAudioContext self) => self -> m Double
+getCurrentTime self
+  = liftIO (js_getCurrentTime (toAudioContext self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sampleRate\"]; })"
+        js_getSampleRate :: AudioContext -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.sampleRate Mozilla AudioContext.sampleRate documentation> 
+getSampleRate ::
+              (MonadIO m, IsAudioContext self) => self -> m Float
+getSampleRate self
+  = liftIO (js_getSampleRate (toAudioContext self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"listener\"]; })" js_getListener
+        :: AudioContext -> IO AudioListener
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.listener Mozilla AudioContext.listener documentation> 
+getListener ::
+            (MonadIO m, IsAudioContext self) => self -> m AudioListener
+getListener self = liftIO (js_getListener (toAudioContext self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
+        AudioContext -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.state Mozilla AudioContext.state documentation> 
+getState ::
+         (MonadIO m, IsAudioContext self) => self -> m AudioContextState
+getState self
+  = liftIO
+      ((js_getState (toAudioContext self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.onstatechange Mozilla AudioContext.onstatechange documentation> 
+statechange ::
+            (IsAudioContext self, IsEventTarget self) =>
+              EventName self onstatechange
+statechange = unsafeEventName (toJSString "statechange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"activeSourceCount\"]; })"
+        js_getActiveSourceCount :: AudioContext -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.activeSourceCount Mozilla AudioContext.activeSourceCount documentation> 
+getActiveSourceCount ::
+                     (MonadIO m, IsAudioContext self) => self -> m Word
+getActiveSourceCount self
+  = liftIO (js_getActiveSourceCount (toAudioContext self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext.oncomplete Mozilla AudioContext.oncomplete documentation> 
+complete ::
+         (IsAudioContext self, IsEventTarget self) =>
+           EventName self OfflineAudioCompletionEvent
+complete = unsafeEventName (toJSString "complete")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioDestinationNode.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioDestinationNode
+       (js_getMaxChannelCount, getMaxChannelCount,
+        AudioDestinationNode(..), gTypeAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxChannelCount\"]; })"
+        js_getMaxChannelCount :: AudioDestinationNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode.maxChannelCount Mozilla AudioDestinationNode.maxChannelCount documentation> 
+getMaxChannelCount :: (MonadIO m) => AudioDestinationNode -> m Word
+getMaxChannelCount self = liftIO (js_getMaxChannelCount self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioListener.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioListener
+       (js_setPosition, setPosition, js_setOrientation, setOrientation,
+        js_setVelocity, setVelocity, js_setDopplerFactor, setDopplerFactor,
+        js_getDopplerFactor, getDopplerFactor, js_setSpeedOfSound,
+        setSpeedOfSound, js_getSpeedOfSound, getSpeedOfSound,
+        AudioListener(..), gTypeAudioListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
+        js_setPosition :: AudioListener -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setPosition Mozilla AudioListener.setPosition documentation> 
+setPosition ::
+            (MonadIO m) => AudioListener -> Float -> Float -> Float -> m ()
+setPosition self x y z = liftIO (js_setPosition self x y z)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setOrientation\"]($2, $3, $4,\n$5, $6, $7); })" js_setOrientation
+        ::
+        AudioListener ->
+          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setOrientation Mozilla AudioListener.setOrientation documentation> 
+setOrientation ::
+               (MonadIO m) =>
+                 AudioListener ->
+                   Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setOrientation self x y z xUp yUp zUp
+  = liftIO (js_setOrientation self x y z xUp yUp zUp)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setVelocity\"]($2, $3, $4); })"
+        js_setVelocity :: AudioListener -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.setVelocity Mozilla AudioListener.setVelocity documentation> 
+setVelocity ::
+            (MonadIO m) => AudioListener -> Float -> Float -> Float -> m ()
+setVelocity self x y z = liftIO (js_setVelocity self x y z)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dopplerFactor\"] = $2; })"
+        js_setDopplerFactor :: AudioListener -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
+setDopplerFactor :: (MonadIO m) => AudioListener -> Float -> m ()
+setDopplerFactor self val = liftIO (js_setDopplerFactor self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dopplerFactor\"]; })"
+        js_getDopplerFactor :: AudioListener -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.dopplerFactor Mozilla AudioListener.dopplerFactor documentation> 
+getDopplerFactor :: (MonadIO m) => AudioListener -> m Float
+getDopplerFactor self = liftIO (js_getDopplerFactor self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"speedOfSound\"] = $2; })"
+        js_setSpeedOfSound :: AudioListener -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
+setSpeedOfSound :: (MonadIO m) => AudioListener -> Float -> m ()
+setSpeedOfSound self val = liftIO (js_setSpeedOfSound self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"speedOfSound\"]; })"
+        js_getSpeedOfSound :: AudioListener -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener.speedOfSound Mozilla AudioListener.speedOfSound documentation> 
+getSpeedOfSound :: (MonadIO m) => AudioListener -> m Float
+getSpeedOfSound self = liftIO (js_getSpeedOfSound self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioNode.hs
@@ -0,0 +1,159 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioNode
+       (js_connect, connect, js_connectParam, connectParam, js_disconnect,
+        disconnect, js_getContext, getContext, js_getNumberOfInputs,
+        getNumberOfInputs, js_getNumberOfOutputs, getNumberOfOutputs,
+        js_setChannelCount, setChannelCount, js_getChannelCount,
+        getChannelCount, js_setChannelCountMode, setChannelCountMode,
+        js_getChannelCountMode, getChannelCountMode,
+        js_setChannelInterpretation, setChannelInterpretation,
+        js_getChannelInterpretation, getChannelInterpretation,
+        AudioNode(..), gTypeAudioNode, IsAudioNode, toAudioNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"connect\"]($2, $3, $4); })"
+        js_connect ::
+        AudioNode -> AudioNode -> Optional Word -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
+connect ::
+        (MonadIO m, IsAudioNode self, IsAudioNode destination) =>
+          self -> destination -> Maybe Word -> Maybe Word -> m ()
+connect self destination output input
+  = liftIO
+      (js_connect (toAudioNode self) (toAudioNode destination)
+         (maybeToOptional output)
+         (maybeToOptional input))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"connect\"]($2, $3); })"
+        js_connectParam ::
+        AudioNode -> AudioParam -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.connect Mozilla AudioNode.connect documentation> 
+connectParam ::
+             (MonadIO m, IsAudioNode self) =>
+               self -> AudioParam -> Maybe Word -> m ()
+connectParam self destination output
+  = liftIO
+      (js_connectParam (toAudioNode self) destination
+         (maybeToOptional output))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"disconnect\"]($2); })"
+        js_disconnect :: AudioNode -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.disconnect Mozilla AudioNode.disconnect documentation> 
+disconnect ::
+           (MonadIO m, IsAudioNode self) => self -> Maybe Word -> m ()
+disconnect self output
+  = liftIO
+      (js_disconnect (toAudioNode self) (maybeToOptional output))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"context\"]; })" js_getContext ::
+        AudioNode -> IO AudioContext
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.context Mozilla AudioNode.context documentation> 
+getContext ::
+           (MonadIO m, IsAudioNode self) => self -> m AudioContext
+getContext self = liftIO (js_getContext (toAudioNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfInputs\"]; })"
+        js_getNumberOfInputs :: AudioNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfInputs Mozilla AudioNode.numberOfInputs documentation> 
+getNumberOfInputs ::
+                  (MonadIO m, IsAudioNode self) => self -> m Word
+getNumberOfInputs self
+  = liftIO (js_getNumberOfInputs (toAudioNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfOutputs\"]; })"
+        js_getNumberOfOutputs :: AudioNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.numberOfOutputs Mozilla AudioNode.numberOfOutputs documentation> 
+getNumberOfOutputs ::
+                   (MonadIO m, IsAudioNode self) => self -> m Word
+getNumberOfOutputs self
+  = liftIO (js_getNumberOfOutputs (toAudioNode self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"channelCount\"] = $2; })"
+        js_setChannelCount :: AudioNode -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
+setChannelCount ::
+                (MonadIO m, IsAudioNode self) => self -> Word -> m ()
+setChannelCount self val
+  = liftIO (js_setChannelCount (toAudioNode self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"channelCount\"]; })"
+        js_getChannelCount :: AudioNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCount Mozilla AudioNode.channelCount documentation> 
+getChannelCount :: (MonadIO m, IsAudioNode self) => self -> m Word
+getChannelCount self
+  = liftIO (js_getChannelCount (toAudioNode self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"channelCountMode\"] = $2; })"
+        js_setChannelCountMode :: AudioNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
+setChannelCountMode ::
+                    (MonadIO m, IsAudioNode self, ToJSString val) =>
+                      self -> val -> m ()
+setChannelCountMode self val
+  = liftIO
+      (js_setChannelCountMode (toAudioNode self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"channelCountMode\"]; })"
+        js_getChannelCountMode :: AudioNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelCountMode Mozilla AudioNode.channelCountMode documentation> 
+getChannelCountMode ::
+                    (MonadIO m, IsAudioNode self, FromJSString result) =>
+                      self -> m result
+getChannelCountMode self
+  = liftIO
+      (fromJSString <$> (js_getChannelCountMode (toAudioNode self)))
+ 
+foreign import javascript safe
+        "(($1, $2) => { $1[\"channelInterpretation\"] = $2; })" js_setChannelInterpretation
+        :: AudioNode -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
+setChannelInterpretation ::
+                         (MonadIO m, IsAudioNode self, ToJSString val) =>
+                           self -> val -> m ()
+setChannelInterpretation self val
+  = liftIO
+      (js_setChannelInterpretation (toAudioNode self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"channelInterpretation\"]; })"
+        js_getChannelInterpretation :: AudioNode -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode.channelInterpretation Mozilla AudioNode.channelInterpretation documentation> 
+getChannelInterpretation ::
+                         (MonadIO m, IsAudioNode self, FromJSString result) =>
+                           self -> m result
+getChannelInterpretation self
+  = liftIO
+      (fromJSString <$> (js_getChannelInterpretation (toAudioNode self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioParam.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioParam
+       (js_setValueAtTime, setValueAtTime, js_linearRampToValueAtTime,
+        linearRampToValueAtTime, js_exponentialRampToValueAtTime,
+        exponentialRampToValueAtTime, js_setTargetAtTime, setTargetAtTime,
+        js_setValueCurveAtTime, setValueCurveAtTime,
+        js_cancelScheduledValues, cancelScheduledValues, js_setValue,
+        setValue, js_getValue, getValue, js_getMinValue, getMinValue,
+        js_getMaxValue, getMaxValue, js_getDefaultValue, getDefaultValue,
+        js_getName, getName, js_getUnits, getUnits, AudioParam(..),
+        gTypeAudioParam)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setValueAtTime\"]($2, $3); })"
+        js_setValueAtTime :: AudioParam -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueAtTime Mozilla AudioParam.setValueAtTime documentation> 
+setValueAtTime ::
+               (MonadIO m) => AudioParam -> Float -> Float -> m ()
+setValueAtTime self value time
+  = liftIO (js_setValueAtTime self value time)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"linearRampToValueAtTime\"]($2,\n$3); })"
+        js_linearRampToValueAtTime :: AudioParam -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.linearRampToValueAtTime Mozilla AudioParam.linearRampToValueAtTime documentation> 
+linearRampToValueAtTime ::
+                        (MonadIO m) => AudioParam -> Float -> Float -> m ()
+linearRampToValueAtTime self value time
+  = liftIO (js_linearRampToValueAtTime self value time)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"exponentialRampToValueAtTime\"]($2,\n$3); })"
+        js_exponentialRampToValueAtTime ::
+        AudioParam -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.exponentialRampToValueAtTime Mozilla AudioParam.exponentialRampToValueAtTime documentation> 
+exponentialRampToValueAtTime ::
+                             (MonadIO m) => AudioParam -> Float -> Float -> m ()
+exponentialRampToValueAtTime self value time
+  = liftIO (js_exponentialRampToValueAtTime self value time)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setTargetAtTime\"]($2, $3,\n$4); })" js_setTargetAtTime ::
+        AudioParam -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setTargetAtTime Mozilla AudioParam.setTargetAtTime documentation> 
+setTargetAtTime ::
+                (MonadIO m) => AudioParam -> Float -> Float -> Float -> m ()
+setTargetAtTime self target time timeConstant
+  = liftIO (js_setTargetAtTime self target time timeConstant)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setValueCurveAtTime\"]($2,\n$3, $4); })" js_setValueCurveAtTime
+        :: AudioParam -> Optional Float32Array -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.setValueCurveAtTime Mozilla AudioParam.setValueCurveAtTime documentation> 
+setValueCurveAtTime ::
+                    (MonadIO m, IsFloat32Array values) =>
+                      AudioParam -> Maybe values -> Float -> Float -> m ()
+setValueCurveAtTime self values time duration
+  = liftIO
+      (js_setValueCurveAtTime self
+         (maybeToOptional (fmap toFloat32Array values))
+         time
+         duration)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"cancelScheduledValues\"]($2); })" js_cancelScheduledValues ::
+        AudioParam -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.cancelScheduledValues Mozilla AudioParam.cancelScheduledValues documentation> 
+cancelScheduledValues :: (MonadIO m) => AudioParam -> Float -> m ()
+cancelScheduledValues self startTime
+  = liftIO (js_cancelScheduledValues self startTime)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: AudioParam -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+setValue :: (MonadIO m) => AudioParam -> Float -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        AudioParam -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.value Mozilla AudioParam.value documentation> 
+getValue :: (MonadIO m) => AudioParam -> m Float
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"minValue\"]; })" js_getMinValue
+        :: AudioParam -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.minValue Mozilla AudioParam.minValue documentation> 
+getMinValue :: (MonadIO m) => AudioParam -> m Float
+getMinValue self = liftIO (js_getMinValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxValue\"]; })" js_getMaxValue
+        :: AudioParam -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.maxValue Mozilla AudioParam.maxValue documentation> 
+getMaxValue :: (MonadIO m) => AudioParam -> m Float
+getMaxValue self = liftIO (js_getMaxValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
+        js_getDefaultValue :: AudioParam -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.defaultValue Mozilla AudioParam.defaultValue documentation> 
+getDefaultValue :: (MonadIO m) => AudioParam -> m Float
+getDefaultValue self = liftIO (js_getDefaultValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        AudioParam -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.name Mozilla AudioParam.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => AudioParam -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"units\"]; })" js_getUnits ::
+        AudioParam -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam.units Mozilla AudioParam.units documentation> 
+getUnits :: (MonadIO m) => AudioParam -> m Word
+getUnits self = liftIO (js_getUnits self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioProcessingEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioProcessingEvent
+       (js_getPlaybackTime, getPlaybackTime, js_getInputBuffer,
+        getInputBuffer, js_getOutputBuffer, getOutputBuffer,
+        AudioProcessingEvent(..), gTypeAudioProcessingEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackTime\"]; })"
+        js_getPlaybackTime :: AudioProcessingEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.playbackTime Mozilla AudioProcessingEvent.playbackTime documentation> 
+getPlaybackTime :: (MonadIO m) => AudioProcessingEvent -> m Double
+getPlaybackTime self = liftIO (js_getPlaybackTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"inputBuffer\"]; })"
+        js_getInputBuffer :: AudioProcessingEvent -> IO AudioBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.inputBuffer Mozilla AudioProcessingEvent.inputBuffer documentation> 
+getInputBuffer ::
+               (MonadIO m) => AudioProcessingEvent -> m AudioBuffer
+getInputBuffer self = liftIO (js_getInputBuffer self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"outputBuffer\"]; })"
+        js_getOutputBuffer :: AudioProcessingEvent -> IO AudioBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent.outputBuffer Mozilla AudioProcessingEvent.outputBuffer documentation> 
+getOutputBuffer ::
+                (MonadIO m) => AudioProcessingEvent -> m AudioBuffer
+getOutputBuffer self = liftIO (js_getOutputBuffer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrack.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioTrack
+       (js_getId, getId, js_setKind, setKind, js_getKind, getKind,
+        js_getLabel, getLabel, js_setLanguage, setLanguage, js_getLanguage,
+        getLanguage, js_setEnabled, setEnabled, js_getEnabled, getEnabled,
+        js_getSourceBuffer, getSourceBuffer, AudioTrack(..),
+        gTypeAudioTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        AudioTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.id Mozilla AudioTrack.id documentation> 
+getId :: (MonadIO m, FromJSString result) => AudioTrack -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
+        AudioTrack -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
+setKind :: (MonadIO m, ToJSString val) => AudioTrack -> val -> m ()
+setKind self val = liftIO (js_setKind self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        AudioTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.kind Mozilla AudioTrack.kind documentation> 
+getKind ::
+        (MonadIO m, FromJSString result) => AudioTrack -> m result
+getKind self = liftIO (fromJSString <$> (js_getKind self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        AudioTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.label Mozilla AudioTrack.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => AudioTrack -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
+        js_setLanguage :: AudioTrack -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
+setLanguage ::
+            (MonadIO m, ToJSString val) => AudioTrack -> val -> m ()
+setLanguage self val
+  = liftIO (js_setLanguage self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
+        :: AudioTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.language Mozilla AudioTrack.language documentation> 
+getLanguage ::
+            (MonadIO m, FromJSString result) => AudioTrack -> m result
+getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+        js_setEnabled :: AudioTrack -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+setEnabled :: (MonadIO m) => AudioTrack -> Bool -> m ()
+setEnabled self val = liftIO (js_setEnabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"enabled\"] ? 1 : 0); })"
+        js_getEnabled :: AudioTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.enabled Mozilla AudioTrack.enabled documentation> 
+getEnabled :: (MonadIO m) => AudioTrack -> m Bool
+getEnabled self = liftIO (js_getEnabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
+        js_getSourceBuffer :: AudioTrack -> IO SourceBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack.sourceBuffer Mozilla AudioTrack.sourceBuffer documentation> 
+getSourceBuffer :: (MonadIO m) => AudioTrack -> m SourceBuffer
+getSourceBuffer self = liftIO (js_getSourceBuffer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AudioTrackList.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AudioTrackList
+       (js_item, item, item_, js_getTrackById, getTrackById,
+        getTrackById_, js_getLength, getLength, change, addTrack,
+        removeTrack, AudioTrackList(..), gTypeAudioTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        AudioTrackList -> Word -> IO AudioTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
+item :: (MonadIO m) => AudioTrackList -> Word -> m AudioTrack
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.item Mozilla AudioTrackList.item documentation> 
+item_ :: (MonadIO m) => AudioTrackList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: AudioTrackList -> JSString -> IO AudioTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) => AudioTrackList -> id -> m AudioTrack
+getTrackById self id
+  = liftIO (js_getTrackById self (toJSString id))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.getTrackById Mozilla AudioTrackList.getTrackById documentation> 
+getTrackById_ ::
+              (MonadIO m, ToJSString id) => AudioTrackList -> id -> m ()
+getTrackById_ self id
+  = liftIO (void (js_getTrackById self (toJSString id)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        AudioTrackList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.length Mozilla AudioTrackList.length documentation> 
+getLength :: (MonadIO m) => AudioTrackList -> m Word
+getLength self = liftIO (js_getLength self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onchange Mozilla AudioTrackList.onchange documentation> 
+change :: EventName AudioTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onaddtrack Mozilla AudioTrackList.onaddtrack documentation> 
+addTrack :: EventName AudioTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList.onremovetrack Mozilla AudioTrackList.onremovetrack documentation> 
+removeTrack :: EventName AudioTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/AutocompleteErrorEvent.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.AutocompleteErrorEvent
+       (js_newAutocompleteErrorEvent, newAutocompleteErrorEvent,
+        js_getReason, getReason, AutocompleteErrorEvent(..),
+        gTypeAutocompleteErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"AutocompleteErrorEvent\"]($1,\n$2); })"
+        js_newAutocompleteErrorEvent ::
+        JSString ->
+          Optional AutocompleteErrorEventInit -> IO AutocompleteErrorEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation> 
+newAutocompleteErrorEvent ::
+                          (MonadIO m, ToJSString type') =>
+                            type' ->
+                              Maybe AutocompleteErrorEventInit -> m AutocompleteErrorEvent
+newAutocompleteErrorEvent type' eventInitDict
+  = liftIO
+      (js_newAutocompleteErrorEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
+        AutocompleteErrorEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent.reason Mozilla AutocompleteErrorEvent.reason documentation> 
+getReason ::
+          (MonadIO m, FromJSString result) =>
+            AutocompleteErrorEvent -> m result
+getReason self = liftIO (fromJSString <$> (js_getReason self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BarProp.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BarProp
+       (js_getVisible, getVisible, BarProp(..), gTypeBarProp) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"visible\"] ? 1 : 0); })"
+        js_getVisible :: BarProp -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BarProp.visible Mozilla BarProp.visible documentation> 
+getVisible :: (MonadIO m) => BarProp -> m Bool
+getVisible self = liftIO (js_getVisible self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BasicCredential.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BasicCredential
+       (js_getId, getId, js_getType, getType, BasicCredential(..),
+        gTypeBasicCredential, IsBasicCredential, toBasicCredential)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        BasicCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.id Mozilla BasicCredential.id documentation> 
+getId ::
+      (MonadIO m, IsBasicCredential self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftIO (fromJSString <$> (js_getId (toBasicCredential self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        BasicCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential.type Mozilla BasicCredential.type documentation> 
+getType ::
+        (MonadIO m, IsBasicCredential self, FromJSString result) =>
+          self -> m result
+getType self
+  = liftIO (fromJSString <$> (js_getType (toBasicCredential self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BeforeLoadEvent.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BeforeLoadEvent
+       (js_newBeforeLoadEvent, newBeforeLoadEvent, js_getUrl, getUrl,
+        BeforeLoadEvent(..), gTypeBeforeLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"BeforeLoadEvent\"]($1,\n$2); })" js_newBeforeLoadEvent ::
+        JSString -> Optional BeforeLoadEventInit -> IO BeforeLoadEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation> 
+newBeforeLoadEvent ::
+                   (MonadIO m, ToJSString type') =>
+                     type' -> Maybe BeforeLoadEventInit -> m BeforeLoadEvent
+newBeforeLoadEvent type' eventInitDict
+  = liftIO
+      (js_newBeforeLoadEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        BeforeLoadEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent.url Mozilla BeforeLoadEvent.url documentation> 
+getUrl ::
+       (MonadIO m, FromJSString result) => BeforeLoadEvent -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BeforeUnloadEvent.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BeforeUnloadEvent
+       (js_setReturnValue, setReturnValue, js_getReturnValue,
+        getReturnValue, BeforeUnloadEvent(..), gTypeBeforeUnloadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
+        js_setReturnValue :: BeforeUnloadEvent -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
+setReturnValue ::
+               (MonadIO m, ToJSString val) => BeforeUnloadEvent -> val -> m ()
+setReturnValue self val
+  = liftIO (js_setReturnValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"returnValue\"]; })"
+        js_getReturnValue :: BeforeUnloadEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent.returnValue Mozilla BeforeUnloadEvent.returnValue documentation> 
+getReturnValue ::
+               (MonadIO m, FromJSString result) => BeforeUnloadEvent -> m result
+getReturnValue self
+  = liftIO (fromJSString <$> (js_getReturnValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BiquadFilterNode.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BiquadFilterNode
+       (js_getFrequencyResponse, getFrequencyResponse, js_setType,
+        setType, js_getType, getType, js_getFrequency, getFrequency,
+        js_getDetune, getDetune, js_getQ, getQ, js_getGain, getGain,
+        BiquadFilterNode(..), gTypeBiquadFilterNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getFrequencyResponse\"]($2,\n$3, $4); })" js_getFrequencyResponse
+        ::
+        BiquadFilterNode ->
+          Optional Float32Array ->
+            Optional Float32Array -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.getFrequencyResponse Mozilla BiquadFilterNode.getFrequencyResponse documentation> 
+getFrequencyResponse ::
+                     (MonadIO m, IsFloat32Array frequencyHz, IsFloat32Array magResponse,
+                      IsFloat32Array phaseResponse) =>
+                       BiquadFilterNode ->
+                         Maybe frequencyHz ->
+                           Maybe magResponse -> Maybe phaseResponse -> m ()
+getFrequencyResponse self frequencyHz magResponse phaseResponse
+  = liftIO
+      (js_getFrequencyResponse self
+         (maybeToOptional (fmap toFloat32Array frequencyHz))
+         (maybeToOptional (fmap toFloat32Array magResponse))
+         (maybeToOptional (fmap toFloat32Array phaseResponse)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        BiquadFilterNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+setType ::
+        (MonadIO m) => BiquadFilterNode -> BiquadFilterType -> m ()
+setType self val = liftIO (js_setType self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        BiquadFilterNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.type Mozilla BiquadFilterNode.type documentation> 
+getType :: (MonadIO m) => BiquadFilterNode -> m BiquadFilterType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
+        js_getFrequency :: BiquadFilterNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.frequency Mozilla BiquadFilterNode.frequency documentation> 
+getFrequency :: (MonadIO m) => BiquadFilterNode -> m AudioParam
+getFrequency self = liftIO (js_getFrequency self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })" js_getDetune ::
+        BiquadFilterNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.detune Mozilla BiquadFilterNode.detune documentation> 
+getDetune :: (MonadIO m) => BiquadFilterNode -> m AudioParam
+getDetune self = liftIO (js_getDetune self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"Q\"]; })" js_getQ ::
+        BiquadFilterNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.Q Mozilla BiquadFilterNode.Q documentation> 
+getQ :: (MonadIO m) => BiquadFilterNode -> m AudioParam
+getQ self = liftIO (js_getQ self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
+        BiquadFilterNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode.gain Mozilla BiquadFilterNode.gain documentation> 
+getGain :: (MonadIO m) => BiquadFilterNode -> m AudioParam
+getGain self = liftIO (js_getGain self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Blob.hs b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Blob.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Blob
+       (js_newBlob, newBlob, js_slice, slice, slice_, js_getSize, getSize,
+        js_getType, getType, Blob(..), gTypeBlob, IsBlob, toBlob)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return new window[\"Blob\"]($1, $2); })"
+        js_newBlob :: JSVal -> Optional BlobPropertyBag -> IO Blob
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation> 
+newBlob ::
+        (MonadIO m, IsBlobPart blobParts, IsBlobPropertyBag options) =>
+          [blobParts] -> Maybe options -> m Blob
+newBlob blobParts options
+  = liftIO
+      (toJSVal blobParts >>= \ blobParts' -> js_newBlob blobParts'
+         (maybeToOptional (fmap toBlobPropertyBag options)))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"slice\"]($2, $3, $4); })"
+        js_slice ::
+        Blob ->
+          Optional Double -> Optional Double -> Optional JSString -> IO Blob
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
+slice ::
+      (MonadIO m, IsBlob self, ToJSString contentType) =>
+        self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m Blob
+slice self start end contentType
+  = liftIO
+      (js_slice (toBlob self) (maybeToOptional (fmap fromIntegral start))
+         (maybeToOptional (fmap fromIntegral end))
+         (toOptionalJSString contentType))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.slice Mozilla Blob.slice documentation> 
+slice_ ::
+       (MonadIO m, IsBlob self, ToJSString contentType) =>
+         self -> Maybe Int64 -> Maybe Int64 -> Maybe contentType -> m ()
+slice_ self start end contentType
+  = liftIO
+      (void
+         (js_slice (toBlob self) (maybeToOptional (fmap fromIntegral start))
+            (maybeToOptional (fmap fromIntegral end))
+            (toOptionalJSString contentType)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        Blob -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.size Mozilla Blob.size documentation> 
+getSize :: (MonadIO m, IsBlob self) => self -> m Word64
+getSize self = liftIO (round <$> (js_getSize (toBlob self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        Blob -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Blob.type Mozilla Blob.type documentation> 
+getType ::
+        (MonadIO m, IsBlob self, FromJSString result) => self -> m result
+getType self = liftIO (fromJSString <$> (js_getType (toBlob self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/BlobCallback.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.BlobCallback
+       (newBlobCallback, newBlobCallbackSync, newBlobCallbackAsync,
+        BlobCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
+newBlobCallback ::
+                (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallback callback
+  = liftIO
+      (BlobCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
+newBlobCallbackSync ::
+                    (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallbackSync callback
+  = liftIO
+      (BlobCallback <$>
+         syncCallback1 ContinueAsync
+           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/BlobCallback Mozilla BlobCallback documentation> 
+newBlobCallbackAsync ::
+                     (MonadIO m) => (Maybe Blob -> IO ()) -> m BlobCallback
+newBlobCallbackAsync callback
+  = liftIO
+      (BlobCallback <$>
+         asyncCallback1
+           (\ blob -> fromJSValUnchecked blob >>= \ blob' -> callback blob'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Body.hs b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Body.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Body
+       (js_arrayBuffer, arrayBuffer, arrayBuffer_, js_blob, blob, blob_,
+        js_json, json, json_, js_text, text, text_, js_getBodyUsed,
+        getBodyUsed, Body(..), gTypeBody, IsBody, toBody)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_arrayBuffer :: Body -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
+arrayBuffer :: (MonadIO m, IsBody self) => self -> m ArrayBuffer
+arrayBuffer self
+  = liftIO ((js_arrayBuffer (toBody self)) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.arrayBuffer Mozilla Body.arrayBuffer documentation> 
+arrayBuffer_ :: (MonadIO m, IsBody self) => self -> m ()
+arrayBuffer_ self = liftIO (void (js_arrayBuffer (toBody self)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"blob\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_blob :: Body -> IO (JSVal, Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
+blob :: (MonadIO m, IsBody self) => self -> m Blob
+blob self = liftIO ((js_blob (toBody self)) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.blob Mozilla Body.blob documentation> 
+blob_ :: (MonadIO m, IsBody self) => self -> m ()
+blob_ self = liftIO (void (js_blob (toBody self)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"json\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_json :: Body -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
+json :: (MonadIO m, IsBody self) => self -> m JSVal
+json self = liftIO ((js_json (toBody self)) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.json Mozilla Body.json documentation> 
+json_ :: (MonadIO m, IsBody self) => self -> m ()
+json_ self = liftIO (void (js_json (toBody self)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_text :: Body -> IO (JSVal, JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
+text ::
+     (MonadIO m, IsBody self, FromJSString result) => self -> m result
+text self
+  = liftIO
+      (fromJSString <$> ((js_text (toBody self)) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.text Mozilla Body.text documentation> 
+text_ :: (MonadIO m, IsBody self) => self -> m ()
+text_ self = liftIO (void (js_text (toBody self)))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"bodyUsed\"] ? 1 : 0); })"
+        js_getBodyUsed :: Body -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Body.bodyUsed Mozilla Body.bodyUsed documentation> 
+getBodyUsed :: (MonadIO m, IsBody self) => self -> m Bool
+getBodyUsed self = liftIO (js_getBodyUsed (toBody self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ByteLengthQueuingStrategy.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ByteLengthQueuingStrategy
+       (js_newByteLengthQueuingStrategy, newByteLengthQueuingStrategy,
+        js_size, size, size_, ByteLengthQueuingStrategy(..),
+        gTypeByteLengthQueuingStrategy)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"ByteLengthQueuingStrategy\"](); })"
+        js_newByteLengthQueuingStrategy :: IO ByteLengthQueuingStrategy
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy Mozilla ByteLengthQueuingStrategy documentation> 
+newByteLengthQueuingStrategy ::
+                             (MonadIO m) => m ByteLengthQueuingStrategy
+newByteLengthQueuingStrategy
+  = liftIO (js_newByteLengthQueuingStrategy)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"](); })" js_size ::
+        ByteLengthQueuingStrategy -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
+size :: (MonadIO m) => ByteLengthQueuingStrategy -> m Double
+size self = liftIO (js_size self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy.size Mozilla ByteLengthQueuingStrategy.size documentation> 
+size_ :: (MonadIO m) => ByteLengthQueuingStrategy -> m ()
+size_ self = liftIO (void (js_size self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSS.hs b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSS.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSS
+       (js_supports2, supports2, supports2_, js_supports, supports,
+        supports_, js_escape, escape, escape_, CSS(..), gTypeCSS)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return (window[\"CSS\"][\"supports\"]($1,\n$2) ? 1 : 0); })" js_supports2 ::
+        JSString -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports2 ::
+          (MonadIO m, ToJSString property, ToJSString value) =>
+            property -> value -> m Bool
+supports2 property value
+  = liftIO (js_supports2 (toJSString property) (toJSString value))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports2_ ::
+           (MonadIO m, ToJSString property, ToJSString value) =>
+             property -> value -> m ()
+supports2_ property value
+  = liftIO
+      (void (js_supports2 (toJSString property) (toJSString value)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return (window[\"CSS\"][\"supports\"]($1) ? 1 : 0); })" js_supports ::
+        JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports ::
+         (MonadIO m, ToJSString conditionText) => conditionText -> m Bool
+supports conditionText
+  = liftIO (js_supports (toJSString conditionText))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.supports Mozilla CSS.supports documentation> 
+supports_ ::
+          (MonadIO m, ToJSString conditionText) => conditionText -> m ()
+supports_ conditionText
+  = liftIO (void (js_supports (toJSString conditionText)))
+ 
+foreign import javascript unsafe "(($1) => { return window[\"CSS\"][\"escape\"]($1); })"
+        js_escape :: JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
+escape ::
+       (MonadIO m, ToJSString ident, FromJSString result) =>
+         ident -> m result
+escape ident
+  = liftIO (fromJSString <$> (js_escape (toJSString ident)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSS.escape Mozilla CSS.escape documentation> 
+escape_ :: (MonadIO m, ToJSString ident) => ident -> m ()
+escape_ ident = liftIO (void (js_escape (toJSString ident)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceLoadEvent.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSFontFaceLoadEvent
+       (js_newCSSFontFaceLoadEvent, newCSSFontFaceLoadEvent,
+        js_getFontface, getFontface, getFontfaceUnsafe,
+        getFontfaceUnchecked, js_getError, getError, getErrorUnsafe,
+        getErrorUnchecked, CSSFontFaceLoadEvent(..),
+        gTypeCSSFontFaceLoadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"CSSFontFaceLoadEvent\"]($1,\n$2); })"
+        js_newCSSFontFaceLoadEvent ::
+        JSString ->
+          Optional CSSFontFaceLoadEventInit -> IO CSSFontFaceLoadEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation> 
+newCSSFontFaceLoadEvent ::
+                        (MonadIO m, ToJSString type') =>
+                          type' -> Maybe CSSFontFaceLoadEventInit -> m CSSFontFaceLoadEvent
+newCSSFontFaceLoadEvent type' eventInit
+  = liftIO
+      (js_newCSSFontFaceLoadEvent (toJSString type')
+         (maybeToOptional eventInit))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fontface\"]; })" js_getFontface
+        :: CSSFontFaceLoadEvent -> IO (Nullable CSSFontFaceRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
+getFontface ::
+            (MonadIO m) => CSSFontFaceLoadEvent -> m (Maybe CSSFontFaceRule)
+getFontface self
+  = liftIO (nullableToMaybe <$> (js_getFontface self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
+getFontfaceUnsafe ::
+                  (MonadIO m, HasCallStack) =>
+                    CSSFontFaceLoadEvent -> m CSSFontFaceRule
+getFontfaceUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFontface self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.fontface Mozilla CSSFontFaceLoadEvent.fontface documentation> 
+getFontfaceUnchecked ::
+                     (MonadIO m) => CSSFontFaceLoadEvent -> m CSSFontFaceRule
+getFontfaceUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getFontface self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        CSSFontFaceLoadEvent -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
+getError ::
+         (MonadIO m) => CSSFontFaceLoadEvent -> m (Maybe DOMError)
+getError self = liftIO (nullableToMaybe <$> (js_getError self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
+getErrorUnsafe ::
+               (MonadIO m, HasCallStack) => CSSFontFaceLoadEvent -> m DOMError
+getErrorUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getError self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent.error Mozilla CSSFontFaceLoadEvent.error documentation> 
+getErrorUnchecked ::
+                  (MonadIO m) => CSSFontFaceLoadEvent -> m DOMError
+getErrorUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getError self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSFontFaceRule.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSFontFaceRule
+       (js_getStyle, getStyle, CSSFontFaceRule(..), gTypeCSSFontFaceRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        CSSFontFaceRule -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule.style Mozilla CSSFontFaceRule.style documentation> 
+getStyle :: (MonadIO m) => CSSFontFaceRule -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSImportRule.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSImportRule
+       (js_getHref, getHref, getHrefUnsafe, getHrefUnchecked, js_getMedia,
+        getMedia, js_getStyleSheet, getStyleSheet, CSSImportRule(..),
+        gTypeCSSImportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        CSSImportRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) =>
+          CSSImportRule -> m (Maybe result)
+getHref self = liftIO (fromMaybeJSString <$> (js_getHref self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
+getHrefUnsafe ::
+              (MonadIO m, HasCallStack, FromJSString result) =>
+                CSSImportRule -> m result
+getHrefUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getHref self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.href Mozilla CSSImportRule.href documentation> 
+getHrefUnchecked ::
+                 (MonadIO m, FromJSString result) => CSSImportRule -> m result
+getHrefUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getHref self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        CSSImportRule -> IO MediaList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.media Mozilla CSSImportRule.media documentation> 
+getMedia :: (MonadIO m) => CSSImportRule -> m MediaList
+getMedia self = liftIO (js_getMedia self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"styleSheet\"]; })"
+        js_getStyleSheet :: CSSImportRule -> IO CSSStyleSheet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule.styleSheet Mozilla CSSImportRule.styleSheet documentation> 
+getStyleSheet :: (MonadIO m) => CSSImportRule -> m CSSStyleSheet
+getStyleSheet self = liftIO (js_getStyleSheet self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframeRule.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSKeyframeRule
+       (js_setKeyText, setKeyText, js_getKeyText, getKeyText, js_getStyle,
+        getStyle, CSSKeyframeRule(..), gTypeCSSKeyframeRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"keyText\"] = $2; })"
+        js_setKeyText :: CSSKeyframeRule -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
+setKeyText ::
+           (MonadIO m, ToJSString val) => CSSKeyframeRule -> val -> m ()
+setKeyText self val = liftIO (js_setKeyText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyText\"]; })" js_getKeyText ::
+        CSSKeyframeRule -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.keyText Mozilla CSSKeyframeRule.keyText documentation> 
+getKeyText ::
+           (MonadIO m, FromJSString result) => CSSKeyframeRule -> m result
+getKeyText self = liftIO (fromJSString <$> (js_getKeyText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        CSSKeyframeRule -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule.style Mozilla CSSKeyframeRule.style documentation> 
+getStyle :: (MonadIO m) => CSSKeyframeRule -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSKeyframesRule.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSKeyframesRule
+       (js_insertRule, insertRule, js_appendRule, appendRule,
+        js_deleteRule, deleteRule, js_findRule, findRule, findRule_,
+        findRuleUnsafe, findRuleUnchecked, js_get, get, get_, js_setName,
+        setName, js_getName, getName, js_getCssRules, getCssRules,
+        CSSKeyframesRule(..), gTypeCSSKeyframesRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"insertRule\"]($2); })"
+        js_insertRule :: CSSKeyframesRule -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.insertRule Mozilla CSSKeyframesRule.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
+insertRule self rule
+  = liftIO (js_insertRule self (toJSString rule))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"appendRule\"]($2); })"
+        js_appendRule :: CSSKeyframesRule -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.appendRule Mozilla CSSKeyframesRule.appendRule documentation> 
+appendRule ::
+           (MonadIO m, ToJSString rule) => CSSKeyframesRule -> rule -> m ()
+appendRule self rule
+  = liftIO (js_appendRule self (toJSString rule))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+        js_deleteRule :: CSSKeyframesRule -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.deleteRule Mozilla CSSKeyframesRule.deleteRule documentation> 
+deleteRule ::
+           (MonadIO m, ToJSString key) => CSSKeyframesRule -> key -> m ()
+deleteRule self key = liftIO (js_deleteRule self (toJSString key))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"findRule\"]($2); })" js_findRule
+        :: CSSKeyframesRule -> JSString -> IO (Nullable CSSKeyframeRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRule ::
+         (MonadIO m, ToJSString key) =>
+           CSSKeyframesRule -> key -> m (Maybe CSSKeyframeRule)
+findRule self key
+  = liftIO (nullableToMaybe <$> (js_findRule self (toJSString key)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRule_ ::
+          (MonadIO m, ToJSString key) => CSSKeyframesRule -> key -> m ()
+findRule_ self key
+  = liftIO (void (js_findRule self (toJSString key)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRuleUnsafe ::
+               (MonadIO m, ToJSString key, HasCallStack) =>
+                 CSSKeyframesRule -> key -> m CSSKeyframeRule
+findRuleUnsafe self key
+  = liftIO
+      ((nullableToMaybe <$> (js_findRule self (toJSString key))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.findRule Mozilla CSSKeyframesRule.findRule documentation> 
+findRuleUnchecked ::
+                  (MonadIO m, ToJSString key) =>
+                    CSSKeyframesRule -> key -> m CSSKeyframeRule
+findRuleUnchecked self key
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_findRule self (toJSString key)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        CSSKeyframesRule -> Word -> IO CSSKeyframeRule
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.get Mozilla CSSKeyframesRule.get documentation> 
+get :: (MonadIO m) => CSSKeyframesRule -> Word -> m CSSKeyframeRule
+get self index = liftIO (js_get self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.get Mozilla CSSKeyframesRule.get documentation> 
+get_ :: (MonadIO m) => CSSKeyframesRule -> Word -> m ()
+get_ self index = liftIO (void (js_get self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        CSSKeyframesRule -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => CSSKeyframesRule -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        CSSKeyframesRule -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.name Mozilla CSSKeyframesRule.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => CSSKeyframesRule -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
+        :: CSSKeyframesRule -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule.cssRules Mozilla CSSKeyframesRule.cssRules documentation> 
+getCssRules :: (MonadIO m) => CSSKeyframesRule -> m CSSRuleList
+getCssRules self = liftIO (js_getCssRules self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSMediaRule.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSMediaRule
+       (js_insertRule, insertRule, insertRule_, js_deleteRule, deleteRule,
+        js_getMedia, getMedia, js_getCssRules, getCssRules,
+        CSSMediaRule(..), gTypeCSSMediaRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
+        js_insertRule ::
+        CSSMediaRule -> Optional JSString -> Optional Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) =>
+             CSSMediaRule -> Maybe rule -> Maybe Word -> m Word
+insertRule self rule index
+  = liftIO
+      (js_insertRule self (toOptionalJSString rule)
+         (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.insertRule Mozilla CSSMediaRule.insertRule documentation> 
+insertRule_ ::
+            (MonadIO m, ToJSString rule) =>
+              CSSMediaRule -> Maybe rule -> Maybe Word -> m ()
+insertRule_ self rule index
+  = liftIO
+      (void
+         (js_insertRule self (toOptionalJSString rule)
+            (maybeToOptional index)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+        js_deleteRule :: CSSMediaRule -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.deleteRule Mozilla CSSMediaRule.deleteRule documentation> 
+deleteRule :: (MonadIO m) => CSSMediaRule -> Maybe Word -> m ()
+deleteRule self index
+  = liftIO (js_deleteRule self (maybeToOptional index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        CSSMediaRule -> IO MediaList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.media Mozilla CSSMediaRule.media documentation> 
+getMedia :: (MonadIO m) => CSSMediaRule -> m MediaList
+getMedia self = liftIO (js_getMedia self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
+        :: CSSMediaRule -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule.cssRules Mozilla CSSMediaRule.cssRules documentation> 
+getCssRules :: (MonadIO m) => CSSMediaRule -> m CSSRuleList
+getCssRules self = liftIO (js_getCssRules self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSNamespaceRule.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSNamespaceRule
+       (js_getNamespaceURI, getNamespaceURI, js_getPrefix, getPrefix,
+        CSSNamespaceRule(..), gTypeCSSNamespaceRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
+        js_getNamespaceURI :: CSSNamespaceRule -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.namespaceURI Mozilla CSSNamespaceRule.namespaceURI documentation> 
+getNamespaceURI ::
+                (MonadIO m, FromJSString result) => CSSNamespaceRule -> m result
+getNamespaceURI self
+  = liftIO (fromJSString <$> (js_getNamespaceURI self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
+        CSSNamespaceRule -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule.prefix Mozilla CSSNamespaceRule.prefix documentation> 
+getPrefix ::
+          (MonadIO m, FromJSString result) => CSSNamespaceRule -> m result
+getPrefix self = liftIO (fromJSString <$> (js_getPrefix self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPageRule.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSPageRule
+       (js_setSelectorText, setSelectorText, js_getSelectorText,
+        getSelectorText, getSelectorTextUnsafe, getSelectorTextUnchecked,
+        js_getStyle, getStyle, CSSPageRule(..), gTypeCSSPageRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
+        js_setSelectorText :: CSSPageRule -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+setSelectorText ::
+                (MonadIO m, ToJSString val) => CSSPageRule -> Maybe val -> m ()
+setSelectorText self val
+  = liftIO (js_setSelectorText self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
+        js_getSelectorText :: CSSPageRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+getSelectorText ::
+                (MonadIO m, FromJSString result) => CSSPageRule -> m (Maybe result)
+getSelectorText self
+  = liftIO (fromMaybeJSString <$> (js_getSelectorText self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+getSelectorTextUnsafe ::
+                      (MonadIO m, HasCallStack, FromJSString result) =>
+                        CSSPageRule -> m result
+getSelectorTextUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getSelectorText self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.selectorText Mozilla CSSPageRule.selectorText documentation> 
+getSelectorTextUnchecked ::
+                         (MonadIO m, FromJSString result) => CSSPageRule -> m result
+getSelectorTextUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getSelectorText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        CSSPageRule -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule.style Mozilla CSSPageRule.style documentation> 
+getStyle :: (MonadIO m) => CSSPageRule -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSPrimitiveValue.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSPrimitiveValue
+       (js_setFloatValue, setFloatValue, js_getFloatValue, getFloatValue,
+        getFloatValue_, js_setStringValue, setStringValue,
+        js_getStringValue, getStringValue, getStringValue_,
+        js_getCounterValue, getCounterValue, getCounterValue_,
+        js_getRectValue, getRectValue, getRectValue_, js_getRGBColorValue,
+        getRGBColorValue, getRGBColorValue_, pattern CSS_UNKNOWN,
+        pattern CSS_NUMBER, pattern CSS_PERCENTAGE, pattern CSS_EMS,
+        pattern CSS_EXS, pattern CSS_PX, pattern CSS_CM, pattern CSS_MM,
+        pattern CSS_IN, pattern CSS_PT, pattern CSS_PC, pattern CSS_DEG,
+        pattern CSS_RAD, pattern CSS_GRAD, pattern CSS_MS, pattern CSS_S,
+        pattern CSS_HZ, pattern CSS_KHZ, pattern CSS_DIMENSION,
+        pattern CSS_STRING, pattern CSS_URI, pattern CSS_IDENT,
+        pattern CSS_ATTR, pattern CSS_COUNTER, pattern CSS_RECT,
+        pattern CSS_RGBCOLOR, pattern CSS_VW, pattern CSS_VH,
+        pattern CSS_VMIN, pattern CSS_VMAX, js_getPrimitiveType,
+        getPrimitiveType, CSSPrimitiveValue(..), gTypeCSSPrimitiveValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setFloatValue\"]($2, $3); })"
+        js_setFloatValue ::
+        CSSPrimitiveValue -> Optional Word -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setFloatValue Mozilla CSSPrimitiveValue.setFloatValue documentation> 
+setFloatValue ::
+              (MonadIO m) =>
+                CSSPrimitiveValue -> Maybe Word -> Maybe Float -> m ()
+setFloatValue self unitType floatValue
+  = liftIO
+      (js_setFloatValue self (maybeToOptional unitType)
+         (maybeToOptional floatValue))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getFloatValue\"]($2); })"
+        js_getFloatValue :: CSSPrimitiveValue -> Optional Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
+getFloatValue ::
+              (MonadIO m) => CSSPrimitiveValue -> Maybe Word -> m Float
+getFloatValue self unitType
+  = liftIO (js_getFloatValue self (maybeToOptional unitType))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getFloatValue Mozilla CSSPrimitiveValue.getFloatValue documentation> 
+getFloatValue_ ::
+               (MonadIO m) => CSSPrimitiveValue -> Maybe Word -> m ()
+getFloatValue_ self unitType
+  = liftIO (void (js_getFloatValue self (maybeToOptional unitType)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStringValue\"]($2, $3); })"
+        js_setStringValue ::
+        CSSPrimitiveValue -> Optional Word -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.setStringValue Mozilla CSSPrimitiveValue.setStringValue documentation> 
+setStringValue ::
+               (MonadIO m, ToJSString stringValue) =>
+                 CSSPrimitiveValue -> Maybe Word -> Maybe stringValue -> m ()
+setStringValue self stringType stringValue
+  = liftIO
+      (js_setStringValue self (maybeToOptional stringType)
+         (toOptionalJSString stringValue))
+ 
+foreign import javascript safe "(($1) => { return $1[\"getStringValue\"](); })"
+        js_getStringValue :: CSSPrimitiveValue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
+getStringValue ::
+               (MonadIO m, FromJSString result) => CSSPrimitiveValue -> m result
+getStringValue self
+  = liftIO (fromJSString <$> (js_getStringValue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getStringValue Mozilla CSSPrimitiveValue.getStringValue documentation> 
+getStringValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
+getStringValue_ self = liftIO (void (js_getStringValue self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"getCounterValue\"](); })"
+        js_getCounterValue :: CSSPrimitiveValue -> IO Counter
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
+getCounterValue :: (MonadIO m) => CSSPrimitiveValue -> m Counter
+getCounterValue self = liftIO (js_getCounterValue self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getCounterValue Mozilla CSSPrimitiveValue.getCounterValue documentation> 
+getCounterValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
+getCounterValue_ self = liftIO (void (js_getCounterValue self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"getRectValue\"](); })"
+        js_getRectValue :: CSSPrimitiveValue -> IO Rect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
+getRectValue :: (MonadIO m) => CSSPrimitiveValue -> m Rect
+getRectValue self = liftIO (js_getRectValue self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRectValue Mozilla CSSPrimitiveValue.getRectValue documentation> 
+getRectValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
+getRectValue_ self = liftIO (void (js_getRectValue self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"getRGBColorValue\"](); })"
+        js_getRGBColorValue :: CSSPrimitiveValue -> IO RGBColor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
+getRGBColorValue :: (MonadIO m) => CSSPrimitiveValue -> m RGBColor
+getRGBColorValue self = liftIO (js_getRGBColorValue self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.getRGBColorValue Mozilla CSSPrimitiveValue.getRGBColorValue documentation> 
+getRGBColorValue_ :: (MonadIO m) => CSSPrimitiveValue -> m ()
+getRGBColorValue_ self = liftIO (void (js_getRGBColorValue self))
+pattern CSS_UNKNOWN = 0
+pattern CSS_NUMBER = 1
+pattern CSS_PERCENTAGE = 2
+pattern CSS_EMS = 3
+pattern CSS_EXS = 4
+pattern CSS_PX = 5
+pattern CSS_CM = 6
+pattern CSS_MM = 7
+pattern CSS_IN = 8
+pattern CSS_PT = 9
+pattern CSS_PC = 10
+pattern CSS_DEG = 11
+pattern CSS_RAD = 12
+pattern CSS_GRAD = 13
+pattern CSS_MS = 14
+pattern CSS_S = 15
+pattern CSS_HZ = 16
+pattern CSS_KHZ = 17
+pattern CSS_DIMENSION = 18
+pattern CSS_STRING = 19
+pattern CSS_URI = 20
+pattern CSS_IDENT = 21
+pattern CSS_ATTR = 22
+pattern CSS_COUNTER = 23
+pattern CSS_RECT = 24
+pattern CSS_RGBCOLOR = 25
+pattern CSS_VW = 26
+pattern CSS_VH = 27
+pattern CSS_VMIN = 28
+pattern CSS_VMAX = 29
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"primitiveType\"]; })"
+        js_getPrimitiveType :: CSSPrimitiveValue -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue.primitiveType Mozilla CSSPrimitiveValue.primitiveType documentation> 
+getPrimitiveType :: (MonadIO m) => CSSPrimitiveValue -> m Word
+getPrimitiveType self = liftIO (js_getPrimitiveType self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRule.hs
@@ -0,0 +1,149 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSRule
+       (pattern UNKNOWN_RULE, pattern STYLE_RULE, pattern CHARSET_RULE,
+        pattern IMPORT_RULE, pattern MEDIA_RULE, pattern FONT_FACE_RULE,
+        pattern PAGE_RULE, pattern KEYFRAMES_RULE, pattern KEYFRAME_RULE,
+        pattern NAMESPACE_RULE, pattern SUPPORTS_RULE,
+        pattern WEBKIT_VIEWPORT_RULE, pattern WEBKIT_REGION_RULE,
+        pattern WEBKIT_KEYFRAMES_RULE, pattern WEBKIT_KEYFRAME_RULE,
+        js_getType, getType, js_setCssText, setCssText, js_getCssText,
+        getCssText, getCssTextUnsafe, getCssTextUnchecked,
+        js_getParentStyleSheet, getParentStyleSheet,
+        getParentStyleSheetUnsafe, getParentStyleSheetUnchecked,
+        js_getParentRule, getParentRule, getParentRuleUnsafe,
+        getParentRuleUnchecked, CSSRule(..), gTypeCSSRule, IsCSSRule,
+        toCSSRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern UNKNOWN_RULE = 0
+pattern STYLE_RULE = 1
+pattern CHARSET_RULE = 2
+pattern IMPORT_RULE = 3
+pattern MEDIA_RULE = 4
+pattern FONT_FACE_RULE = 5
+pattern PAGE_RULE = 6
+pattern KEYFRAMES_RULE = 7
+pattern KEYFRAME_RULE = 8
+pattern NAMESPACE_RULE = 10
+pattern SUPPORTS_RULE = 12
+pattern WEBKIT_VIEWPORT_RULE = 15
+pattern WEBKIT_REGION_RULE = 16
+pattern WEBKIT_KEYFRAMES_RULE = 7
+pattern WEBKIT_KEYFRAME_RULE = 8
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        CSSRule -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.type Mozilla CSSRule.type documentation> 
+getType :: (MonadIO m, IsCSSRule self) => self -> m Word
+getType self = liftIO (js_getType (toCSSRule self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
+        js_setCssText :: CSSRule -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+setCssText ::
+           (MonadIO m, IsCSSRule self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCssText self val
+  = liftIO (js_setCssText (toCSSRule self) (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
+        CSSRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+getCssText ::
+           (MonadIO m, IsCSSRule self, FromJSString result) =>
+             self -> m (Maybe result)
+getCssText self
+  = liftIO (fromMaybeJSString <$> (js_getCssText (toCSSRule self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+getCssTextUnsafe ::
+                 (MonadIO m, IsCSSRule self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getCssTextUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getCssText (toCSSRule self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.cssText Mozilla CSSRule.cssText documentation> 
+getCssTextUnchecked ::
+                    (MonadIO m, IsCSSRule self, FromJSString result) =>
+                      self -> m result
+getCssTextUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getCssText (toCSSRule self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentStyleSheet\"]; })"
+        js_getParentStyleSheet :: CSSRule -> IO (Nullable CSSStyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
+getParentStyleSheet ::
+                    (MonadIO m, IsCSSRule self) => self -> m (Maybe CSSStyleSheet)
+getParentStyleSheet self
+  = liftIO
+      (nullableToMaybe <$> (js_getParentStyleSheet (toCSSRule self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
+getParentStyleSheetUnsafe ::
+                          (MonadIO m, IsCSSRule self, HasCallStack) =>
+                            self -> m CSSStyleSheet
+getParentStyleSheetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParentStyleSheet (toCSSRule self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentStyleSheet Mozilla CSSRule.parentStyleSheet documentation> 
+getParentStyleSheetUnchecked ::
+                             (MonadIO m, IsCSSRule self) => self -> m CSSStyleSheet
+getParentStyleSheetUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getParentStyleSheet (toCSSRule self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentRule\"]; })"
+        js_getParentRule :: CSSRule -> IO (Nullable CSSRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
+getParentRule ::
+              (MonadIO m, IsCSSRule self) => self -> m (Maybe CSSRule)
+getParentRule self
+  = liftIO (nullableToMaybe <$> (js_getParentRule (toCSSRule self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
+getParentRuleUnsafe ::
+                    (MonadIO m, IsCSSRule self, HasCallStack) => self -> m CSSRule
+getParentRuleUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParentRule (toCSSRule self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule.parentRule Mozilla CSSRule.parentRule documentation> 
+getParentRuleUnchecked ::
+                       (MonadIO m, IsCSSRule self) => self -> m CSSRule
+getParentRuleUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getParentRule (toCSSRule self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSRuleList.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSRuleList
+       (js_item, item, item_, js_getLength, getLength, CSSRuleList(..),
+        gTypeCSSRuleList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        CSSRuleList -> Word -> IO CSSRule
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+item :: (MonadIO m) => CSSRuleList -> Word -> m CSSRule
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.item Mozilla CSSRuleList.item documentation> 
+item_ :: (MonadIO m) => CSSRuleList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        CSSRuleList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList.length Mozilla CSSRuleList.length documentation> 
+getLength :: (MonadIO m) => CSSRuleList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleDeclaration.hs
@@ -0,0 +1,299 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleDeclaration
+       (js_getPropertyValue, getPropertyValue, getPropertyValue_,
+        js_getPropertyCSSValue, getPropertyCSSValue, getPropertyCSSValue_,
+        getPropertyCSSValueUnsafe, getPropertyCSSValueUnchecked,
+        js_removeProperty, removeProperty, removeProperty_,
+        js_getPropertyPriority, getPropertyPriority, getPropertyPriority_,
+        getPropertyPriorityUnsafe, getPropertyPriorityUnchecked,
+        js_setProperty, setProperty, js_item, item, item_,
+        js_getPropertyShorthand, getPropertyShorthand,
+        getPropertyShorthand_, getPropertyShorthandUnsafe,
+        getPropertyShorthandUnchecked, js_isPropertyImplicit,
+        isPropertyImplicit, isPropertyImplicit_, js_setCssText, setCssText,
+        js_getCssText, getCssText, js_getLength, getLength,
+        js_getParentRule, getParentRule, getParentRuleUnsafe,
+        getParentRuleUnchecked, CSSStyleDeclaration(..),
+        gTypeCSSStyleDeclaration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyValue\"]($2); })"
+        js_getPropertyValue ::
+        CSSStyleDeclaration -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
+getPropertyValue ::
+                 (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                   CSSStyleDeclaration -> propertyName -> m result
+getPropertyValue self propertyName
+  = liftIO
+      (fromJSString <$>
+         (js_getPropertyValue self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyValue Mozilla CSSStyleDeclaration.getPropertyValue documentation> 
+getPropertyValue_ ::
+                  (MonadIO m, ToJSString propertyName) =>
+                    CSSStyleDeclaration -> propertyName -> m ()
+getPropertyValue_ self propertyName
+  = liftIO
+      (void (js_getPropertyValue self (toJSString propertyName)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyCSSValue\"]($2); })"
+        js_getPropertyCSSValue ::
+        CSSStyleDeclaration -> JSString -> IO (Nullable CSSValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValue ::
+                    (MonadIO m, ToJSString propertyName) =>
+                      CSSStyleDeclaration -> propertyName -> m (Maybe CSSValue)
+getPropertyCSSValue self propertyName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getPropertyCSSValue self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValue_ ::
+                     (MonadIO m, ToJSString propertyName) =>
+                       CSSStyleDeclaration -> propertyName -> m ()
+getPropertyCSSValue_ self propertyName
+  = liftIO
+      (void (js_getPropertyCSSValue self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValueUnsafe ::
+                          (MonadIO m, ToJSString propertyName, HasCallStack) =>
+                            CSSStyleDeclaration -> propertyName -> m CSSValue
+getPropertyCSSValueUnsafe self propertyName
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getPropertyCSSValue self (toJSString propertyName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyCSSValue Mozilla CSSStyleDeclaration.getPropertyCSSValue documentation> 
+getPropertyCSSValueUnchecked ::
+                             (MonadIO m, ToJSString propertyName) =>
+                               CSSStyleDeclaration -> propertyName -> m CSSValue
+getPropertyCSSValueUnchecked self propertyName
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPropertyCSSValue self (toJSString propertyName)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeProperty\"]($2); })"
+        js_removeProperty :: CSSStyleDeclaration -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
+removeProperty ::
+               (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                 CSSStyleDeclaration -> propertyName -> m result
+removeProperty self propertyName
+  = liftIO
+      (fromJSString <$>
+         (js_removeProperty self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.removeProperty Mozilla CSSStyleDeclaration.removeProperty documentation> 
+removeProperty_ ::
+                (MonadIO m, ToJSString propertyName) =>
+                  CSSStyleDeclaration -> propertyName -> m ()
+removeProperty_ self propertyName
+  = liftIO (void (js_removeProperty self (toJSString propertyName)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyPriority\"]($2); })"
+        js_getPropertyPriority ::
+        CSSStyleDeclaration -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriority ::
+                    (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                      CSSStyleDeclaration -> propertyName -> m (Maybe result)
+getPropertyPriority self propertyName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getPropertyPriority self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriority_ ::
+                     (MonadIO m, ToJSString propertyName) =>
+                       CSSStyleDeclaration -> propertyName -> m ()
+getPropertyPriority_ self propertyName
+  = liftIO
+      (void (js_getPropertyPriority self (toJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriorityUnsafe ::
+                          (MonadIO m, ToJSString propertyName, HasCallStack,
+                           FromJSString result) =>
+                            CSSStyleDeclaration -> propertyName -> m result
+getPropertyPriorityUnsafe self propertyName
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getPropertyPriority self (toJSString propertyName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyPriority Mozilla CSSStyleDeclaration.getPropertyPriority documentation> 
+getPropertyPriorityUnchecked ::
+                             (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                               CSSStyleDeclaration -> propertyName -> m result
+getPropertyPriorityUnchecked self propertyName
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getPropertyPriority self (toJSString propertyName)))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setProperty\"]($2, $3, $4); })"
+        js_setProperty ::
+        CSSStyleDeclaration ->
+          JSString -> JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.setProperty Mozilla CSSStyleDeclaration.setProperty documentation> 
+setProperty ::
+            (MonadIO m, ToJSString propertyName, ToJSString value,
+             ToJSString priority) =>
+              CSSStyleDeclaration ->
+                propertyName -> value -> Maybe priority -> m ()
+setProperty self propertyName value priority
+  = liftIO
+      (js_setProperty self (toJSString propertyName) (toJSString value)
+         (toOptionalJSString priority))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        CSSStyleDeclaration -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
+item ::
+     (MonadIO m, FromJSString result) =>
+       CSSStyleDeclaration -> Word -> m result
+item self index = liftIO (fromJSString <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.item Mozilla CSSStyleDeclaration.item documentation> 
+item_ :: (MonadIO m) => CSSStyleDeclaration -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPropertyShorthand\"]($2); })"
+        js_getPropertyShorthand ::
+        CSSStyleDeclaration -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthand ::
+                     (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                       CSSStyleDeclaration -> Maybe propertyName -> m (Maybe result)
+getPropertyShorthand self propertyName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthand_ ::
+                      (MonadIO m, ToJSString propertyName) =>
+                        CSSStyleDeclaration -> Maybe propertyName -> m ()
+getPropertyShorthand_ self propertyName
+  = liftIO
+      (void
+         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthandUnsafe ::
+                           (MonadIO m, ToJSString propertyName, HasCallStack,
+                            FromJSString result) =>
+                             CSSStyleDeclaration -> Maybe propertyName -> m result
+getPropertyShorthandUnsafe self propertyName
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getPropertyShorthand self (toOptionalJSString propertyName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.getPropertyShorthand Mozilla CSSStyleDeclaration.getPropertyShorthand documentation> 
+getPropertyShorthandUnchecked ::
+                              (MonadIO m, ToJSString propertyName, FromJSString result) =>
+                                CSSStyleDeclaration -> Maybe propertyName -> m result
+getPropertyShorthandUnchecked self propertyName
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getPropertyShorthand self (toOptionalJSString propertyName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"isPropertyImplicit\"]($2) ? 1 : 0); })" js_isPropertyImplicit ::
+        CSSStyleDeclaration -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
+isPropertyImplicit ::
+                   (MonadIO m, ToJSString propertyName) =>
+                     CSSStyleDeclaration -> Maybe propertyName -> m Bool
+isPropertyImplicit self propertyName
+  = liftIO
+      (js_isPropertyImplicit self (toOptionalJSString propertyName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.isPropertyImplicit Mozilla CSSStyleDeclaration.isPropertyImplicit documentation> 
+isPropertyImplicit_ ::
+                    (MonadIO m, ToJSString propertyName) =>
+                      CSSStyleDeclaration -> Maybe propertyName -> m ()
+isPropertyImplicit_ self propertyName
+  = liftIO
+      (void
+         (js_isPropertyImplicit self (toOptionalJSString propertyName)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
+        js_setCssText :: CSSStyleDeclaration -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+setCssText ::
+           (MonadIO m, ToJSString val) => CSSStyleDeclaration -> val -> m ()
+setCssText self val = liftIO (js_setCssText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
+        CSSStyleDeclaration -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.cssText Mozilla CSSStyleDeclaration.cssText documentation> 
+getCssText ::
+           (MonadIO m, FromJSString result) => CSSStyleDeclaration -> m result
+getCssText self = liftIO (fromJSString <$> (js_getCssText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        CSSStyleDeclaration -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.length Mozilla CSSStyleDeclaration.length documentation> 
+getLength :: (MonadIO m) => CSSStyleDeclaration -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentRule\"]; })"
+        js_getParentRule :: CSSStyleDeclaration -> IO (Nullable CSSRule)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
+getParentRule ::
+              (MonadIO m) => CSSStyleDeclaration -> m (Maybe CSSRule)
+getParentRule self
+  = liftIO (nullableToMaybe <$> (js_getParentRule self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
+getParentRuleUnsafe ::
+                    (MonadIO m, HasCallStack) => CSSStyleDeclaration -> m CSSRule
+getParentRuleUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParentRule self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration.parentRule Mozilla CSSStyleDeclaration.parentRule documentation> 
+getParentRuleUnchecked ::
+                       (MonadIO m) => CSSStyleDeclaration -> m CSSRule
+getParentRuleUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getParentRule self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleRule.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleRule
+       (js_setSelectorText, setSelectorText, js_getSelectorText,
+        getSelectorText, getSelectorTextUnsafe, getSelectorTextUnchecked,
+        js_getStyle, getStyle, CSSStyleRule(..), gTypeCSSStyleRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectorText\"] = $2; })"
+        js_setSelectorText :: CSSStyleRule -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+setSelectorText ::
+                (MonadIO m, ToJSString val) => CSSStyleRule -> Maybe val -> m ()
+setSelectorText self val
+  = liftIO (js_setSelectorText self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectorText\"]; })"
+        js_getSelectorText :: CSSStyleRule -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+getSelectorText ::
+                (MonadIO m, FromJSString result) =>
+                  CSSStyleRule -> m (Maybe result)
+getSelectorText self
+  = liftIO (fromMaybeJSString <$> (js_getSelectorText self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+getSelectorTextUnsafe ::
+                      (MonadIO m, HasCallStack, FromJSString result) =>
+                        CSSStyleRule -> m result
+getSelectorTextUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getSelectorText self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.selectorText Mozilla CSSStyleRule.selectorText documentation> 
+getSelectorTextUnchecked ::
+                         (MonadIO m, FromJSString result) => CSSStyleRule -> m result
+getSelectorTextUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getSelectorText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        CSSStyleRule -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule.style Mozilla CSSStyleRule.style documentation> 
+getStyle :: (MonadIO m) => CSSStyleRule -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSStyleSheet.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSStyleSheet
+       (js_insertRuleDeprecated, insertRuleDeprecated,
+        insertRuleDeprecated_, js_insertRule, insertRule, insertRule_,
+        js_deleteRule, deleteRule, js_addRule, addRule, addRule_,
+        js_removeRule, removeRule, js_getOwnerRule, getOwnerRule,
+        js_getCssRules, getCssRules, js_getRules, getRules,
+        CSSStyleSheet(..), gTypeCSSStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
+        js_insertRuleDeprecated ::
+        CSSStyleSheet -> JSString -> Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRuleDeprecated ::
+                     (MonadIO m, ToJSString rule) =>
+                       CSSStyleSheet -> rule -> Word -> m Word
+insertRuleDeprecated self rule index
+  = liftIO (js_insertRuleDeprecated self (toJSString rule) index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRuleDeprecated_ ::
+                      (MonadIO m, ToJSString rule) =>
+                        CSSStyleSheet -> rule -> Word -> m ()
+insertRuleDeprecated_ self rule index
+  = liftIO
+      (void (js_insertRuleDeprecated self (toJSString rule) index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRule\"]($2); })"
+        js_insertRule :: CSSStyleSheet -> JSString -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) => CSSStyleSheet -> rule -> m Word
+insertRule self rule
+  = liftIO (js_insertRule self (toJSString rule))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.insertRule Mozilla CSSStyleSheet.insertRule documentation> 
+insertRule_ ::
+            (MonadIO m, ToJSString rule) => CSSStyleSheet -> rule -> m ()
+insertRule_ self rule
+  = liftIO (void (js_insertRule self (toJSString rule)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+        js_deleteRule :: CSSStyleSheet -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.deleteRule Mozilla CSSStyleSheet.deleteRule documentation> 
+deleteRule :: (MonadIO m) => CSSStyleSheet -> Word -> m ()
+deleteRule self index = liftIO (js_deleteRule self index)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addRule\"]($2, $3, $4); })"
+        js_addRule ::
+        CSSStyleSheet ->
+          Optional JSString -> Optional JSString -> Optional Word -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
+addRule ::
+        (MonadIO m, ToJSString selector, ToJSString style) =>
+          CSSStyleSheet ->
+            Maybe selector -> Maybe style -> Maybe Word -> m Int
+addRule self selector style index
+  = liftIO
+      (js_addRule self (toOptionalJSString selector)
+         (toOptionalJSString style)
+         (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.addRule Mozilla CSSStyleSheet.addRule documentation> 
+addRule_ ::
+         (MonadIO m, ToJSString selector, ToJSString style) =>
+           CSSStyleSheet ->
+             Maybe selector -> Maybe style -> Maybe Word -> m ()
+addRule_ self selector style index
+  = liftIO
+      (void
+         (js_addRule self (toOptionalJSString selector)
+            (toOptionalJSString style)
+            (maybeToOptional index)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeRule\"]($2); })"
+        js_removeRule :: CSSStyleSheet -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.removeRule Mozilla CSSStyleSheet.removeRule documentation> 
+removeRule :: (MonadIO m) => CSSStyleSheet -> Maybe Word -> m ()
+removeRule self index
+  = liftIO (js_removeRule self (maybeToOptional index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ownerRule\"]; })"
+        js_getOwnerRule :: CSSStyleSheet -> IO CSSRule
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.ownerRule Mozilla CSSStyleSheet.ownerRule documentation> 
+getOwnerRule :: (MonadIO m) => CSSStyleSheet -> m CSSRule
+getOwnerRule self = liftIO (js_getOwnerRule self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
+        :: CSSStyleSheet -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.cssRules Mozilla CSSStyleSheet.cssRules documentation> 
+getCssRules :: (MonadIO m) => CSSStyleSheet -> m CSSRuleList
+getCssRules self = liftIO (js_getCssRules self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })" js_getRules ::
+        CSSStyleSheet -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet.rules Mozilla CSSStyleSheet.rules documentation> 
+getRules :: (MonadIO m) => CSSStyleSheet -> m CSSRuleList
+getRules self = liftIO (js_getRules self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSSupportsRule.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSSupportsRule
+       (js_insertRule, insertRule, insertRule_, js_deleteRule, deleteRule,
+        js_getCssRules, getCssRules, js_getConditionText, getConditionText,
+        CSSSupportsRule(..), gTypeCSSSupportsRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertRule\"]($2, $3); })"
+        js_insertRule :: CSSSupportsRule -> JSString -> Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
+insertRule ::
+           (MonadIO m, ToJSString rule) =>
+             CSSSupportsRule -> rule -> Word -> m Word
+insertRule self rule index
+  = liftIO (js_insertRule self (toJSString rule) index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.insertRule Mozilla CSSSupportsRule.insertRule documentation> 
+insertRule_ ::
+            (MonadIO m, ToJSString rule) =>
+              CSSSupportsRule -> rule -> Word -> m ()
+insertRule_ self rule index
+  = liftIO (void (js_insertRule self (toJSString rule) index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRule\"]($2); })"
+        js_deleteRule :: CSSSupportsRule -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.deleteRule Mozilla CSSSupportsRule.deleteRule documentation> 
+deleteRule :: (MonadIO m) => CSSSupportsRule -> Word -> m ()
+deleteRule self index = liftIO (js_deleteRule self index)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
+        :: CSSSupportsRule -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.cssRules Mozilla CSSSupportsRule.cssRules documentation> 
+getCssRules :: (MonadIO m) => CSSSupportsRule -> m CSSRuleList
+getCssRules self = liftIO (js_getCssRules self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"conditionText\"]; })"
+        js_getConditionText :: CSSSupportsRule -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule.conditionText Mozilla CSSSupportsRule.conditionText documentation> 
+getConditionText ::
+                 (MonadIO m, FromJSString result) => CSSSupportsRule -> m result
+getConditionText self
+  = liftIO (fromJSString <$> (js_getConditionText self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSValue.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSValue
+       (pattern CSS_INHERIT, pattern CSS_PRIMITIVE_VALUE,
+        pattern CSS_VALUE_LIST, pattern CSS_CUSTOM, js_setCssText,
+        setCssText, js_getCssText, getCssText, getCssTextUnsafe,
+        getCssTextUnchecked, js_getCssValueType, getCssValueType,
+        CSSValue(..), gTypeCSSValue, IsCSSValue, toCSSValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern CSS_INHERIT = 0
+pattern CSS_PRIMITIVE_VALUE = 1
+pattern CSS_VALUE_LIST = 2
+pattern CSS_CUSTOM = 3
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"cssText\"] = $2; })"
+        js_setCssText :: CSSValue -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+setCssText ::
+           (MonadIO m, IsCSSValue self, ToJSString val) =>
+             self -> Maybe val -> m ()
+setCssText self val
+  = liftIO (js_setCssText (toCSSValue self) (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssText\"]; })" js_getCssText ::
+        CSSValue -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+getCssText ::
+           (MonadIO m, IsCSSValue self, FromJSString result) =>
+             self -> m (Maybe result)
+getCssText self
+  = liftIO (fromMaybeJSString <$> (js_getCssText (toCSSValue self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+getCssTextUnsafe ::
+                 (MonadIO m, IsCSSValue self, HasCallStack, FromJSString result) =>
+                   self -> m result
+getCssTextUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getCssText (toCSSValue self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssText Mozilla CSSValue.cssText documentation> 
+getCssTextUnchecked ::
+                    (MonadIO m, IsCSSValue self, FromJSString result) =>
+                      self -> m result
+getCssTextUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getCssText (toCSSValue self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssValueType\"]; })"
+        js_getCssValueType :: CSSValue -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue.cssValueType Mozilla CSSValue.cssValueType documentation> 
+getCssValueType :: (MonadIO m, IsCSSValue self) => self -> m Word
+getCssValueType self
+  = liftIO (js_getCssValueType (toCSSValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs b/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CSSValueList.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CSSValueList
+       (js_item, item, item_, js_getLength, getLength, CSSValueList(..),
+        gTypeCSSValueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        CSSValueList -> Word -> IO CSSValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
+item :: (MonadIO m) => CSSValueList -> Word -> m CSSValue
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.item Mozilla CSSValueList.item documentation> 
+item_ :: (MonadIO m) => CSSValueList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        CSSValueList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList.length Mozilla CSSValueList.length documentation> 
+getLength :: (MonadIO m) => CSSValueList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasCaptureMediaStreamTrack.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasCaptureMediaStreamTrack
+       (js_requestFrame, requestFrame, js_getCanvas, getCanvas,
+        CanvasCaptureMediaStreamTrack(..),
+        gTypeCanvasCaptureMediaStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requestFrame\"](); })"
+        js_requestFrame :: CanvasCaptureMediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.requestFrame Mozilla CanvasCaptureMediaStreamTrack.requestFrame documentation> 
+requestFrame ::
+             (MonadIO m) => CanvasCaptureMediaStreamTrack -> m ()
+requestFrame self = liftIO (js_requestFrame self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
+        CanvasCaptureMediaStreamTrack -> IO HTMLCanvasElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack.canvas Mozilla CanvasCaptureMediaStreamTrack.canvas documentation> 
+getCanvas ::
+          (MonadIO m) => CanvasCaptureMediaStreamTrack -> m HTMLCanvasElement
+getCanvas self = liftIO (js_getCanvas self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasGradient.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasGradient
+       (js_addColorStop, addColorStop, CanvasGradient(..),
+        gTypeCanvasGradient)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addColorStop\"]($2, $3); })"
+        js_addColorStop :: CanvasGradient -> Float -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient.addColorStop Mozilla CanvasGradient.addColorStop documentation> 
+addColorStop ::
+             (MonadIO m, ToJSString color) =>
+               CanvasGradient -> Float -> color -> m ()
+addColorStop self offset color
+  = liftIO (js_addColorStop self offset (toJSString color))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasPath.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasPath
+       (js_closePath, closePath, js_moveTo, moveTo, js_lineTo, lineTo,
+        js_quadraticCurveTo, quadraticCurveTo, js_bezierCurveTo,
+        bezierCurveTo, js_arcTo, arcTo, js_rect, rect, js_arc, arc,
+        js_ellipse, ellipse, CanvasPath(..), gTypeCanvasPath, IsCanvasPath,
+        toCanvasPath)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"closePath\"](); })" js_closePath
+        :: CanvasPath -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.closePath Mozilla CanvasPath.closePath documentation> 
+closePath :: (MonadIO m, IsCanvasPath self) => self -> m ()
+closePath self = liftIO (js_closePath (toCanvasPath self))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })" js_moveTo
+        :: CanvasPath -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.moveTo Mozilla CanvasPath.moveTo documentation> 
+moveTo ::
+       (MonadIO m, IsCanvasPath self) => self -> Double -> Double -> m ()
+moveTo self x y = liftIO (js_moveTo (toCanvasPath self) x y)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"lineTo\"]($2, $3); })" js_lineTo
+        :: CanvasPath -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.lineTo Mozilla CanvasPath.lineTo documentation> 
+lineTo ::
+       (MonadIO m, IsCanvasPath self) => self -> Double -> Double -> m ()
+lineTo self x y = liftIO (js_lineTo (toCanvasPath self) x y)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"quadraticCurveTo\"]($2, $3,\n$4, $5); })" js_quadraticCurveTo ::
+        CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.quadraticCurveTo Mozilla CanvasPath.quadraticCurveTo documentation> 
+quadraticCurveTo ::
+                 (MonadIO m, IsCanvasPath self) =>
+                   self -> Double -> Double -> Double -> Double -> m ()
+quadraticCurveTo self cpx cpy x y
+  = liftIO (js_quadraticCurveTo (toCanvasPath self) cpx cpy x y)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"bezierCurveTo\"]($2, $3, $4,\n$5, $6, $7); })" js_bezierCurveTo
+        ::
+        CanvasPath ->
+          Double -> Double -> Double -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.bezierCurveTo Mozilla CanvasPath.bezierCurveTo documentation> 
+bezierCurveTo ::
+              (MonadIO m, IsCanvasPath self) =>
+                self ->
+                  Double -> Double -> Double -> Double -> Double -> Double -> m ()
+bezierCurveTo self cp1x cp1y cp2x cp2y x y
+  = liftIO
+      (js_bezierCurveTo (toCanvasPath self) cp1x cp1y cp2x cp2y x y)
+ 
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"arcTo\"]($2, $3, $4, $5, $6); })"
+        js_arcTo ::
+        CanvasPath ->
+          Double -> Double -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arcTo Mozilla CanvasPath.arcTo documentation> 
+arcTo ::
+      (MonadIO m, IsCanvasPath self) =>
+        self -> Double -> Double -> Double -> Double -> Double -> m ()
+arcTo self x1 y1 x2 y2 radius
+  = liftIO (js_arcTo (toCanvasPath self) x1 y1 x2 y2 radius)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"rect\"]($2, $3, $4, $5); })"
+        js_rect ::
+        CanvasPath -> Double -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.rect Mozilla CanvasPath.rect documentation> 
+rect ::
+     (MonadIO m, IsCanvasPath self) =>
+       self -> Double -> Double -> Double -> Double -> m ()
+rect self x y w h = liftIO (js_rect (toCanvasPath self) x y w h)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"arc\"]($2, $3, $4, $5, $6,\n$7); })" js_arc ::
+        CanvasPath ->
+          Double -> Double -> Double -> Double -> Double -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.arc Mozilla CanvasPath.arc documentation> 
+arc ::
+    (MonadIO m, IsCanvasPath self) =>
+      self ->
+        Double -> Double -> Double -> Double -> Double -> Bool -> m ()
+arc self x y radius startAngle endAngle anticlockwise
+  = liftIO
+      (js_arc (toCanvasPath self) x y radius startAngle endAngle
+         anticlockwise)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"ellipse\"]($2, $3, $4, $5,\n$6, $7, $8, $9); })" js_ellipse ::
+        CanvasPath ->
+          Double ->
+            Double ->
+              Double -> Double -> Double -> Double -> Double -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath.ellipse Mozilla CanvasPath.ellipse documentation> 
+ellipse ::
+        (MonadIO m, IsCanvasPath self) =>
+          self ->
+            Double ->
+              Double ->
+                Double -> Double -> Double -> Double -> Double -> Bool -> m ()
+ellipse self x y radiusX radiusY rotation startAngle endAngle
+  anticlockwise
+  = liftIO
+      (js_ellipse (toCanvasPath self) x y radiusX radiusY rotation
+         startAngle
+         endAngle
+         anticlockwise)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CanvasRenderingContext2D.hs
@@ -0,0 +1,1432 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CanvasRenderingContext2D
+       (js_save, save, js_restore, restore, js_commit, commit, js_scale,
+        scale, js_rotate, rotate, js_translate, translate, js_transform,
+        transform, js_setTransform, setTransform, js_resetTransform,
+        resetTransform, js_setLineDash, setLineDash, js_getLineDash,
+        getLineDash, getLineDash_, js_clearRect, clearRect, js_fillRect,
+        fillRect, js_beginPath, beginPath, js_fillPath, fillPath,
+        js_strokePath, strokePath, js_clipPath, clipPath, js_fill, fill,
+        js_stroke, stroke, js_clip, clip, js_isPointInPathPath,
+        isPointInPathPath, isPointInPathPath_, js_isPointInStrokePath,
+        isPointInStrokePath, isPointInStrokePath_, js_isPointInPath,
+        isPointInPath, isPointInPath_, js_isPointInStroke, isPointInStroke,
+        isPointInStroke_, js_measureText, measureText, measureText_,
+        js_setAlpha, setAlpha, js_setCompositeOperation,
+        setCompositeOperation, js_setLineWidthFunction,
+        setLineWidthFunction, js_setLineCapFunction, setLineCapFunction,
+        js_setLineJoinFunction, setLineJoinFunction,
+        js_setMiterLimitFunction, setMiterLimitFunction, js_clearShadow,
+        clearShadow, js_fillText, fillText, js_strokeText, strokeText,
+        js_setStrokeColor, setStrokeColor, js_setStrokeColorGray,
+        setStrokeColorGray, js_setStrokeColorRGB, setStrokeColorRGB,
+        js_setStrokeColorCYMK, setStrokeColorCYMK, js_setFillColor,
+        setFillColor, js_setFillColorGray, setFillColorGray,
+        js_setFillColorRGB, setFillColorRGB, js_setFillColorCYMK,
+        setFillColorCYMK, js_strokeRect, strokeRect, js_drawImage,
+        drawImage, js_drawImageScaled, drawImageScaled, js_drawImagePart,
+        drawImagePart, js_drawImageFromRect, drawImageFromRect,
+        js_setShadow, setShadow, js_setShadowGray, setShadowGray,
+        js_setShadowRGB, setShadowRGB, js_setShadowCYMK, setShadowCYMK,
+        js_putImageData, putImageData, js_putImageDataDirty,
+        putImageDataDirty, js_webkitPutImageDataHD, webkitPutImageDataHD,
+        js_webkitPutImageDataHDDirty, webkitPutImageDataHDDirty,
+        js_createImageData, createImageData, createImageData_,
+        js_createImageDataSize, createImageDataSize, createImageDataSize_,
+        js_createLinearGradient, createLinearGradient,
+        createLinearGradient_, js_createRadialGradient,
+        createRadialGradient, createRadialGradient_, js_createPattern,
+        createPattern, createPattern_, createPatternUnsafe,
+        createPatternUnchecked, js_getImageData, getImageData,
+        getImageData_, js_webkitGetImageDataHD, webkitGetImageDataHD,
+        webkitGetImageDataHD_, js_drawFocusIfNeeded, drawFocusIfNeeded,
+        js_drawFocusIfNeededPath, drawFocusIfNeededPath, js_getCanvas,
+        getCanvas, js_setGlobalAlpha, setGlobalAlpha, js_getGlobalAlpha,
+        getGlobalAlpha, js_setGlobalCompositeOperation,
+        setGlobalCompositeOperation, js_getGlobalCompositeOperation,
+        getGlobalCompositeOperation, js_setLineWidth, setLineWidth,
+        js_getLineWidth, getLineWidth, js_setLineCap, setLineCap,
+        js_getLineCap, getLineCap, js_setLineJoin, setLineJoin,
+        js_getLineJoin, getLineJoin, js_setMiterLimit, setMiterLimit,
+        js_getMiterLimit, getMiterLimit, js_setShadowOffsetX,
+        setShadowOffsetX, js_getShadowOffsetX, getShadowOffsetX,
+        js_setShadowOffsetY, setShadowOffsetY, js_getShadowOffsetY,
+        getShadowOffsetY, js_setShadowBlur, setShadowBlur,
+        js_getShadowBlur, getShadowBlur, js_setShadowColor, setShadowColor,
+        js_getShadowColor, getShadowColor, js_setLineDashOffset,
+        setLineDashOffset, js_getLineDashOffset, getLineDashOffset,
+        js_setWebkitLineDash, setWebkitLineDash, js_getWebkitLineDash,
+        getWebkitLineDash, js_setWebkitLineDashOffset,
+        setWebkitLineDashOffset, js_getWebkitLineDashOffset,
+        getWebkitLineDashOffset, js_setFont, setFont, js_getFont, getFont,
+        js_setTextAlign, setTextAlign, js_getTextAlign, getTextAlign,
+        js_setTextBaseline, setTextBaseline, js_getTextBaseline,
+        getTextBaseline, js_setDirection, setDirection, js_getDirection,
+        getDirection, js_setStrokeStyle, setStrokeStyle, js_getStrokeStyle,
+        getStrokeStyle, js_setFillStyle, setFillStyle, js_getFillStyle,
+        getFillStyle, js_getWebkitBackingStorePixelRatio,
+        getWebkitBackingStorePixelRatio, js_setImageSmoothingEnabled,
+        setImageSmoothingEnabled, js_getImageSmoothingEnabled,
+        getImageSmoothingEnabled, js_setWebkitImageSmoothingEnabled,
+        setWebkitImageSmoothingEnabled, js_getWebkitImageSmoothingEnabled,
+        getWebkitImageSmoothingEnabled, js_setImageSmoothingQuality,
+        setImageSmoothingQuality, js_getImageSmoothingQuality,
+        getImageSmoothingQuality, CanvasRenderingContext2D(..),
+        gTypeCanvasRenderingContext2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"save\"](); })" js_save ::
+        CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.save Mozilla CanvasRenderingContext2D.save documentation> 
+save :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+save self = liftIO (js_save self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"restore\"](); })" js_restore ::
+        CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.restore Mozilla CanvasRenderingContext2D.restore documentation> 
+restore :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+restore self = liftIO (js_restore self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"commit\"](); })" js_commit ::
+        CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.commit Mozilla CanvasRenderingContext2D.commit documentation> 
+commit :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+commit self = liftIO (js_commit self)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scale\"]($2, $3); })" js_scale
+        :: CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.scale Mozilla CanvasRenderingContext2D.scale documentation> 
+scale ::
+      (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+scale self sx sy = liftIO (js_scale self sx sy)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"rotate\"]($2); })" js_rotate ::
+        CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.rotate Mozilla CanvasRenderingContext2D.rotate documentation> 
+rotate :: (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+rotate self angle = liftIO (js_rotate self angle)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"translate\"]($2, $3); })"
+        js_translate :: CanvasRenderingContext2D -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.translate Mozilla CanvasRenderingContext2D.translate documentation> 
+translate ::
+          (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+translate self tx ty = liftIO (js_translate self tx ty)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"transform\"]($2, $3, $4, $5,\n$6, $7); })" js_transform ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.transform Mozilla CanvasRenderingContext2D.transform documentation> 
+transform ::
+          (MonadIO m) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> Float -> Float -> Float -> m ()
+transform self m11 m12 m21 m22 dx dy
+  = liftIO (js_transform self m11 m12 m21 m22 dx dy)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"setTransform\"]($2, $3, $4,\n$5, $6, $7); })" js_setTransform ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setTransform Mozilla CanvasRenderingContext2D.setTransform documentation> 
+setTransform ::
+             (MonadIO m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setTransform self m11 m12 m21 m22 dx dy
+  = liftIO (js_setTransform self m11 m12 m21 m22 dx dy)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"resetTransform\"](); })"
+        js_resetTransform :: CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.resetTransform Mozilla CanvasRenderingContext2D.resetTransform documentation> 
+resetTransform :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+resetTransform self = liftIO (js_resetTransform self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineDash\"]($2); })"
+        js_setLineDash :: CanvasRenderingContext2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineDash Mozilla CanvasRenderingContext2D.setLineDash documentation> 
+setLineDash ::
+            (MonadIO m) => CanvasRenderingContext2D -> [Float] -> m ()
+setLineDash self dash
+  = liftIO (toJSVal dash >>= \ dash' -> js_setLineDash self dash')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getLineDash\"](); })"
+        js_getLineDash :: CanvasRenderingContext2D -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
+getLineDash :: (MonadIO m) => CanvasRenderingContext2D -> m [Float]
+getLineDash self
+  = liftIO ((js_getLineDash self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getLineDash Mozilla CanvasRenderingContext2D.getLineDash documentation> 
+getLineDash_ :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+getLineDash_ self = liftIO (void (js_getLineDash self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"clearRect\"]($2, $3, $4, $5); })" js_clearRect ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearRect Mozilla CanvasRenderingContext2D.clearRect documentation> 
+clearRect ::
+          (MonadIO m) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> Float -> m ()
+clearRect self x y width height
+  = liftIO (js_clearRect self x y width height)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"fillRect\"]($2, $3, $4, $5); })"
+        js_fillRect ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillRect Mozilla CanvasRenderingContext2D.fillRect documentation> 
+fillRect ::
+         (MonadIO m) =>
+           CanvasRenderingContext2D ->
+             Float -> Float -> Float -> Float -> m ()
+fillRect self x y width height
+  = liftIO (js_fillRect self x y width height)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"beginPath\"](); })" js_beginPath
+        :: CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.beginPath Mozilla CanvasRenderingContext2D.beginPath documentation> 
+beginPath :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+beginPath self = liftIO (js_beginPath self)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"fill\"]($2, $3); })" js_fillPath
+        ::
+        CanvasRenderingContext2D ->
+          Path2D -> Optional CanvasWindingRule -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fillPath ::
+         (MonadIO m) =>
+           CanvasRenderingContext2D ->
+             Path2D -> Maybe CanvasWindingRule -> m ()
+fillPath self path winding
+  = liftIO (js_fillPath self path (maybeToOptional winding))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"stroke\"]($2); })" js_strokePath
+        :: CanvasRenderingContext2D -> Path2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
+strokePath ::
+           (MonadIO m) => CanvasRenderingContext2D -> Path2D -> m ()
+strokePath self path = liftIO (js_strokePath self path)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"clip\"]($2, $3); })" js_clipPath
+        ::
+        CanvasRenderingContext2D ->
+          Path2D -> Optional CanvasWindingRule -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clipPath ::
+         (MonadIO m) =>
+           CanvasRenderingContext2D ->
+             Path2D -> Maybe CanvasWindingRule -> m ()
+clipPath self path winding
+  = liftIO (js_clipPath self path (maybeToOptional winding))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"fill\"]($2); })" js_fill ::
+        CanvasRenderingContext2D -> Optional CanvasWindingRule -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fill Mozilla CanvasRenderingContext2D.fill documentation> 
+fill ::
+     (MonadIO m) =>
+       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
+fill self winding = liftIO (js_fill self (maybeToOptional winding))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stroke\"](); })" js_stroke ::
+        CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.stroke Mozilla CanvasRenderingContext2D.stroke documentation> 
+stroke :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+stroke self = liftIO (js_stroke self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clip\"]($2); })" js_clip ::
+        CanvasRenderingContext2D -> Optional CanvasWindingRule -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clip Mozilla CanvasRenderingContext2D.clip documentation> 
+clip ::
+     (MonadIO m) =>
+       CanvasRenderingContext2D -> Maybe CanvasWindingRule -> m ()
+clip self winding = liftIO (js_clip self (maybeToOptional winding))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return ($1[\"isPointInPath\"]($2, $3, $4,\n$5) ? 1 : 0); })"
+        js_isPointInPathPath ::
+        CanvasRenderingContext2D ->
+          Path2D -> Float -> Float -> Optional CanvasWindingRule -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPathPath ::
+                  (MonadIO m) =>
+                    CanvasRenderingContext2D ->
+                      Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m Bool
+isPointInPathPath self path x y winding
+  = liftIO
+      (js_isPointInPathPath self path x y (maybeToOptional winding))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPathPath_ ::
+                   (MonadIO m) =>
+                     CanvasRenderingContext2D ->
+                       Path2D -> Float -> Float -> Maybe CanvasWindingRule -> m ()
+isPointInPathPath_ self path x y winding
+  = liftIO
+      (void
+         (js_isPointInPathPath self path x y (maybeToOptional winding)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return ($1[\"isPointInStroke\"]($2, $3,\n$4) ? 1 : 0); })"
+        js_isPointInStrokePath ::
+        CanvasRenderingContext2D -> Path2D -> Float -> Float -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStrokePath ::
+                    (MonadIO m) =>
+                      CanvasRenderingContext2D -> Path2D -> Float -> Float -> m Bool
+isPointInStrokePath self path x y
+  = liftIO (js_isPointInStrokePath self path x y)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStrokePath_ ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D -> Path2D -> Float -> Float -> m ()
+isPointInStrokePath_ self path x y
+  = liftIO (void (js_isPointInStrokePath self path x y))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return ($1[\"isPointInPath\"]($2, $3,\n$4) ? 1 : 0); })" js_isPointInPath ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Optional CanvasWindingRule -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPath ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Maybe CanvasWindingRule -> m Bool
+isPointInPath self x y winding
+  = liftIO (js_isPointInPath self x y (maybeToOptional winding))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInPath Mozilla CanvasRenderingContext2D.isPointInPath documentation> 
+isPointInPath_ ::
+               (MonadIO m) =>
+                 CanvasRenderingContext2D ->
+                   Float -> Float -> Maybe CanvasWindingRule -> m ()
+isPointInPath_ self x y winding
+  = liftIO
+      (void (js_isPointInPath self x y (maybeToOptional winding)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return ($1[\"isPointInStroke\"]($2,\n$3) ? 1 : 0); })" js_isPointInStroke ::
+        CanvasRenderingContext2D -> Float -> Float -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStroke ::
+                (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m Bool
+isPointInStroke self x y = liftIO (js_isPointInStroke self x y)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.isPointInStroke Mozilla CanvasRenderingContext2D.isPointInStroke documentation> 
+isPointInStroke_ ::
+                 (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+isPointInStroke_ self x y
+  = liftIO (void (js_isPointInStroke self x y))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"measureText\"]($2); })"
+        js_measureText ::
+        CanvasRenderingContext2D -> JSString -> IO TextMetrics
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
+measureText ::
+            (MonadIO m, ToJSString text) =>
+              CanvasRenderingContext2D -> text -> m TextMetrics
+measureText self text
+  = liftIO (js_measureText self (toJSString text))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.measureText Mozilla CanvasRenderingContext2D.measureText documentation> 
+measureText_ ::
+             (MonadIO m, ToJSString text) =>
+               CanvasRenderingContext2D -> text -> m ()
+measureText_ self text
+  = liftIO (void (js_measureText self (toJSString text)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setAlpha\"]($2); })" js_setAlpha
+        :: CanvasRenderingContext2D -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setAlpha Mozilla CanvasRenderingContext2D.setAlpha documentation> 
+setAlpha ::
+         (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
+setAlpha self alpha
+  = liftIO (js_setAlpha self (maybeToOptional alpha))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setCompositeOperation\"]($2); })" js_setCompositeOperation ::
+        CanvasRenderingContext2D -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setCompositeOperation Mozilla CanvasRenderingContext2D.setCompositeOperation documentation> 
+setCompositeOperation ::
+                      (MonadIO m, ToJSString compositeOperation) =>
+                        CanvasRenderingContext2D -> Maybe compositeOperation -> m ()
+setCompositeOperation self compositeOperation
+  = liftIO
+      (js_setCompositeOperation self
+         (toOptionalJSString compositeOperation))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineWidth\"]($2); })"
+        js_setLineWidthFunction ::
+        CanvasRenderingContext2D -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineWidth Mozilla CanvasRenderingContext2D.setLineWidth documentation> 
+setLineWidthFunction ::
+                     (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
+setLineWidthFunction self width
+  = liftIO (js_setLineWidthFunction self (maybeToOptional width))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineCap\"]($2); })"
+        js_setLineCapFunction ::
+        CanvasRenderingContext2D -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineCap Mozilla CanvasRenderingContext2D.setLineCap documentation> 
+setLineCapFunction ::
+                   (MonadIO m, ToJSString cap) =>
+                     CanvasRenderingContext2D -> Maybe cap -> m ()
+setLineCapFunction self cap
+  = liftIO (js_setLineCapFunction self (toOptionalJSString cap))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setLineJoin\"]($2); })"
+        js_setLineJoinFunction ::
+        CanvasRenderingContext2D -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setLineJoin Mozilla CanvasRenderingContext2D.setLineJoin documentation> 
+setLineJoinFunction ::
+                    (MonadIO m, ToJSString join) =>
+                      CanvasRenderingContext2D -> Maybe join -> m ()
+setLineJoinFunction self join
+  = liftIO (js_setLineJoinFunction self (toOptionalJSString join))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setMiterLimit\"]($2); })"
+        js_setMiterLimitFunction ::
+        CanvasRenderingContext2D -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setMiterLimit Mozilla CanvasRenderingContext2D.setMiterLimit documentation> 
+setMiterLimitFunction ::
+                      (MonadIO m) => CanvasRenderingContext2D -> Maybe Float -> m ()
+setMiterLimitFunction self limit
+  = liftIO (js_setMiterLimitFunction self (maybeToOptional limit))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearShadow\"](); })"
+        js_clearShadow :: CanvasRenderingContext2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.clearShadow Mozilla CanvasRenderingContext2D.clearShadow documentation> 
+clearShadow :: (MonadIO m) => CanvasRenderingContext2D -> m ()
+clearShadow self = liftIO (js_clearShadow self)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"fillText\"]($2, $3, $4, $5); })"
+        js_fillText ::
+        CanvasRenderingContext2D ->
+          JSString -> Float -> Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillText Mozilla CanvasRenderingContext2D.fillText documentation> 
+fillText ::
+         (MonadIO m, ToJSString text) =>
+           CanvasRenderingContext2D ->
+             text -> Float -> Float -> Maybe Float -> m ()
+fillText self text x y maxWidth
+  = liftIO
+      (js_fillText self (toJSString text) x y (maybeToOptional maxWidth))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"strokeText\"]($2, $3, $4, $5); })" js_strokeText ::
+        CanvasRenderingContext2D ->
+          JSString -> Float -> Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeText Mozilla CanvasRenderingContext2D.strokeText documentation> 
+strokeText ::
+           (MonadIO m, ToJSString text) =>
+             CanvasRenderingContext2D ->
+               text -> Float -> Float -> Maybe Float -> m ()
+strokeText self text x y maxWidth
+  = liftIO
+      (js_strokeText self (toJSString text) x y
+         (maybeToOptional maxWidth))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStrokeColor\"]($2, $3); })"
+        js_setStrokeColor ::
+        CanvasRenderingContext2D -> JSString -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColor ::
+               (MonadIO m, ToJSString color) =>
+                 CanvasRenderingContext2D -> color -> Maybe Float -> m ()
+setStrokeColor self color alpha
+  = liftIO
+      (js_setStrokeColor self (toJSString color) (maybeToOptional alpha))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStrokeColor\"]($2, $3); })"
+        js_setStrokeColorGray ::
+        CanvasRenderingContext2D -> Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorGray ::
+                   (MonadIO m) =>
+                     CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
+setStrokeColorGray self grayLevel alpha
+  = liftIO
+      (js_setStrokeColorGray self grayLevel (maybeToOptional alpha))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"setStrokeColor\"]($2, $3, $4,\n$5); })" js_setStrokeColorRGB ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorRGB ::
+                  (MonadIO m) =>
+                    CanvasRenderingContext2D ->
+                      Float -> Float -> Float -> Float -> m ()
+setStrokeColorRGB self r g b a
+  = liftIO (js_setStrokeColorRGB self r g b a)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setStrokeColor\"]($2, $3, $4,\n$5, $6); })" js_setStrokeColorCYMK
+        ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setStrokeColor Mozilla CanvasRenderingContext2D.setStrokeColor documentation> 
+setStrokeColorCYMK ::
+                   (MonadIO m) =>
+                     CanvasRenderingContext2D ->
+                       Float -> Float -> Float -> Float -> Float -> m ()
+setStrokeColorCYMK self c m y k a
+  = liftIO (js_setStrokeColorCYMK self c m y k a)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFillColor\"]($2, $3); })"
+        js_setFillColor ::
+        CanvasRenderingContext2D -> JSString -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColor ::
+             (MonadIO m, ToJSString color) =>
+               CanvasRenderingContext2D -> color -> Maybe Float -> m ()
+setFillColor self color alpha
+  = liftIO
+      (js_setFillColor self (toJSString color) (maybeToOptional alpha))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFillColor\"]($2, $3); })"
+        js_setFillColorGray ::
+        CanvasRenderingContext2D -> Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorGray ::
+                 (MonadIO m) =>
+                   CanvasRenderingContext2D -> Float -> Maybe Float -> m ()
+setFillColorGray self grayLevel alpha
+  = liftIO
+      (js_setFillColorGray self grayLevel (maybeToOptional alpha))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"setFillColor\"]($2, $3, $4,\n$5); })" js_setFillColorRGB ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorRGB ::
+                (MonadIO m) =>
+                  CanvasRenderingContext2D ->
+                    Float -> Float -> Float -> Float -> m ()
+setFillColorRGB self r g b a
+  = liftIO (js_setFillColorRGB self r g b a)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setFillColor\"]($2, $3, $4,\n$5, $6); })" js_setFillColorCYMK ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setFillColor Mozilla CanvasRenderingContext2D.setFillColor documentation> 
+setFillColorCYMK ::
+                 (MonadIO m) =>
+                   CanvasRenderingContext2D ->
+                     Float -> Float -> Float -> Float -> Float -> m ()
+setFillColorCYMK self c m y k a
+  = liftIO (js_setFillColorCYMK self c m y k a)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"strokeRect\"]($2, $3, $4, $5); })" js_strokeRect ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeRect Mozilla CanvasRenderingContext2D.strokeRect documentation> 
+strokeRect ::
+           (MonadIO m) =>
+             CanvasRenderingContext2D ->
+               Float -> Float -> Float -> Float -> m ()
+strokeRect self x y width height
+  = liftIO (js_strokeRect self x y width height)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"drawImage\"]($2, $3, $4); })"
+        js_drawImage ::
+        CanvasRenderingContext2D ->
+          CanvasImageSource -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImage ::
+          (MonadIO m, IsCanvasImageSource image) =>
+            CanvasRenderingContext2D -> image -> Float -> Float -> m ()
+drawImage self image x y
+  = liftIO (js_drawImage self (toCanvasImageSource image) x y)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawImage\"]($2, $3, $4, $5,\n$6); })" js_drawImageScaled ::
+        CanvasRenderingContext2D ->
+          CanvasImageSource -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImageScaled ::
+                (MonadIO m, IsCanvasImageSource image) =>
+                  CanvasRenderingContext2D ->
+                    image -> Float -> Float -> Float -> Float -> m ()
+drawImageScaled self image x y width height
+  = liftIO
+      (js_drawImageScaled self (toCanvasImageSource image) x y width
+         height)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"drawImage\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10); })"
+        js_drawImagePart ::
+        CanvasRenderingContext2D ->
+          CanvasImageSource ->
+            Float ->
+              Float ->
+                Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImage Mozilla CanvasRenderingContext2D.drawImage documentation> 
+drawImagePart ::
+              (MonadIO m, IsCanvasImageSource image) =>
+                CanvasRenderingContext2D ->
+                  image ->
+                    Float ->
+                      Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+drawImagePart self image sx sy sw sh dx dy dw dh
+  = liftIO
+      (js_drawImagePart self (toCanvasImageSource image) sx sy sw sh dx
+         dy
+         dw
+         dh)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"drawImageFromRect\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11); })"
+        js_drawImageFromRect ::
+        CanvasRenderingContext2D ->
+          HTMLImageElement ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float ->
+                  Optional Float ->
+                    Optional Float ->
+                      Optional Float ->
+                        Optional Float -> Optional Float -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawImageFromRect Mozilla CanvasRenderingContext2D.drawImageFromRect documentation> 
+drawImageFromRect ::
+                  (MonadIO m, ToJSString compositeOperation) =>
+                    CanvasRenderingContext2D ->
+                      HTMLImageElement ->
+                        Maybe Float ->
+                          Maybe Float ->
+                            Maybe Float ->
+                              Maybe Float ->
+                                Maybe Float ->
+                                  Maybe Float ->
+                                    Maybe Float -> Maybe Float -> Maybe compositeOperation -> m ()
+drawImageFromRect self image sx sy sw sh dx dy dw dh
+  compositeOperation
+  = liftIO
+      (js_drawImageFromRect self image (maybeToOptional sx)
+         (maybeToOptional sy)
+         (maybeToOptional sw)
+         (maybeToOptional sh)
+         (maybeToOptional dx)
+         (maybeToOptional dy)
+         (maybeToOptional dw)
+         (maybeToOptional dh)
+         (toOptionalJSString compositeOperation))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6); })" js_setShadow ::
+        CanvasRenderingContext2D ->
+          Float ->
+            Float -> Float -> Optional JSString -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadow ::
+          (MonadIO m, ToJSString color) =>
+            CanvasRenderingContext2D ->
+              Float -> Float -> Float -> Maybe color -> Maybe Float -> m ()
+setShadow self width height blur color alpha
+  = liftIO
+      (js_setShadow self width height blur (toOptionalJSString color)
+         (maybeToOptional alpha))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6); })" js_setShadowGray ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowGray ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Float -> Float -> Maybe Float -> m ()
+setShadowGray self width height blur grayLevel alpha
+  = liftIO
+      (js_setShadowGray self width height blur grayLevel
+         (maybeToOptional alpha))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6, $7, $8); })" js_setShadowRGB ::
+        CanvasRenderingContext2D ->
+          Float ->
+            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowRGB ::
+             (MonadIO m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setShadowRGB self width height blur r g b a
+  = liftIO (js_setShadowRGB self width height blur r g b a)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"setShadow\"]($2, $3, $4, $5,\n$6, $7, $8, $9); })"
+        js_setShadowCYMK ::
+        CanvasRenderingContext2D ->
+          Float ->
+            Float ->
+              Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.setShadow Mozilla CanvasRenderingContext2D.setShadow documentation> 
+setShadowCYMK ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float ->
+                    Float -> Float -> Float -> Float -> Float -> Float -> Float -> m ()
+setShadowCYMK self width height blur c m y k a
+  = liftIO (js_setShadowCYMK self width height blur c m y k a)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"putImageData\"]($2, $3, $4); })"
+        js_putImageData ::
+        CanvasRenderingContext2D -> ImageData -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
+putImageData ::
+             (MonadIO m) =>
+               CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
+putImageData self imagedata dx dy
+  = liftIO (js_putImageData self imagedata dx dy)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"putImageData\"]($2, $3, $4,\n$5, $6, $7, $8); })"
+        js_putImageDataDirty ::
+        CanvasRenderingContext2D ->
+          ImageData ->
+            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.putImageData Mozilla CanvasRenderingContext2D.putImageData documentation> 
+putImageDataDirty ::
+                  (MonadIO m) =>
+                    CanvasRenderingContext2D ->
+                      ImageData ->
+                        Float -> Float -> Float -> Float -> Float -> Float -> m ()
+putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
+  dirtyHeight
+  = liftIO
+      (js_putImageDataDirty self imagedata dx dy dirtyX dirtyY dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"webkitPutImageDataHD\"]($2,\n$3, $4); })" js_webkitPutImageDataHD
+        :: CanvasRenderingContext2D -> ImageData -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
+webkitPutImageDataHD ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D -> ImageData -> Float -> Float -> m ()
+webkitPutImageDataHD self imagedata dx dy
+  = liftIO (js_webkitPutImageDataHD self imagedata dx dy)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"webkitPutImageDataHD\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_webkitPutImageDataHDDirty ::
+        CanvasRenderingContext2D ->
+          ImageData ->
+            Float -> Float -> Float -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitPutImageDataHD Mozilla CanvasRenderingContext2D.webkitPutImageDataHD documentation> 
+webkitPutImageDataHDDirty ::
+                          (MonadIO m) =>
+                            CanvasRenderingContext2D ->
+                              ImageData ->
+                                Float -> Float -> Float -> Float -> Float -> Float -> m ()
+webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
+  dirtyWidth dirtyHeight
+  = liftIO
+      (js_webkitPutImageDataHDDirty self imagedata dx dy dirtyX dirtyY
+         dirtyWidth
+         dirtyHeight)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createImageData\"]($2); })"
+        js_createImageData ::
+        CanvasRenderingContext2D -> Optional ImageData -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageData ::
+                (MonadIO m) =>
+                  CanvasRenderingContext2D -> Maybe ImageData -> m ImageData
+createImageData self imagedata
+  = liftIO (js_createImageData self (maybeToOptional imagedata))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageData_ ::
+                 (MonadIO m) => CanvasRenderingContext2D -> Maybe ImageData -> m ()
+createImageData_ self imagedata
+  = liftIO
+      (void (js_createImageData self (maybeToOptional imagedata)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createImageData\"]($2, $3); })"
+        js_createImageDataSize ::
+        CanvasRenderingContext2D -> Float -> Float -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataSize ::
+                    (MonadIO m) =>
+                      CanvasRenderingContext2D -> Float -> Float -> m ImageData
+createImageDataSize self sw sh
+  = liftIO (js_createImageDataSize self sw sh)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createImageData Mozilla CanvasRenderingContext2D.createImageData documentation> 
+createImageDataSize_ ::
+                     (MonadIO m) => CanvasRenderingContext2D -> Float -> Float -> m ()
+createImageDataSize_ self sw sh
+  = liftIO (void (js_createImageDataSize self sw sh))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"createLinearGradient\"]($2,\n$3, $4, $5); })"
+        js_createLinearGradient ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO CanvasGradient
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
+createLinearGradient ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D ->
+                         Float -> Float -> Float -> Float -> m CanvasGradient
+createLinearGradient self x0 y0 x1 y1
+  = liftIO (js_createLinearGradient self x0 y0 x1 y1)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createLinearGradient Mozilla CanvasRenderingContext2D.createLinearGradient documentation> 
+createLinearGradient_ ::
+                      (MonadIO m) =>
+                        CanvasRenderingContext2D ->
+                          Float -> Float -> Float -> Float -> m ()
+createLinearGradient_ self x0 y0 x1 y1
+  = liftIO (void (js_createLinearGradient self x0 y0 x1 y1))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createRadialGradient\"]($2,\n$3, $4, $5, $6, $7); })"
+        js_createRadialGradient ::
+        CanvasRenderingContext2D ->
+          Float ->
+            Float -> Float -> Float -> Float -> Float -> IO CanvasGradient
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
+createRadialGradient ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D ->
+                         Float ->
+                           Float -> Float -> Float -> Float -> Float -> m CanvasGradient
+createRadialGradient self x0 y0 r0 x1 y1 r1
+  = liftIO (js_createRadialGradient self x0 y0 r0 x1 y1 r1)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createRadialGradient Mozilla CanvasRenderingContext2D.createRadialGradient documentation> 
+createRadialGradient_ ::
+                      (MonadIO m) =>
+                        CanvasRenderingContext2D ->
+                          Float -> Float -> Float -> Float -> Float -> Float -> m ()
+createRadialGradient_ self x0 y0 r0 x1 y1 r1
+  = liftIO (void (js_createRadialGradient self x0 y0 r0 x1 y1 r1))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createPattern\"]($2, $3); })"
+        js_createPattern ::
+        CanvasRenderingContext2D ->
+          CanvasImageSource -> JSString -> IO (Nullable CanvasPattern)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPattern ::
+              (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
+                CanvasRenderingContext2D ->
+                  image -> repetition -> m (Maybe CanvasPattern)
+createPattern self image repetition
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createPattern self (toCanvasImageSource image)
+            (toJSString repetition)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPattern_ ::
+               (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
+                 CanvasRenderingContext2D -> image -> repetition -> m ()
+createPattern_ self image repetition
+  = liftIO
+      (void
+         (js_createPattern self (toCanvasImageSource image)
+            (toJSString repetition)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternUnsafe ::
+                    (MonadIO m, IsCanvasImageSource image, ToJSString repetition,
+                     HasCallStack) =>
+                      CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
+createPatternUnsafe self image repetition
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_createPattern self (toCanvasImageSource image)
+             (toJSString repetition)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.createPattern Mozilla CanvasRenderingContext2D.createPattern documentation> 
+createPatternUnchecked ::
+                       (MonadIO m, IsCanvasImageSource image, ToJSString repetition) =>
+                         CanvasRenderingContext2D -> image -> repetition -> m CanvasPattern
+createPatternUnchecked self image repetition
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_createPattern self (toCanvasImageSource image)
+            (toJSString repetition)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"getImageData\"]($2, $3, $4,\n$5); })" js_getImageData ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
+getImageData ::
+             (MonadIO m) =>
+               CanvasRenderingContext2D ->
+                 Float -> Float -> Float -> Float -> m ImageData
+getImageData self sx sy sw sh
+  = liftIO (js_getImageData self sx sy sw sh)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.getImageData Mozilla CanvasRenderingContext2D.getImageData documentation> 
+getImageData_ ::
+              (MonadIO m) =>
+                CanvasRenderingContext2D ->
+                  Float -> Float -> Float -> Float -> m ()
+getImageData_ self sx sy sw sh
+  = liftIO (void (js_getImageData self sx sy sw sh))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"webkitGetImageDataHD\"]($2,\n$3, $4, $5); })"
+        js_webkitGetImageDataHD ::
+        CanvasRenderingContext2D ->
+          Float -> Float -> Float -> Float -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
+webkitGetImageDataHD ::
+                     (MonadIO m) =>
+                       CanvasRenderingContext2D ->
+                         Float -> Float -> Float -> Float -> m ImageData
+webkitGetImageDataHD self sx sy sw sh
+  = liftIO (js_webkitGetImageDataHD self sx sy sw sh)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitGetImageDataHD Mozilla CanvasRenderingContext2D.webkitGetImageDataHD documentation> 
+webkitGetImageDataHD_ ::
+                      (MonadIO m) =>
+                        CanvasRenderingContext2D ->
+                          Float -> Float -> Float -> Float -> m ()
+webkitGetImageDataHD_ self sx sy sw sh
+  = liftIO (void (js_webkitGetImageDataHD self sx sy sw sh))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"drawFocusIfNeeded\"]($2); })"
+        js_drawFocusIfNeeded ::
+        CanvasRenderingContext2D -> Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeeded ::
+                  (MonadIO m, IsElement element) =>
+                    CanvasRenderingContext2D -> element -> m ()
+drawFocusIfNeeded self element
+  = liftIO (js_drawFocusIfNeeded self (toElement element))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"drawFocusIfNeeded\"]($2, $3); })" js_drawFocusIfNeededPath ::
+        CanvasRenderingContext2D -> Path2D -> Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.drawFocusIfNeeded Mozilla CanvasRenderingContext2D.drawFocusIfNeeded documentation> 
+drawFocusIfNeededPath ::
+                      (MonadIO m, IsElement element) =>
+                        CanvasRenderingContext2D -> Path2D -> element -> m ()
+drawFocusIfNeededPath self path element
+  = liftIO (js_drawFocusIfNeededPath self path (toElement element))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
+        CanvasRenderingContext2D -> IO HTMLCanvasElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.canvas Mozilla CanvasRenderingContext2D.canvas documentation> 
+getCanvas ::
+          (MonadIO m) => CanvasRenderingContext2D -> m HTMLCanvasElement
+getCanvas self = liftIO (js_getCanvas self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"globalAlpha\"] = $2; })"
+        js_setGlobalAlpha :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
+setGlobalAlpha ::
+               (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setGlobalAlpha self val = liftIO (js_setGlobalAlpha self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"globalAlpha\"]; })"
+        js_getGlobalAlpha :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalAlpha Mozilla CanvasRenderingContext2D.globalAlpha documentation> 
+getGlobalAlpha ::
+               (MonadIO m) => CanvasRenderingContext2D -> m Float
+getGlobalAlpha self = liftIO (js_getGlobalAlpha self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"globalCompositeOperation\"] = $2; })"
+        js_setGlobalCompositeOperation ::
+        CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+setGlobalCompositeOperation ::
+                            (MonadIO m, ToJSString val) =>
+                              CanvasRenderingContext2D -> val -> m ()
+setGlobalCompositeOperation self val
+  = liftIO (js_setGlobalCompositeOperation self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"globalCompositeOperation\"]; })"
+        js_getGlobalCompositeOperation ::
+        CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.globalCompositeOperation Mozilla CanvasRenderingContext2D.globalCompositeOperation documentation> 
+getGlobalCompositeOperation ::
+                            (MonadIO m, FromJSString result) =>
+                              CanvasRenderingContext2D -> m result
+getGlobalCompositeOperation self
+  = liftIO (fromJSString <$> (js_getGlobalCompositeOperation self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lineWidth\"] = $2; })"
+        js_setLineWidth :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
+setLineWidth ::
+             (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setLineWidth self val = liftIO (js_setLineWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineWidth\"]; })"
+        js_getLineWidth :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineWidth Mozilla CanvasRenderingContext2D.lineWidth documentation> 
+getLineWidth :: (MonadIO m) => CanvasRenderingContext2D -> m Float
+getLineWidth self = liftIO (js_getLineWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lineCap\"] = $2; })"
+        js_setLineCap :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+setLineCap ::
+           (MonadIO m, ToJSString val) =>
+             CanvasRenderingContext2D -> val -> m ()
+setLineCap self val = liftIO (js_setLineCap self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineCap\"]; })" js_getLineCap ::
+        CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineCap Mozilla CanvasRenderingContext2D.lineCap documentation> 
+getLineCap ::
+           (MonadIO m, FromJSString result) =>
+             CanvasRenderingContext2D -> m result
+getLineCap self = liftIO (fromJSString <$> (js_getLineCap self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lineJoin\"] = $2; })"
+        js_setLineJoin :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+setLineJoin ::
+            (MonadIO m, ToJSString val) =>
+              CanvasRenderingContext2D -> val -> m ()
+setLineJoin self val
+  = liftIO (js_setLineJoin self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineJoin\"]; })" js_getLineJoin
+        :: CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineJoin Mozilla CanvasRenderingContext2D.lineJoin documentation> 
+getLineJoin ::
+            (MonadIO m, FromJSString result) =>
+              CanvasRenderingContext2D -> m result
+getLineJoin self = liftIO (fromJSString <$> (js_getLineJoin self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"miterLimit\"] = $2; })"
+        js_setMiterLimit :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
+setMiterLimit ::
+              (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setMiterLimit self val = liftIO (js_setMiterLimit self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"miterLimit\"]; })"
+        js_getMiterLimit :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.miterLimit Mozilla CanvasRenderingContext2D.miterLimit documentation> 
+getMiterLimit :: (MonadIO m) => CanvasRenderingContext2D -> m Float
+getMiterLimit self = liftIO (js_getMiterLimit self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shadowOffsetX\"] = $2; })"
+        js_setShadowOffsetX :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
+setShadowOffsetX ::
+                 (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowOffsetX self val = liftIO (js_setShadowOffsetX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetX\"]; })"
+        js_getShadowOffsetX :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetX Mozilla CanvasRenderingContext2D.shadowOffsetX documentation> 
+getShadowOffsetX ::
+                 (MonadIO m) => CanvasRenderingContext2D -> m Float
+getShadowOffsetX self = liftIO (js_getShadowOffsetX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shadowOffsetY\"] = $2; })"
+        js_setShadowOffsetY :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
+setShadowOffsetY ::
+                 (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowOffsetY self val = liftIO (js_setShadowOffsetY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowOffsetY\"]; })"
+        js_getShadowOffsetY :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowOffsetY Mozilla CanvasRenderingContext2D.shadowOffsetY documentation> 
+getShadowOffsetY ::
+                 (MonadIO m) => CanvasRenderingContext2D -> m Float
+getShadowOffsetY self = liftIO (js_getShadowOffsetY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shadowBlur\"] = $2; })"
+        js_setShadowBlur :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
+setShadowBlur ::
+              (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setShadowBlur self val = liftIO (js_setShadowBlur self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowBlur\"]; })"
+        js_getShadowBlur :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowBlur Mozilla CanvasRenderingContext2D.shadowBlur documentation> 
+getShadowBlur :: (MonadIO m) => CanvasRenderingContext2D -> m Float
+getShadowBlur self = liftIO (js_getShadowBlur self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shadowColor\"] = $2; })"
+        js_setShadowColor :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+setShadowColor ::
+               (MonadIO m, ToJSString val) =>
+                 CanvasRenderingContext2D -> val -> m ()
+setShadowColor self val
+  = liftIO (js_setShadowColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowColor\"]; })"
+        js_getShadowColor :: CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.shadowColor Mozilla CanvasRenderingContext2D.shadowColor documentation> 
+getShadowColor ::
+               (MonadIO m, FromJSString result) =>
+                 CanvasRenderingContext2D -> m result
+getShadowColor self
+  = liftIO (fromJSString <$> (js_getShadowColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lineDashOffset\"] = $2; })"
+        js_setLineDashOffset :: CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
+setLineDashOffset ::
+                  (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setLineDashOffset self val = liftIO (js_setLineDashOffset self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineDashOffset\"]; })"
+        js_getLineDashOffset :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.lineDashOffset Mozilla CanvasRenderingContext2D.lineDashOffset documentation> 
+getLineDashOffset ::
+                  (MonadIO m) => CanvasRenderingContext2D -> m Float
+getLineDashOffset self = liftIO (js_getLineDashOffset self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"webkitLineDash\"] = $2; })"
+        js_setWebkitLineDash :: CanvasRenderingContext2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+setWebkitLineDash ::
+                  (MonadIO m) => CanvasRenderingContext2D -> [Float] -> m ()
+setWebkitLineDash self val
+  = liftIO (toJSVal val >>= \ val' -> js_setWebkitLineDash self val')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitLineDash\"]; })"
+        js_getWebkitLineDash :: CanvasRenderingContext2D -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDash Mozilla CanvasRenderingContext2D.webkitLineDash documentation> 
+getWebkitLineDash ::
+                  (MonadIO m) => CanvasRenderingContext2D -> m [Float]
+getWebkitLineDash self
+  = liftIO ((js_getWebkitLineDash self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"webkitLineDashOffset\"] = $2; })" js_setWebkitLineDashOffset ::
+        CanvasRenderingContext2D -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
+setWebkitLineDashOffset ::
+                        (MonadIO m) => CanvasRenderingContext2D -> Float -> m ()
+setWebkitLineDashOffset self val
+  = liftIO (js_setWebkitLineDashOffset self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitLineDashOffset\"]; })"
+        js_getWebkitLineDashOffset :: CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitLineDashOffset Mozilla CanvasRenderingContext2D.webkitLineDashOffset documentation> 
+getWebkitLineDashOffset ::
+                        (MonadIO m) => CanvasRenderingContext2D -> m Float
+getWebkitLineDashOffset self
+  = liftIO (js_getWebkitLineDashOffset self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"font\"] = $2; })" js_setFont ::
+        CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
+setFont ::
+        (MonadIO m, ToJSString val) =>
+          CanvasRenderingContext2D -> val -> m ()
+setFont self val = liftIO (js_setFont self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"font\"]; })" js_getFont ::
+        CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.font Mozilla CanvasRenderingContext2D.font documentation> 
+getFont ::
+        (MonadIO m, FromJSString result) =>
+          CanvasRenderingContext2D -> m result
+getFont self = liftIO (fromJSString <$> (js_getFont self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"textAlign\"] = $2; })"
+        js_setTextAlign :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
+setTextAlign ::
+             (MonadIO m, ToJSString val) =>
+               CanvasRenderingContext2D -> val -> m ()
+setTextAlign self val
+  = liftIO (js_setTextAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textAlign\"]; })"
+        js_getTextAlign :: CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textAlign Mozilla CanvasRenderingContext2D.textAlign documentation> 
+getTextAlign ::
+             (MonadIO m, FromJSString result) =>
+               CanvasRenderingContext2D -> m result
+getTextAlign self
+  = liftIO (fromJSString <$> (js_getTextAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"textBaseline\"] = $2; })"
+        js_setTextBaseline :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
+setTextBaseline ::
+                (MonadIO m, ToJSString val) =>
+                  CanvasRenderingContext2D -> val -> m ()
+setTextBaseline self val
+  = liftIO (js_setTextBaseline self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textBaseline\"]; })"
+        js_getTextBaseline :: CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.textBaseline Mozilla CanvasRenderingContext2D.textBaseline documentation> 
+getTextBaseline ::
+                (MonadIO m, FromJSString result) =>
+                  CanvasRenderingContext2D -> m result
+getTextBaseline self
+  = liftIO (fromJSString <$> (js_getTextBaseline self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: CanvasRenderingContext2D -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
+setDirection ::
+             (MonadIO m, ToJSString val) =>
+               CanvasRenderingContext2D -> val -> m ()
+setDirection self val
+  = liftIO (js_setDirection self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: CanvasRenderingContext2D -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.direction Mozilla CanvasRenderingContext2D.direction documentation> 
+getDirection ::
+             (MonadIO m, FromJSString result) =>
+               CanvasRenderingContext2D -> m result
+getDirection self
+  = liftIO (fromJSString <$> (js_getDirection self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"strokeStyle\"] = $2; })"
+        js_setStrokeStyle ::
+        CanvasRenderingContext2D -> CanvasStyle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+setStrokeStyle ::
+               (MonadIO m, IsCanvasStyle val) =>
+                 CanvasRenderingContext2D -> val -> m ()
+setStrokeStyle self val
+  = liftIO
+      (toJSVal val >>=
+         \ val' -> js_setStrokeStyle self (CanvasStyle val'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"strokeStyle\"]; })"
+        js_getStrokeStyle :: CanvasRenderingContext2D -> IO CanvasStyle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.strokeStyle Mozilla CanvasRenderingContext2D.strokeStyle documentation> 
+getStrokeStyle ::
+               (MonadIO m) => CanvasRenderingContext2D -> m CanvasStyle
+getStrokeStyle self = liftIO (js_getStrokeStyle self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"fillStyle\"] = $2; })"
+        js_setFillStyle :: CanvasRenderingContext2D -> CanvasStyle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+setFillStyle ::
+             (MonadIO m, IsCanvasStyle val) =>
+               CanvasRenderingContext2D -> val -> m ()
+setFillStyle self val
+  = liftIO
+      (toJSVal val >>= \ val' -> js_setFillStyle self (CanvasStyle val'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fillStyle\"]; })"
+        js_getFillStyle :: CanvasRenderingContext2D -> IO CanvasStyle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.fillStyle Mozilla CanvasRenderingContext2D.fillStyle documentation> 
+getFillStyle ::
+             (MonadIO m) => CanvasRenderingContext2D -> m CanvasStyle
+getFillStyle self = liftIO (js_getFillStyle self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitBackingStorePixelRatio\"]; })"
+        js_getWebkitBackingStorePixelRatio ::
+        CanvasRenderingContext2D -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitBackingStorePixelRatio Mozilla CanvasRenderingContext2D.webkitBackingStorePixelRatio documentation> 
+getWebkitBackingStorePixelRatio ::
+                                (MonadIO m) => CanvasRenderingContext2D -> m Float
+getWebkitBackingStorePixelRatio self
+  = liftIO (js_getWebkitBackingStorePixelRatio self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"imageSmoothingEnabled\"] = $2; })" js_setImageSmoothingEnabled
+        :: CanvasRenderingContext2D -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
+setImageSmoothingEnabled ::
+                         (MonadIO m) => CanvasRenderingContext2D -> Bool -> m ()
+setImageSmoothingEnabled self val
+  = liftIO (js_setImageSmoothingEnabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"imageSmoothingEnabled\"] ? 1 : 0); })"
+        js_getImageSmoothingEnabled :: CanvasRenderingContext2D -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingEnabled Mozilla CanvasRenderingContext2D.imageSmoothingEnabled documentation> 
+getImageSmoothingEnabled ::
+                         (MonadIO m) => CanvasRenderingContext2D -> m Bool
+getImageSmoothingEnabled self
+  = liftIO (js_getImageSmoothingEnabled self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"webkitImageSmoothingEnabled\"] = $2; })"
+        js_setWebkitImageSmoothingEnabled ::
+        CanvasRenderingContext2D -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
+setWebkitImageSmoothingEnabled ::
+                               (MonadIO m) => CanvasRenderingContext2D -> Bool -> m ()
+setWebkitImageSmoothingEnabled self val
+  = liftIO (js_setWebkitImageSmoothingEnabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitImageSmoothingEnabled\"] ? 1 : 0); })"
+        js_getWebkitImageSmoothingEnabled ::
+        CanvasRenderingContext2D -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.webkitImageSmoothingEnabled Mozilla CanvasRenderingContext2D.webkitImageSmoothingEnabled documentation> 
+getWebkitImageSmoothingEnabled ::
+                               (MonadIO m) => CanvasRenderingContext2D -> m Bool
+getWebkitImageSmoothingEnabled self
+  = liftIO (js_getWebkitImageSmoothingEnabled self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"imageSmoothingQuality\"] = $2; })" js_setImageSmoothingQuality
+        :: CanvasRenderingContext2D -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
+setImageSmoothingQuality ::
+                         (MonadIO m) =>
+                           CanvasRenderingContext2D -> ImageSmoothingQuality -> m ()
+setImageSmoothingQuality self val
+  = liftIO (js_setImageSmoothingQuality self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"imageSmoothingQuality\"]; })"
+        js_getImageSmoothingQuality :: CanvasRenderingContext2D -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D.imageSmoothingQuality Mozilla CanvasRenderingContext2D.imageSmoothingQuality documentation> 
+getImageSmoothingQuality ::
+                         (MonadIO m) => CanvasRenderingContext2D -> m ImageSmoothingQuality
+getImageSmoothingQuality self
+  = liftIO
+      ((js_getImageSmoothingQuality self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CharacterData.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CharacterData
+       (js_substringData, substringData, substringData_, js_appendData,
+        appendData, js_insertData, insertData, js_deleteData, deleteData,
+        js_replaceData, replaceData, js_setData, setData, js_getData,
+        getData, js_getLength, getLength, CharacterData(..),
+        gTypeCharacterData, IsCharacterData, toCharacterData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"substringData\"]($2, $3); })"
+        js_substringData :: CharacterData -> Word -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
+substringData ::
+              (MonadIO m, IsCharacterData self, FromJSString result) =>
+                self -> Word -> Word -> m result
+substringData self offset count
+  = liftIO
+      (fromJSString <$>
+         (js_substringData (toCharacterData self) offset count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.substringData Mozilla CharacterData.substringData documentation> 
+substringData_ ::
+               (MonadIO m, IsCharacterData self) => self -> Word -> Word -> m ()
+substringData_ self offset count
+  = liftIO
+      (void (js_substringData (toCharacterData self) offset count))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"appendData\"]($2); })"
+        js_appendData :: CharacterData -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.appendData Mozilla CharacterData.appendData documentation> 
+appendData ::
+           (MonadIO m, IsCharacterData self, ToJSString data') =>
+             self -> data' -> m ()
+appendData self data'
+  = liftIO (js_appendData (toCharacterData self) (toJSString data'))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertData\"]($2, $3); })"
+        js_insertData :: CharacterData -> Word -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.insertData Mozilla CharacterData.insertData documentation> 
+insertData ::
+           (MonadIO m, IsCharacterData self, ToJSString data') =>
+             self -> Word -> data' -> m ()
+insertData self offset data'
+  = liftIO
+      (js_insertData (toCharacterData self) offset (toJSString data'))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"deleteData\"]($2, $3); })"
+        js_deleteData :: CharacterData -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.deleteData Mozilla CharacterData.deleteData documentation> 
+deleteData ::
+           (MonadIO m, IsCharacterData self) => self -> Word -> Word -> m ()
+deleteData self offset count
+  = liftIO (js_deleteData (toCharacterData self) offset count)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"replaceData\"]($2, $3, $4); })"
+        js_replaceData ::
+        CharacterData -> Word -> Word -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.replaceData Mozilla CharacterData.replaceData documentation> 
+replaceData ::
+            (MonadIO m, IsCharacterData self, ToJSString data') =>
+              self -> Word -> Word -> data' -> m ()
+replaceData self offset count data'
+  = liftIO
+      (js_replaceData (toCharacterData self) offset count
+         (toJSString data'))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
+        CharacterData -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
+setData ::
+        (MonadIO m, IsCharacterData self, ToJSString val) =>
+          self -> val -> m ()
+setData self val
+  = liftIO (js_setData (toCharacterData self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        CharacterData -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.data Mozilla CharacterData.data documentation> 
+getData ::
+        (MonadIO m, IsCharacterData self, FromJSString result) =>
+          self -> m result
+getData self
+  = liftIO (fromJSString <$> (js_getData (toCharacterData self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        CharacterData -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData.length Mozilla CharacterData.length documentation> 
+getLength :: (MonadIO m, IsCharacterData self) => self -> m Word
+getLength self = liftIO (js_getLength (toCharacterData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ChildNode.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ChildNode
+       (js_before, before, js_after, after, js_replaceWith, replaceWith,
+        js_remove, remove, ChildNode(..), gTypeChildNode, IsChildNode,
+        toChildNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"before\"]($2); })" js_before ::
+        ChildNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.before Mozilla ChildNode.before documentation> 
+before ::
+       (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
+         self -> [nodes] -> m ()
+before self nodes
+  = liftIO
+      (toJSVal nodes >>= \ nodes' -> js_before (toChildNode self) nodes')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"after\"]($2); })" js_after ::
+        ChildNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.after Mozilla ChildNode.after documentation> 
+after ::
+      (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
+        self -> [nodes] -> m ()
+after self nodes
+  = liftIO
+      (toJSVal nodes >>= \ nodes' -> js_after (toChildNode self) nodes')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"replaceWith\"]($2); })"
+        js_replaceWith :: ChildNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.replaceWith Mozilla ChildNode.replaceWith documentation> 
+replaceWith ::
+            (MonadIO m, IsChildNode self, IsNodeOrString nodes) =>
+              self -> [nodes] -> m ()
+replaceWith self nodes
+  = liftIO
+      (toJSVal nodes >>=
+         \ nodes' -> js_replaceWith (toChildNode self) nodes')
+ 
+foreign import javascript safe "(($1) => { return $1[\"remove\"](); })" js_remove ::
+        ChildNode -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode.remove Mozilla ChildNode.remove documentation> 
+remove :: (MonadIO m, IsChildNode self) => self -> m ()
+remove self = liftIO (js_remove (toChildNode self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ClipboardEvent.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ClipboardEvent
+       (js_newClipboardEvent, newClipboardEvent, js_getClipboardData,
+        getClipboardData, getClipboardDataUnsafe,
+        getClipboardDataUnchecked, ClipboardEvent(..), gTypeClipboardEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"ClipboardEvent\"]($1,\n$2); })" js_newClipboardEvent ::
+        JSString -> Optional ClipboardEventInit -> IO ClipboardEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent Mozilla ClipboardEvent documentation> 
+newClipboardEvent ::
+                  (MonadIO m, ToJSString type') =>
+                    type' -> Maybe ClipboardEventInit -> m ClipboardEvent
+newClipboardEvent type' eventInitDict
+  = liftIO
+      (js_newClipboardEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clipboardData\"]; })"
+        js_getClipboardData :: ClipboardEvent -> IO (Nullable DataTransfer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
+getClipboardData ::
+                 (MonadIO m) => ClipboardEvent -> m (Maybe DataTransfer)
+getClipboardData self
+  = liftIO (nullableToMaybe <$> (js_getClipboardData self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
+getClipboardDataUnsafe ::
+                       (MonadIO m, HasCallStack) => ClipboardEvent -> m DataTransfer
+getClipboardDataUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getClipboardData self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent.clipboardData Mozilla ClipboardEvent.clipboardData documentation> 
+getClipboardDataUnchecked ::
+                          (MonadIO m) => ClipboardEvent -> m DataTransfer
+getClipboardDataUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getClipboardData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CloseEvent.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CloseEvent
+       (js_newCloseEvent, newCloseEvent, js_getWasClean, getWasClean,
+        js_getCode, getCode, js_getReason, getReason, CloseEvent(..),
+        gTypeCloseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"CloseEvent\"]($1, $2); })" js_newCloseEvent ::
+        JSString -> Optional CloseEventInit -> IO CloseEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation> 
+newCloseEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe CloseEventInit -> m CloseEvent
+newCloseEvent type' eventInitDict
+  = liftIO
+      (js_newCloseEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"wasClean\"] ? 1 : 0); })"
+        js_getWasClean :: CloseEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.wasClean Mozilla CloseEvent.wasClean documentation> 
+getWasClean :: (MonadIO m) => CloseEvent -> m Bool
+getWasClean self = liftIO (js_getWasClean self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        CloseEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.code Mozilla CloseEvent.code documentation> 
+getCode :: (MonadIO m) => CloseEvent -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
+        CloseEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent.reason Mozilla CloseEvent.reason documentation> 
+getReason ::
+          (MonadIO m, FromJSString result) => CloseEvent -> m result
+getReason self = liftIO (fromJSString <$> (js_getReason self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs b/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CommandLineAPIHost.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CommandLineAPIHost
+       (js_clearConsoleMessages, clearConsoleMessages, js_copyText,
+        copyText, js_inspect, inspect, js_inspectedObject, inspectedObject,
+        inspectedObject_, js_getEventListeners, getEventListeners,
+        getEventListeners_, js_databaseId, databaseId, databaseId_,
+        js_storageId, storageId, storageId_, CommandLineAPIHost(..),
+        gTypeCommandLineAPIHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearConsoleMessages\"](); })"
+        js_clearConsoleMessages :: CommandLineAPIHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.clearConsoleMessages Mozilla CommandLineAPIHost.clearConsoleMessages documentation> 
+clearConsoleMessages :: (MonadIO m) => CommandLineAPIHost -> m ()
+clearConsoleMessages self = liftIO (js_clearConsoleMessages self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"copyText\"]($2); })" js_copyText
+        :: CommandLineAPIHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.copyText Mozilla CommandLineAPIHost.copyText documentation> 
+copyText ::
+         (MonadIO m, ToJSString text) => CommandLineAPIHost -> text -> m ()
+copyText self text = liftIO (js_copyText self (toJSString text))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"inspect\"]($2, $3); })"
+        js_inspect :: CommandLineAPIHost -> JSVal -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspect Mozilla CommandLineAPIHost.inspect documentation> 
+inspect ::
+        (MonadIO m, ToJSVal objectId, ToJSVal hints) =>
+          CommandLineAPIHost -> objectId -> hints -> m ()
+inspect self objectId hints
+  = liftIO
+      (toJSVal hints >>=
+         \ hints' ->
+           toJSVal objectId >>= \ objectId' -> js_inspect self objectId'
+             hints')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"inspectedObject\"](); })"
+        js_inspectedObject :: CommandLineAPIHost -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
+inspectedObject :: (MonadIO m) => CommandLineAPIHost -> m JSVal
+inspectedObject self = liftIO (js_inspectedObject self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.inspectedObject Mozilla CommandLineAPIHost.inspectedObject documentation> 
+inspectedObject_ :: (MonadIO m) => CommandLineAPIHost -> m ()
+inspectedObject_ self = liftIO (void (js_inspectedObject self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getEventListeners\"]($2); })"
+        js_getEventListeners :: CommandLineAPIHost -> Node -> IO Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
+getEventListeners ::
+                  (MonadIO m, IsNode node) => CommandLineAPIHost -> node -> m Array
+getEventListeners self node
+  = liftIO (js_getEventListeners self (toNode node))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.getEventListeners Mozilla CommandLineAPIHost.getEventListeners documentation> 
+getEventListeners_ ::
+                   (MonadIO m, IsNode node) => CommandLineAPIHost -> node -> m ()
+getEventListeners_ self node
+  = liftIO (void (js_getEventListeners self (toNode node)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"databaseId\"]($2); })"
+        js_databaseId :: CommandLineAPIHost -> JSVal -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
+databaseId ::
+           (MonadIO m, ToJSVal database, FromJSString result) =>
+             CommandLineAPIHost -> database -> m result
+databaseId self database
+  = liftIO
+      (fromJSString <$>
+         (toJSVal database >>= \ database' -> js_databaseId self database'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.databaseId Mozilla CommandLineAPIHost.databaseId documentation> 
+databaseId_ ::
+            (MonadIO m, ToJSVal database) =>
+              CommandLineAPIHost -> database -> m ()
+databaseId_ self database
+  = liftIO
+      (void
+         (toJSVal database >>= \ database' -> js_databaseId self database'))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"storageId\"]($2); })"
+        js_storageId :: CommandLineAPIHost -> JSVal -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
+storageId ::
+          (MonadIO m, ToJSVal storage, FromJSString result) =>
+            CommandLineAPIHost -> storage -> m result
+storageId self storage
+  = liftIO
+      (fromJSString <$>
+         (toJSVal storage >>= \ storage' -> js_storageId self storage'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost.storageId Mozilla CommandLineAPIHost.storageId documentation> 
+storageId_ ::
+           (MonadIO m, ToJSVal storage) =>
+             CommandLineAPIHost -> storage -> m ()
+storageId_ self storage
+  = liftIO
+      (void
+         (toJSVal storage >>= \ storage' -> js_storageId self storage'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Comment.hs b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Comment.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Comment
+       (js_newComment, newComment, Comment(..), gTypeComment) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"Comment\"]($1); })"
+        js_newComment :: Optional JSString -> IO Comment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation> 
+newComment ::
+           (MonadIO m, ToJSString data') => Maybe data' -> m Comment
+newComment data'
+  = liftIO (js_newComment (toOptionalJSString data'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CompositionEvent.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CompositionEvent
+       (js_newCompositionEvent, newCompositionEvent,
+        js_initCompositionEvent, initCompositionEvent, js_getData, getData,
+        CompositionEvent(..), gTypeCompositionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"CompositionEvent\"]($1,\n$2); })" js_newCompositionEvent
+        :: JSString -> Optional CompositionEventInit -> IO CompositionEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation> 
+newCompositionEvent ::
+                    (MonadIO m, ToJSString type') =>
+                      type' -> Maybe CompositionEventInit -> m CompositionEvent
+newCompositionEvent type' eventInitDict
+  = liftIO
+      (js_newCompositionEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initCompositionEvent\"]($2,\n$3, $4, $5, $6); })"
+        js_initCompositionEvent ::
+        CompositionEvent ->
+          Optional JSString ->
+            Bool -> Bool -> Optional Window -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.initCompositionEvent Mozilla CompositionEvent.initCompositionEvent documentation> 
+initCompositionEvent ::
+                     (MonadIO m, ToJSString typeArg, ToJSString dataArg) =>
+                       CompositionEvent ->
+                         Maybe typeArg ->
+                           Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
+initCompositionEvent self typeArg canBubbleArg cancelableArg
+  viewArg dataArg
+  = liftIO
+      (js_initCompositionEvent self (toOptionalJSString typeArg)
+         canBubbleArg
+         cancelableArg
+         (maybeToOptional viewArg)
+         (toOptionalJSString dataArg))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        CompositionEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent.data Mozilla CompositionEvent.data documentation> 
+getData ::
+        (MonadIO m, FromJSString result) => CompositionEvent -> m result
+getData self = liftIO (fromJSString <$> (js_getData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ConvolverNode.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ConvolverNode
+       (js_setBuffer, setBuffer, js_getBuffer, getBuffer, getBufferUnsafe,
+        getBufferUnchecked, js_setNormalize, setNormalize, js_getNormalize,
+        getNormalize, ConvolverNode(..), gTypeConvolverNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"buffer\"] = $2; })" js_setBuffer
+        :: ConvolverNode -> Optional AudioBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+setBuffer ::
+          (MonadIO m) => ConvolverNode -> Maybe AudioBuffer -> m ()
+setBuffer self val
+  = liftIO (js_setBuffer self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"buffer\"]; })" js_getBuffer ::
+        ConvolverNode -> IO (Nullable AudioBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+getBuffer :: (MonadIO m) => ConvolverNode -> m (Maybe AudioBuffer)
+getBuffer self = liftIO (nullableToMaybe <$> (js_getBuffer self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+getBufferUnsafe ::
+                (MonadIO m, HasCallStack) => ConvolverNode -> m AudioBuffer
+getBufferUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBuffer self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.buffer Mozilla ConvolverNode.buffer documentation> 
+getBufferUnchecked :: (MonadIO m) => ConvolverNode -> m AudioBuffer
+getBufferUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getBuffer self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"normalize\"] = $2; })"
+        js_setNormalize :: ConvolverNode -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+setNormalize :: (MonadIO m) => ConvolverNode -> Bool -> m ()
+setNormalize self val = liftIO (js_setNormalize self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"normalize\"] ? 1 : 0); })"
+        js_getNormalize :: ConvolverNode -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode.normalize Mozilla ConvolverNode.normalize documentation> 
+getNormalize :: (MonadIO m) => ConvolverNode -> m Bool
+getNormalize self = liftIO (js_getNormalize self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs b/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Coordinates.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Coordinates
+       (js_getLatitude, getLatitude, js_getLongitude, getLongitude,
+        js_getAltitude, getAltitude, getAltitudeUnsafe,
+        getAltitudeUnchecked, js_getAccuracy, getAccuracy,
+        js_getAltitudeAccuracy, getAltitudeAccuracy,
+        getAltitudeAccuracyUnsafe, getAltitudeAccuracyUnchecked,
+        js_getHeading, getHeading, getHeadingUnsafe, getHeadingUnchecked,
+        js_getSpeed, getSpeed, getSpeedUnsafe, getSpeedUnchecked,
+        Coordinates(..), gTypeCoordinates)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"latitude\"]; })" js_getLatitude
+        :: Coordinates -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.latitude Mozilla Coordinates.latitude documentation> 
+getLatitude :: (MonadIO m) => Coordinates -> m Double
+getLatitude self = liftIO (js_getLatitude self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"longitude\"]; })"
+        js_getLongitude :: Coordinates -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.longitude Mozilla Coordinates.longitude documentation> 
+getLongitude :: (MonadIO m) => Coordinates -> m Double
+getLongitude self = liftIO (js_getLongitude self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"altitude\"]; })" js_getAltitude
+        :: Coordinates -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitude :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getAltitude self
+  = liftIO (nullableToMaybe <$> (js_getAltitude self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitudeUnsafe ::
+                  (MonadIO m, HasCallStack) => Coordinates -> m Double
+getAltitudeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAltitude self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitude Mozilla Coordinates.altitude documentation> 
+getAltitudeUnchecked :: (MonadIO m) => Coordinates -> m Double
+getAltitudeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAltitude self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"accuracy\"]; })" js_getAccuracy
+        :: Coordinates -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.accuracy Mozilla Coordinates.accuracy documentation> 
+getAccuracy :: (MonadIO m) => Coordinates -> m Double
+getAccuracy self = liftIO (js_getAccuracy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"altitudeAccuracy\"]; })"
+        js_getAltitudeAccuracy :: Coordinates -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracy ::
+                    (MonadIO m) => Coordinates -> m (Maybe Double)
+getAltitudeAccuracy self
+  = liftIO (nullableToMaybe <$> (js_getAltitudeAccuracy self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracyUnsafe ::
+                          (MonadIO m, HasCallStack) => Coordinates -> m Double
+getAltitudeAccuracyUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAltitudeAccuracy self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.altitudeAccuracy Mozilla Coordinates.altitudeAccuracy documentation> 
+getAltitudeAccuracyUnchecked ::
+                             (MonadIO m) => Coordinates -> m Double
+getAltitudeAccuracyUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getAltitudeAccuracy self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"heading\"]; })" js_getHeading ::
+        Coordinates -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeading :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getHeading self = liftIO (nullableToMaybe <$> (js_getHeading self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeadingUnsafe ::
+                 (MonadIO m, HasCallStack) => Coordinates -> m Double
+getHeadingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getHeading self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.heading Mozilla Coordinates.heading documentation> 
+getHeadingUnchecked :: (MonadIO m) => Coordinates -> m Double
+getHeadingUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getHeading self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"speed\"]; })" js_getSpeed ::
+        Coordinates -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeed :: (MonadIO m) => Coordinates -> m (Maybe Double)
+getSpeed self = liftIO (nullableToMaybe <$> (js_getSpeed self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeedUnsafe ::
+               (MonadIO m, HasCallStack) => Coordinates -> m Double
+getSpeedUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSpeed self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates.speed Mozilla Coordinates.speed documentation> 
+getSpeedUnchecked :: (MonadIO m) => Coordinates -> m Double
+getSpeedUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getSpeed self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CountQueuingStrategy.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CountQueuingStrategy
+       (js_newCountQueuingStrategy, newCountQueuingStrategy, js_size,
+        size, size_, CountQueuingStrategy(..), gTypeCountQueuingStrategy)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"CountQueuingStrategy\"](); })" js_newCountQueuingStrategy
+        :: IO CountQueuingStrategy
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy Mozilla CountQueuingStrategy documentation> 
+newCountQueuingStrategy :: (MonadIO m) => m CountQueuingStrategy
+newCountQueuingStrategy = liftIO (js_newCountQueuingStrategy)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"](); })" js_size ::
+        CountQueuingStrategy -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
+size :: (MonadIO m) => CountQueuingStrategy -> m Double
+size self = liftIO (js_size self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy.size Mozilla CountQueuingStrategy.size documentation> 
+size_ :: (MonadIO m) => CountQueuingStrategy -> m ()
+size_ self = liftIO (void (js_size self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Counter.hs b/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Counter.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Counter
+       (js_getIdentifier, getIdentifier, js_getListStyle, getListStyle,
+        js_getSeparator, getSeparator, Counter(..), gTypeCounter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
+        js_getIdentifier :: Counter -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.identifier Mozilla Counter.identifier documentation> 
+getIdentifier ::
+              (MonadIO m, FromJSString result) => Counter -> m result
+getIdentifier self
+  = liftIO (fromJSString <$> (js_getIdentifier self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"listStyle\"]; })"
+        js_getListStyle :: Counter -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.listStyle Mozilla Counter.listStyle documentation> 
+getListStyle ::
+             (MonadIO m, FromJSString result) => Counter -> m result
+getListStyle self
+  = liftIO (fromJSString <$> (js_getListStyle self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"separator\"]; })"
+        js_getSeparator :: Counter -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Counter.separator Mozilla Counter.separator documentation> 
+getSeparator ::
+             (MonadIO m, FromJSString result) => Counter -> m result
+getSeparator self
+  = liftIO (fromJSString <$> (js_getSeparator self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Crypto.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Crypto
+       (js_getRandomValues, getRandomValues, getRandomValues_,
+        js_getSubtle, getSubtle, js_getWebkitSubtle, getWebkitSubtle,
+        Crypto(..), gTypeCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getRandomValues\"]($2); })"
+        js_getRandomValues ::
+        Crypto -> ArrayBufferView -> IO ArrayBufferView
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
+getRandomValues ::
+                (MonadIO m, IsArrayBufferView array) =>
+                  Crypto -> array -> m ArrayBufferView
+getRandomValues self array
+  = liftIO (js_getRandomValues self (toArrayBufferView array))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.getRandomValues Mozilla Crypto.getRandomValues documentation> 
+getRandomValues_ ::
+                 (MonadIO m, IsArrayBufferView array) => Crypto -> array -> m ()
+getRandomValues_ self array
+  = liftIO (void (js_getRandomValues self (toArrayBufferView array)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"subtle\"]; })" js_getSubtle ::
+        Crypto -> IO SubtleCrypto
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.subtle Mozilla Crypto.subtle documentation> 
+getSubtle :: (MonadIO m) => Crypto -> m SubtleCrypto
+getSubtle self = liftIO (js_getSubtle self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"webkitSubtle\"]; })"
+        js_getWebkitSubtle :: Crypto -> IO WebKitSubtleCrypto
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Crypto.webkitSubtle Mozilla Crypto.webkitSubtle documentation> 
+getWebkitSubtle :: (MonadIO m) => Crypto -> m WebKitSubtleCrypto
+getWebkitSubtle self = liftIO (js_getWebkitSubtle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CryptoKey.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CryptoKey
+       (js_getType, getType, js_getExtractable, getExtractable,
+        js_getAlgorithm, getAlgorithm, js_getUsages, getUsages,
+        CryptoKey(..), gTypeCryptoKey)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        CryptoKey -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.type Mozilla CryptoKey.type documentation> 
+getType :: (MonadIO m) => CryptoKey -> m KeyType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"extractable\"] ? 1 : 0); })"
+        js_getExtractable :: CryptoKey -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.extractable Mozilla CryptoKey.extractable documentation> 
+getExtractable :: (MonadIO m) => CryptoKey -> m Bool
+getExtractable self = liftIO (js_getExtractable self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"algorithm\"]; })"
+        js_getAlgorithm :: CryptoKey -> IO GObject
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.algorithm Mozilla CryptoKey.algorithm documentation> 
+getAlgorithm :: (MonadIO m) => CryptoKey -> m GObject
+getAlgorithm self = liftIO (js_getAlgorithm self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"usages\"]; })" js_getUsages ::
+        CryptoKey -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey.usages Mozilla CryptoKey.usages documentation> 
+getUsages :: (MonadIO m) => CryptoKey -> m [CryptoKeyUsage]
+getUsages self
+  = liftIO ((js_getUsages self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomElementRegistry.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CustomElementRegistry
+       (js_define, define, js_get, get, get_, js_whenDefined, whenDefined,
+        CustomElementRegistry(..), gTypeCustomElementRegistry)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"define\"]($2, $3); })" js_define
+        :: CustomElementRegistry -> JSString -> Function -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.define Mozilla CustomElementRegistry.define documentation> 
+define ::
+       (MonadIO m, ToJSString name, IsFunction constructor) =>
+         CustomElementRegistry -> name -> constructor -> m ()
+define self name constructor
+  = liftIO
+      (js_define self (toJSString name) (toFunction constructor))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        CustomElementRegistry -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
+get ::
+    (MonadIO m, ToJSString name) =>
+      CustomElementRegistry -> name -> m JSVal
+get self name = liftIO (js_get self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.get Mozilla CustomElementRegistry.get documentation> 
+get_ ::
+     (MonadIO m, ToJSString name) =>
+       CustomElementRegistry -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"whenDefined\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_whenDefined :: CustomElementRegistry -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry.whenDefined Mozilla CustomElementRegistry.whenDefined documentation> 
+whenDefined ::
+            (MonadIO m, ToJSString name) =>
+              CustomElementRegistry -> name -> m ()
+whenDefined self name
+  = liftIO
+      ((js_whenDefined self (toJSString name)) >>=
+         maybeThrowPromiseRejected)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/CustomEvent.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.CustomEvent
+       (js_newCustomEvent, newCustomEvent, js_initCustomEvent,
+        initCustomEvent, js_getDetail, getDetail, CustomEvent(..),
+        gTypeCustomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"CustomEvent\"]($1,\n$2); })" js_newCustomEvent ::
+        JSString -> Optional CustomEventInit -> IO CustomEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation> 
+newCustomEvent ::
+               (MonadIO m, ToJSString type') =>
+                 type' -> Maybe CustomEventInit -> m CustomEvent
+newCustomEvent type' eventInitDict
+  = liftIO
+      (js_newCustomEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"initCustomEvent\"]($2, $3,\n$4, $5); })" js_initCustomEvent ::
+        CustomEvent -> JSString -> Bool -> Bool -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.initCustomEvent Mozilla CustomEvent.initCustomEvent documentation> 
+initCustomEvent ::
+                (MonadIO m, ToJSString type', ToJSVal detail) =>
+                  CustomEvent -> type' -> Bool -> Bool -> Maybe detail -> m ()
+initCustomEvent self type' bubbles cancelable detail
+  = liftIO
+      (mapM toJSVal detail >>=
+         \ detail' ->
+           js_initCustomEvent self (toJSString type') bubbles cancelable
+             (maybeToOptional detail'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })" js_getDetail ::
+        CustomEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent.detail Mozilla CustomEvent.detail documentation> 
+getDetail :: (MonadIO m) => CustomEvent -> m JSVal
+getDetail self = liftIO (js_getDetail self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMError.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMError
+       (js_getName, getName, js_getMessage, getMessage, DOMError(..),
+        gTypeDOMError, IsDOMError, toDOMError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        DOMError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.name Mozilla DOMError.name documentation> 
+getName ::
+        (MonadIO m, IsDOMError self, FromJSString result) =>
+          self -> m result
+getName self
+  = liftIO (fromJSString <$> (js_getName (toDOMError self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        DOMError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMError.message Mozilla DOMError.message documentation> 
+getMessage ::
+           (MonadIO m, IsDOMError self, FromJSString result) =>
+             self -> m result
+getMessage self
+  = liftIO (fromJSString <$> (js_getMessage (toDOMError self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMException.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMException
+       (js_newDOMException, newDOMException, js_toString, toString,
+        toString_, pattern INDEX_SIZE_ERR, pattern DOMSTRING_SIZE_ERR,
+        pattern HIERARCHY_REQUEST_ERR, pattern WRONG_DOCUMENT_ERR,
+        pattern INVALID_CHARACTER_ERR, pattern NO_DATA_ALLOWED_ERR,
+        pattern NO_MODIFICATION_ALLOWED_ERR, pattern NOT_FOUND_ERR,
+        pattern NOT_SUPPORTED_ERR, pattern INUSE_ATTRIBUTE_ERR,
+        pattern INVALID_STATE_ERR, pattern SYNTAX_ERR,
+        pattern INVALID_MODIFICATION_ERR, pattern NAMESPACE_ERR,
+        pattern INVALID_ACCESS_ERR, pattern VALIDATION_ERR,
+        pattern TYPE_MISMATCH_ERR, pattern SECURITY_ERR,
+        pattern NETWORK_ERR, pattern ABORT_ERR, pattern URL_MISMATCH_ERR,
+        pattern QUOTA_EXCEEDED_ERR, pattern TIMEOUT_ERR,
+        pattern INVALID_NODE_TYPE_ERR, pattern DATA_CLONE_ERR, js_getCode,
+        getCode, js_getName, getName, js_getMessage, getMessage,
+        DOMException(..), gTypeDOMException)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"DOMException\"]($1,\n$2); })" js_newDOMException ::
+        Optional JSString -> Optional JSString -> IO DOMException
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException Mozilla DOMException documentation> 
+newDOMException ::
+                (MonadIO m, ToJSString message, ToJSString name) =>
+                  Maybe message -> Maybe name -> m DOMException
+newDOMException message name
+  = liftIO
+      (js_newDOMException (toOptionalJSString message)
+         (toOptionalJSString name))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: DOMException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => DOMException -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.toString Mozilla DOMException.toString documentation> 
+toString_ :: (MonadIO m) => DOMException -> m ()
+toString_ self = liftIO (void (js_toString self))
+pattern INDEX_SIZE_ERR = 1
+pattern DOMSTRING_SIZE_ERR = 2
+pattern HIERARCHY_REQUEST_ERR = 3
+pattern WRONG_DOCUMENT_ERR = 4
+pattern INVALID_CHARACTER_ERR = 5
+pattern NO_DATA_ALLOWED_ERR = 6
+pattern NO_MODIFICATION_ALLOWED_ERR = 7
+pattern NOT_FOUND_ERR = 8
+pattern NOT_SUPPORTED_ERR = 9
+pattern INUSE_ATTRIBUTE_ERR = 10
+pattern INVALID_STATE_ERR = 11
+pattern SYNTAX_ERR = 12
+pattern INVALID_MODIFICATION_ERR = 13
+pattern NAMESPACE_ERR = 14
+pattern INVALID_ACCESS_ERR = 15
+pattern VALIDATION_ERR = 16
+pattern TYPE_MISMATCH_ERR = 17
+pattern SECURITY_ERR = 18
+pattern NETWORK_ERR = 19
+pattern ABORT_ERR = 20
+pattern URL_MISMATCH_ERR = 21
+pattern QUOTA_EXCEEDED_ERR = 22
+pattern TIMEOUT_ERR = 23
+pattern INVALID_NODE_TYPE_ERR = 24
+pattern DATA_CLONE_ERR = 25
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        DOMException -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.code Mozilla DOMException.code documentation> 
+getCode :: (MonadIO m) => DOMException -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        DOMException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.name Mozilla DOMException.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => DOMException -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        DOMException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMException.message Mozilla DOMException.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => DOMException -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMImplementation.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMImplementation
+       (js_createDocumentType, createDocumentType, createDocumentType_,
+        js_createDocument, createDocument, createDocument_,
+        js_createHTMLDocument, createHTMLDocument, createHTMLDocument_,
+        js_hasFeature, hasFeature, hasFeature_, DOMImplementation(..),
+        gTypeDOMImplementation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return $1[\"createDocumentType\"]($2, $3,\n$4); })" js_createDocumentType ::
+        DOMImplementation ->
+          JSString -> JSString -> JSString -> IO DocumentType
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
+createDocumentType ::
+                   (MonadIO m, ToJSString qualifiedName, ToJSString publicId,
+                    ToJSString systemId) =>
+                     DOMImplementation ->
+                       qualifiedName -> publicId -> systemId -> m DocumentType
+createDocumentType self qualifiedName publicId systemId
+  = liftIO
+      (js_createDocumentType self (toJSString qualifiedName)
+         (toJSString publicId)
+         (toJSString systemId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocumentType Mozilla DOMImplementation.createDocumentType documentation> 
+createDocumentType_ ::
+                    (MonadIO m, ToJSString qualifiedName, ToJSString publicId,
+                     ToJSString systemId) =>
+                      DOMImplementation -> qualifiedName -> publicId -> systemId -> m ()
+createDocumentType_ self qualifiedName publicId systemId
+  = liftIO
+      (void
+         (js_createDocumentType self (toJSString qualifiedName)
+            (toJSString publicId)
+            (toJSString systemId)))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createDocument\"]($2, $3, $4); })"
+        js_createDocument ::
+        DOMImplementation ->
+          Optional JSString ->
+            JSString -> Optional DocumentType -> IO XMLDocument
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
+createDocument ::
+               (MonadIO m, ToJSString namespaceURI, ToJSString qualifiedName) =>
+                 DOMImplementation ->
+                   Maybe namespaceURI ->
+                     qualifiedName -> Maybe DocumentType -> m XMLDocument
+createDocument self namespaceURI qualifiedName doctype
+  = liftIO
+      (js_createDocument self (toOptionalJSString namespaceURI)
+         (toJSString qualifiedName)
+         (maybeToOptional doctype))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createDocument Mozilla DOMImplementation.createDocument documentation> 
+createDocument_ ::
+                (MonadIO m, ToJSString namespaceURI, ToJSString qualifiedName) =>
+                  DOMImplementation ->
+                    Maybe namespaceURI -> qualifiedName -> Maybe DocumentType -> m ()
+createDocument_ self namespaceURI qualifiedName doctype
+  = liftIO
+      (void
+         (js_createDocument self (toOptionalJSString namespaceURI)
+            (toJSString qualifiedName)
+            (maybeToOptional doctype)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createHTMLDocument\"]($2); })"
+        js_createHTMLDocument ::
+        DOMImplementation -> Optional JSString -> IO HTMLDocument
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
+createHTMLDocument ::
+                   (MonadIO m, ToJSString title) =>
+                     DOMImplementation -> Maybe title -> m HTMLDocument
+createHTMLDocument self title
+  = liftIO (js_createHTMLDocument self (toOptionalJSString title))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.createHTMLDocument Mozilla DOMImplementation.createHTMLDocument documentation> 
+createHTMLDocument_ ::
+                    (MonadIO m, ToJSString title) =>
+                      DOMImplementation -> Maybe title -> m ()
+createHTMLDocument_ self title
+  = liftIO
+      (void (js_createHTMLDocument self (toOptionalJSString title)))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"hasFeature\"]() ? 1 : 0); })"
+        js_hasFeature :: DOMImplementation -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+hasFeature :: (MonadIO m) => DOMImplementation -> m Bool
+hasFeature self = liftIO (js_hasFeature self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation.hasFeature Mozilla DOMImplementation.hasFeature documentation> 
+hasFeature_ :: (MonadIO m) => DOMImplementation -> m ()
+hasFeature_ self = liftIO (void (js_hasFeature self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMNamedFlowCollection.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMNamedFlowCollection
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_getLength, getLength, DOMNamedFlowCollection(..),
+        gTypeDOMNamedFlowCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        DOMNamedFlowCollection -> Word -> IO (Nullable WebKitNamedFlow)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+item ::
+     (MonadIO m) =>
+       DOMNamedFlowCollection -> Word -> m (Maybe WebKitNamedFlow)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+item_ :: (MonadIO m) => DOMNamedFlowCollection -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) =>
+             DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.item Mozilla WebKitNamedFlowCollection.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => DOMNamedFlowCollection -> Word -> m WebKitNamedFlow
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        DOMNamedFlowCollection -> JSString -> IO (Nullable WebKitNamedFlow)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            DOMNamedFlowCollection -> name -> m (Maybe WebKitNamedFlow)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) =>
+             DOMNamedFlowCollection -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  DOMNamedFlowCollection -> name -> m WebKitNamedFlow
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.namedItem Mozilla WebKitNamedFlowCollection.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) =>
+                     DOMNamedFlowCollection -> name -> m WebKitNamedFlow
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        DOMNamedFlowCollection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection.length Mozilla WebKitNamedFlowCollection.length documentation> 
+getLength :: (MonadIO m) => DOMNamedFlowCollection -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMParser.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMParser
+       (js_newDOMParser, newDOMParser, js_parseFromString,
+        parseFromString, parseFromString_, DOMParser(..), gTypeDOMParser)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"DOMParser\"](); })"
+        js_newDOMParser :: IO DOMParser
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation> 
+newDOMParser :: (MonadIO m) => m DOMParser
+newDOMParser = liftIO (js_newDOMParser)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"parseFromString\"]($2, $3); })"
+        js_parseFromString ::
+        DOMParser -> JSString -> JSString -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
+parseFromString ::
+                (MonadIO m, ToJSString string, ToJSString contentType) =>
+                  DOMParser -> string -> contentType -> m Document
+parseFromString self string contentType
+  = liftIO
+      (js_parseFromString self (toJSString string)
+         (toJSString contentType))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser.parseFromString Mozilla DOMParser.parseFromString documentation> 
+parseFromString_ ::
+                 (MonadIO m, ToJSString string, ToJSString contentType) =>
+                   DOMParser -> string -> contentType -> m ()
+parseFromString_ self string contentType
+  = liftIO
+      (void
+         (js_parseFromString self (toJSString string)
+            (toJSString contentType)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPoint.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMPoint
+       (js_newDOMPoint, newDOMPoint, js_newDOMPoint', newDOMPoint',
+        js_fromPoint, fromPoint, fromPoint_, js_setX, setX, js_getX, getX,
+        js_setY, setY, js_getY, getY, js_setZ, setZ, js_getZ, getZ,
+        js_setW, setW, js_getW, getW, DOMPoint(..), gTypeDOMPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"DOMPoint\"]($1); })"
+        js_newDOMPoint :: DOMPointInit -> IO DOMPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
+newDOMPoint :: (MonadIO m) => DOMPointInit -> m DOMPoint
+newDOMPoint point = liftIO (js_newDOMPoint point)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"DOMPoint\"]($1, $2,\n$3, $4); })" js_newDOMPoint' ::
+        Optional Double ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO DOMPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation> 
+newDOMPoint' ::
+             (MonadIO m) =>
+               Maybe Double ->
+                 Maybe Double -> Maybe Double -> Maybe Double -> m DOMPoint
+newDOMPoint' x y z w
+  = liftIO
+      (js_newDOMPoint' (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional z)
+         (maybeToOptional w))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"DOMPoint\"][\"fromPoint\"]($1); })" js_fromPoint ::
+        Optional DOMPointInit -> IO DOMPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
+fromPoint :: (MonadIO m) => Maybe DOMPointInit -> m DOMPoint
+fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.fromPoint Mozilla DOMPoint.fromPoint documentation> 
+fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
+  = liftIO (void (js_fromPoint (maybeToOptional other)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        DOMPoint -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
+setX :: (MonadIO m) => DOMPoint -> Double -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        DOMPoint -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.x Mozilla DOMPoint.x documentation> 
+getX :: (MonadIO m) => DOMPoint -> m Double
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        DOMPoint -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
+setY :: (MonadIO m) => DOMPoint -> Double -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        DOMPoint -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.y Mozilla DOMPoint.y documentation> 
+getY :: (MonadIO m) => DOMPoint -> m Double
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"z\"] = $2; })" js_setZ ::
+        DOMPoint -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
+setZ :: (MonadIO m) => DOMPoint -> Double -> m ()
+setZ self val = liftIO (js_setZ self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
+        DOMPoint -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.z Mozilla DOMPoint.z documentation> 
+getZ :: (MonadIO m) => DOMPoint -> m Double
+getZ self = liftIO (js_getZ self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"w\"] = $2; })" js_setW ::
+        DOMPoint -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
+setW :: (MonadIO m) => DOMPoint -> Double -> m ()
+setW self val = liftIO (js_setW self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })" js_getW ::
+        DOMPoint -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint.w Mozilla DOMPoint.w documentation> 
+getW :: (MonadIO m) => DOMPoint -> m Double
+getW self = liftIO (js_getW self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMPointReadOnly.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMPointReadOnly
+       (js_newDOMPointReadOnly, newDOMPointReadOnly,
+        js_newDOMPointReadOnly', newDOMPointReadOnly', js_fromPoint,
+        fromPoint, fromPoint_, js_getX, getX, js_getY, getY, js_getZ, getZ,
+        js_getW, getW, DOMPointReadOnly(..), gTypeDOMPointReadOnly,
+        IsDOMPointReadOnly, toDOMPointReadOnly)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"DOMPointReadOnly\"]($1); })" js_newDOMPointReadOnly ::
+        DOMPointInit -> IO DOMPointReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
+newDOMPointReadOnly ::
+                    (MonadIO m) => DOMPointInit -> m DOMPointReadOnly
+newDOMPointReadOnly point = liftIO (js_newDOMPointReadOnly point)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"DOMPointReadOnly\"]($1,\n$2, $3, $4); })"
+        js_newDOMPointReadOnly' ::
+        Optional Double ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO DOMPointReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation> 
+newDOMPointReadOnly' ::
+                     (MonadIO m) =>
+                       Maybe Double ->
+                         Maybe Double -> Maybe Double -> Maybe Double -> m DOMPointReadOnly
+newDOMPointReadOnly' x y z w
+  = liftIO
+      (js_newDOMPointReadOnly' (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional z)
+         (maybeToOptional w))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"DOMPointReadOnly\"][\"fromPoint\"]($1); })" js_fromPoint ::
+        Optional DOMPointInit -> IO DOMPointReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
+fromPoint ::
+          (MonadIO m) => Maybe DOMPointInit -> m DOMPointReadOnly
+fromPoint other = liftIO (js_fromPoint (maybeToOptional other))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.fromPoint Mozilla DOMPointReadOnly.fromPoint documentation> 
+fromPoint_ :: (MonadIO m) => Maybe DOMPointInit -> m ()
+fromPoint_ other
+  = liftIO (void (js_fromPoint (maybeToOptional other)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        DOMPointReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.x Mozilla DOMPointReadOnly.x documentation> 
+getX :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
+getX self = liftIO (js_getX (toDOMPointReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        DOMPointReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.y Mozilla DOMPointReadOnly.y documentation> 
+getY :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
+getY self = liftIO (js_getY (toDOMPointReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
+        DOMPointReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.z Mozilla DOMPointReadOnly.z documentation> 
+getZ :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
+getZ self = liftIO (js_getZ (toDOMPointReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"w\"]; })" js_getW ::
+        DOMPointReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly.w Mozilla DOMPointReadOnly.w documentation> 
+getW :: (MonadIO m, IsDOMPointReadOnly self) => self -> m Double
+getW self = liftIO (js_getW (toDOMPointReadOnly self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRect.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMRect
+       (js_newDOMRect, newDOMRect, js_fromRect, fromRect, fromRect_,
+        js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setWidth, setWidth, js_getWidth, getWidth, js_setHeight,
+        setHeight, js_getHeight, getHeight, DOMRect(..), gTypeDOMRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"DOMRect\"]($1, $2,\n$3, $4); })" js_newDOMRect ::
+        Optional Double ->
+          Optional Double -> Optional Double -> Optional Double -> IO DOMRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect Mozilla DOMRect documentation> 
+newDOMRect ::
+           (MonadIO m) =>
+             Maybe Double ->
+               Maybe Double -> Maybe Double -> Maybe Double -> m DOMRect
+newDOMRect x y width height
+  = liftIO
+      (js_newDOMRect (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional width)
+         (maybeToOptional height))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"DOMRect\"][\"fromRect\"]($1); })" js_fromRect ::
+        Optional DOMRectInit -> IO DOMRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
+fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRect
+fromRect other = liftIO (js_fromRect (maybeToOptional other))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.fromRect Mozilla DOMRect.fromRect documentation> 
+fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
+fromRect_ other
+  = liftIO (void (js_fromRect (maybeToOptional other)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        DOMRect -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
+setX :: (MonadIO m) => DOMRect -> Double -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        DOMRect -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.x Mozilla DOMRect.x documentation> 
+getX :: (MonadIO m) => DOMRect -> m Double
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        DOMRect -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
+setY :: (MonadIO m) => DOMRect -> Double -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        DOMRect -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.y Mozilla DOMRect.y documentation> 
+getY :: (MonadIO m) => DOMRect -> m Double
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: DOMRect -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
+setWidth :: (MonadIO m) => DOMRect -> Double -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        DOMRect -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.width Mozilla DOMRect.width documentation> 
+getWidth :: (MonadIO m) => DOMRect -> m Double
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: DOMRect -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
+setHeight :: (MonadIO m) => DOMRect -> Double -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        DOMRect -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect.height Mozilla DOMRect.height documentation> 
+getHeight :: (MonadIO m) => DOMRect -> m Double
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMRectReadOnly.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMRectReadOnly
+       (js_newDOMRectReadOnly, newDOMRectReadOnly, js_fromRect, fromRect,
+        fromRect_, js_getX, getX, js_getY, getY, js_getWidth, getWidth,
+        js_getHeight, getHeight, js_getTop, getTop, js_getRight, getRight,
+        js_getBottom, getBottom, js_getLeft, getLeft, DOMRectReadOnly(..),
+        gTypeDOMRectReadOnly, IsDOMRectReadOnly, toDOMRectReadOnly)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"DOMRectReadOnly\"]($1,\n$2, $3, $4); })"
+        js_newDOMRectReadOnly ::
+        Optional Double ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO DOMRectReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly Mozilla DOMRectReadOnly documentation> 
+newDOMRectReadOnly ::
+                   (MonadIO m) =>
+                     Maybe Double ->
+                       Maybe Double -> Maybe Double -> Maybe Double -> m DOMRectReadOnly
+newDOMRectReadOnly x y width height
+  = liftIO
+      (js_newDOMRectReadOnly (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional width)
+         (maybeToOptional height))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"DOMRectReadOnly\"][\"fromRect\"]($1); })" js_fromRect ::
+        Optional DOMRectInit -> IO DOMRectReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
+fromRect :: (MonadIO m) => Maybe DOMRectInit -> m DOMRectReadOnly
+fromRect other = liftIO (js_fromRect (maybeToOptional other))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.fromRect Mozilla DOMRectReadOnly.fromRect documentation> 
+fromRect_ :: (MonadIO m) => Maybe DOMRectInit -> m ()
+fromRect_ other
+  = liftIO (void (js_fromRect (maybeToOptional other)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.x Mozilla DOMRectReadOnly.x documentation> 
+getX :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getX self = liftIO (js_getX (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.y Mozilla DOMRectReadOnly.y documentation> 
+getY :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getY self = liftIO (js_getY (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.width Mozilla DOMRectReadOnly.width documentation> 
+getWidth :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getWidth self = liftIO (js_getWidth (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.height Mozilla DOMRectReadOnly.height documentation> 
+getHeight ::
+          (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getHeight self = liftIO (js_getHeight (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.top Mozilla DOMRectReadOnly.top documentation> 
+getTop :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getTop self = liftIO (js_getTop (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })" js_getRight ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.right Mozilla DOMRectReadOnly.right documentation> 
+getRight :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getRight self = liftIO (js_getRight (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })" js_getBottom ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.bottom Mozilla DOMRectReadOnly.bottom documentation> 
+getBottom ::
+          (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getBottom self = liftIO (js_getBottom (toDOMRectReadOnly self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })" js_getLeft ::
+        DOMRectReadOnly -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly.left Mozilla DOMRectReadOnly.left documentation> 
+getLeft :: (MonadIO m, IsDOMRectReadOnly self) => self -> m Double
+getLeft self = liftIO (js_getLeft (toDOMRectReadOnly self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringList.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMStringList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_contains,
+        contains, contains_, js_getLength, getLength, DOMStringList(..),
+        gTypeDOMStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        DOMStringList -> Word -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+item ::
+     (MonadIO m, FromJSString result) =>
+       DOMStringList -> Word -> m (Maybe result)
+item self index
+  = liftIO (fromMaybeJSString <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+item_ :: (MonadIO m) => DOMStringList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack, FromJSString result) =>
+             DOMStringList -> Word -> m result
+itemUnsafe self index
+  = liftIO
+      ((fromMaybeJSString <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.item Mozilla DOMStringList.item documentation> 
+itemUnchecked ::
+              (MonadIO m, FromJSString result) =>
+                DOMStringList -> Word -> m result
+itemUnchecked self index
+  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
+        js_contains :: DOMStringList -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
+contains ::
+         (MonadIO m, ToJSString string) => DOMStringList -> string -> m Bool
+contains self string
+  = liftIO (js_contains self (toJSString string))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.contains Mozilla DOMStringList.contains documentation> 
+contains_ ::
+          (MonadIO m, ToJSString string) => DOMStringList -> string -> m ()
+contains_ self string
+  = liftIO (void (js_contains self (toJSString string)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        DOMStringList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList.length Mozilla DOMStringList.length documentation> 
+getLength :: (MonadIO m) => DOMStringList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMStringMap.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMStringMap
+       (js_get, get, get_, DOMStringMap(..), gTypeDOMStringMap) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        DOMStringMap -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
+get ::
+    (MonadIO m, ToJSString name, FromJSString result) =>
+      DOMStringMap -> name -> m result
+get self name
+  = liftIO (fromJSString <$> (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap.get Mozilla DOMStringMap.get documentation> 
+get_ ::
+     (MonadIO m, ToJSString name) => DOMStringMap -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DOMTokenList.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DOMTokenList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_contains,
+        contains, contains_, js_add, add, js_remove, remove, js_toggle,
+        toggle, toggle_, js_replace, replace, js_supports, supports,
+        supports_, js_getLength, getLength, js_setValue, setValue,
+        js_getValue, getValue, DOMTokenList(..), gTypeDOMTokenList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        DOMTokenList -> Word -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+item ::
+     (MonadIO m, FromJSString result) =>
+       DOMTokenList -> Word -> m (Maybe result)
+item self index
+  = liftIO (fromMaybeJSString <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+item_ :: (MonadIO m) => DOMTokenList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack, FromJSString result) =>
+             DOMTokenList -> Word -> m result
+itemUnsafe self index
+  = liftIO
+      ((fromMaybeJSString <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.item Mozilla DOMTokenList.item documentation> 
+itemUnchecked ::
+              (MonadIO m, FromJSString result) =>
+                DOMTokenList -> Word -> m result
+itemUnchecked self index
+  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
+        js_contains :: DOMTokenList -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
+contains ::
+         (MonadIO m, ToJSString token) => DOMTokenList -> token -> m Bool
+contains self token = liftIO (js_contains self (toJSString token))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.contains Mozilla DOMTokenList.contains documentation> 
+contains_ ::
+          (MonadIO m, ToJSString token) => DOMTokenList -> token -> m ()
+contains_ self token
+  = liftIO (void (js_contains self (toJSString token)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"add\"]($2); })" js_add ::
+        DOMTokenList -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.add Mozilla DOMTokenList.add documentation> 
+add ::
+    (MonadIO m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
+add self tokens
+  = liftIO (toJSVal tokens >>= \ tokens' -> js_add self tokens')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
+        DOMTokenList -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.remove Mozilla DOMTokenList.remove documentation> 
+remove ::
+       (MonadIO m, ToJSString tokens) => DOMTokenList -> [tokens] -> m ()
+remove self tokens
+  = liftIO (toJSVal tokens >>= \ tokens' -> js_remove self tokens')
+ 
+foreign import javascript safe "(($1, $2, $3) => { return ($1[\"toggle\"]($2, $3) ? 1 : 0); })"
+        js_toggle :: DOMTokenList -> JSString -> Bool -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
+toggle ::
+       (MonadIO m, ToJSString token) =>
+         DOMTokenList -> token -> Bool -> m Bool
+toggle self token force
+  = liftIO (js_toggle self (toJSString token) force)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.toggle Mozilla DOMTokenList.toggle documentation> 
+toggle_ ::
+        (MonadIO m, ToJSString token) =>
+          DOMTokenList -> token -> Bool -> m ()
+toggle_ self token force
+  = liftIO (void (js_toggle self (toJSString token) force))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replace\"]($2, $3); })" js_replace
+        :: DOMTokenList -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.replace Mozilla DOMTokenList.replace documentation> 
+replace ::
+        (MonadIO m, ToJSString token, ToJSString newToken) =>
+          DOMTokenList -> token -> newToken -> m ()
+replace self token newToken
+  = liftIO (js_replace self (toJSString token) (toJSString newToken))
+ 
+foreign import javascript safe "(($1, $2) => { return ($1[\"supports\"]($2) ? 1 : 0); })"
+        js_supports :: DOMTokenList -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
+supports ::
+         (MonadIO m, ToJSString token) => DOMTokenList -> token -> m Bool
+supports self token = liftIO (js_supports self (toJSString token))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.supports Mozilla DOMTokenList.supports documentation> 
+supports_ ::
+          (MonadIO m, ToJSString token) => DOMTokenList -> token -> m ()
+supports_ self token
+  = liftIO (void (js_supports self (toJSString token)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        DOMTokenList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.length Mozilla DOMTokenList.length documentation> 
+getLength :: (MonadIO m) => DOMTokenList -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: DOMTokenList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => DOMTokenList -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        DOMTokenList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList.value Mozilla DOMTokenList.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => DOMTokenList -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataCue.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DataCue
+       (js_newDataCue, newDataCue, js_newDataCue', newDataCue',
+        js_setData, setData, js_getData, getData, js_setValue, setValue,
+        js_getValue, getValue, js_getType, getType, DataCue(..),
+        gTypeDataCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return new window[\"WebKitDataCue\"]($1,\n$2, $3); })" js_newDataCue ::
+        Double -> Double -> ArrayBuffer -> IO DataCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue ::
+           (MonadIO m, IsArrayBuffer data') =>
+             Double -> Double -> data' -> m DataCue
+newDataCue startTime endTime data'
+  = liftIO (js_newDataCue startTime endTime (toArrayBuffer data'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"WebKitDataCue\"]($1,\n$2, $3, $4); })" js_newDataCue' ::
+        Double -> Double -> JSVal -> Optional JSString -> IO DataCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation> 
+newDataCue' ::
+            (MonadIO m, ToJSVal value, ToJSString type') =>
+              Double -> Double -> value -> Maybe type' -> m DataCue
+newDataCue' startTime endTime value type'
+  = liftIO
+      (toJSVal value >>=
+         \ value' -> js_newDataCue' startTime endTime value'
+         (toOptionalJSString type'))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
+        DataCue -> ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+setData :: (MonadIO m, IsArrayBuffer val) => DataCue -> val -> m ()
+setData self val = liftIO (js_setData self (toArrayBuffer val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        DataCue -> IO ArrayBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.data Mozilla WebKitDataCue.data documentation> 
+getData :: (MonadIO m) => DataCue -> m ArrayBuffer
+getData self = liftIO (js_getData self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: DataCue -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+setValue :: (MonadIO m, ToJSVal val) => DataCue -> val -> m ()
+setValue self val
+  = liftIO (toJSVal val >>= \ val' -> js_setValue self val')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        DataCue -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.value Mozilla WebKitDataCue.value documentation> 
+getValue :: (MonadIO m) => DataCue -> m JSVal
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        DataCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue.type Mozilla WebKitDataCue.type documentation> 
+getType :: (MonadIO m, FromJSString result) => DataCue -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransfer.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransfer
+       (js_setDragImage, setDragImage, js_getData, getData, getData_,
+        js_setData, setData, js_clearData, clearData, js_setDropEffect,
+        setDropEffect, js_getDropEffect, getDropEffect,
+        js_setEffectAllowed, setEffectAllowed, js_getEffectAllowed,
+        getEffectAllowed, js_getItems, getItems, js_getTypes, getTypes,
+        js_getFiles, getFiles, DataTransfer(..), gTypeDataTransfer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setDragImage\"]($2, $3, $4); })"
+        js_setDragImage ::
+        DataTransfer -> Optional Element -> Int -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setDragImage Mozilla DataTransfer.setDragImage documentation> 
+setDragImage ::
+             (MonadIO m, IsElement image) =>
+               DataTransfer -> Maybe image -> Int -> Int -> m ()
+setDragImage self image x y
+  = liftIO
+      (js_setDragImage self (maybeToOptional (fmap toElement image)) x y)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getData\"]($2); })" js_getData
+        :: DataTransfer -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
+getData ::
+        (MonadIO m, ToJSString format, FromJSString result) =>
+          DataTransfer -> format -> m result
+getData self format
+  = liftIO (fromJSString <$> (js_getData self (toJSString format)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.getData Mozilla DataTransfer.getData documentation> 
+getData_ ::
+         (MonadIO m, ToJSString format) => DataTransfer -> format -> m ()
+getData_ self format
+  = liftIO (void (js_getData self (toJSString format)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setData\"]($2, $3); })"
+        js_setData :: DataTransfer -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.setData Mozilla DataTransfer.setData documentation> 
+setData ::
+        (MonadIO m, ToJSString format, ToJSString data') =>
+          DataTransfer -> format -> data' -> m ()
+setData self format data'
+  = liftIO (js_setData self (toJSString format) (toJSString data'))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearData\"]($2); })"
+        js_clearData :: DataTransfer -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.clearData Mozilla DataTransfer.clearData documentation> 
+clearData ::
+          (MonadIO m, ToJSString format) =>
+            DataTransfer -> Maybe format -> m ()
+clearData self format
+  = liftIO (js_clearData self (toOptionalJSString format))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dropEffect\"] = $2; })"
+        js_setDropEffect :: DataTransfer -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
+setDropEffect ::
+              (MonadIO m, ToJSString val) => DataTransfer -> val -> m ()
+setDropEffect self val
+  = liftIO (js_setDropEffect self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dropEffect\"]; })"
+        js_getDropEffect :: DataTransfer -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.dropEffect Mozilla DataTransfer.dropEffect documentation> 
+getDropEffect ::
+              (MonadIO m, FromJSString result) => DataTransfer -> m result
+getDropEffect self
+  = liftIO (fromJSString <$> (js_getDropEffect self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"effectAllowed\"] = $2; })"
+        js_setEffectAllowed :: DataTransfer -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
+setEffectAllowed ::
+                 (MonadIO m, ToJSString val) => DataTransfer -> val -> m ()
+setEffectAllowed self val
+  = liftIO (js_setEffectAllowed self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"effectAllowed\"]; })"
+        js_getEffectAllowed :: DataTransfer -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.effectAllowed Mozilla DataTransfer.effectAllowed documentation> 
+getEffectAllowed ::
+                 (MonadIO m, FromJSString result) => DataTransfer -> m result
+getEffectAllowed self
+  = liftIO (fromJSString <$> (js_getEffectAllowed self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"items\"]; })" js_getItems ::
+        DataTransfer -> IO DataTransferItemList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.items Mozilla DataTransfer.items documentation> 
+getItems :: (MonadIO m) => DataTransfer -> m DataTransferItemList
+getItems self = liftIO (js_getItems self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"types\"]; })" js_getTypes ::
+        DataTransfer -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.types Mozilla DataTransfer.types documentation> 
+getTypes ::
+         (MonadIO m, FromJSString result) => DataTransfer -> m [result]
+getTypes self = liftIO ((js_getTypes self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })" js_getFiles ::
+        DataTransfer -> IO FileList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer.files Mozilla DataTransfer.files documentation> 
+getFiles :: (MonadIO m) => DataTransfer -> m FileList
+getFiles self = liftIO (js_getFiles self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItem.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransferItem
+       (js_getAsString, getAsString, js_getAsFile, getAsFile, getAsFile_,
+        getAsFileUnsafe, getAsFileUnchecked, js_getKind, getKind,
+        js_getType, getType, DataTransferItem(..), gTypeDataTransferItem)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getAsString\"]($2); })"
+        js_getAsString ::
+        DataTransferItem -> Optional (StringCallback callback) -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsString Mozilla DataTransferItem.getAsString documentation> 
+getAsString ::
+            (MonadIO m, ToJSString callback) =>
+              DataTransferItem -> Maybe (StringCallback callback) -> m ()
+getAsString self callback
+  = liftIO (js_getAsString self (maybeToOptional callback))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAsFile\"](); })" js_getAsFile
+        :: DataTransferItem -> IO (Nullable Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFile :: (MonadIO m) => DataTransferItem -> m (Maybe Blob)
+getAsFile self = liftIO (nullableToMaybe <$> (js_getAsFile self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFile_ :: (MonadIO m) => DataTransferItem -> m ()
+getAsFile_ self = liftIO (void (js_getAsFile self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFileUnsafe ::
+                (MonadIO m, HasCallStack) => DataTransferItem -> m Blob
+getAsFileUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAsFile self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.getAsFile Mozilla DataTransferItem.getAsFile documentation> 
+getAsFileUnchecked :: (MonadIO m) => DataTransferItem -> m Blob
+getAsFileUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAsFile self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        DataTransferItem -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.kind Mozilla DataTransferItem.kind documentation> 
+getKind ::
+        (MonadIO m, FromJSString result) => DataTransferItem -> m result
+getKind self = liftIO (fromJSString <$> (js_getKind self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        DataTransferItem -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem.type Mozilla DataTransferItem.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => DataTransferItem -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DataTransferItemList.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DataTransferItemList
+       (js_item, item, item_, js_clear, clear, js_addFile, addFile,
+        js_add, add, js_getLength, getLength, DataTransferItemList(..),
+        gTypeDataTransferItemList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        DataTransferItemList -> Word -> IO DataTransferItem
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
+item ::
+     (MonadIO m) => DataTransferItemList -> Word -> m DataTransferItem
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.item Mozilla DataTransferItemList.item documentation> 
+item_ :: (MonadIO m) => DataTransferItemList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        DataTransferItemList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.clear Mozilla DataTransferItemList.clear documentation> 
+clear :: (MonadIO m) => DataTransferItemList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"add\"]($2); })" js_addFile ::
+        DataTransferItemList -> Optional File -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
+addFile ::
+        (MonadIO m) => DataTransferItemList -> Maybe File -> m ()
+addFile self file = liftIO (js_addFile self (maybeToOptional file))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_add ::
+        DataTransferItemList ->
+          Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.add Mozilla DataTransferItemList.add documentation> 
+add ::
+    (MonadIO m, ToJSString data', ToJSString type') =>
+      DataTransferItemList -> Maybe data' -> Maybe type' -> m ()
+add self data' type'
+  = liftIO
+      (js_add self (toOptionalJSString data') (toOptionalJSString type'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        DataTransferItemList -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList.length Mozilla DataTransferItemList.length documentation> 
+getLength :: (MonadIO m) => DataTransferItemList -> m Int
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Database.hs b/src/GHCJS/DOM/JSFFI/Generated/Database.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Database.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Database
+       (js_changeVersion, changeVersion, js_transaction, transaction,
+        js_readTransaction, readTransaction, js_getVersion, getVersion,
+        Database(..), gTypeDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"changeVersion\"]($2, $3, $4,\n$5, $6); })" js_changeVersion ::
+        Database ->
+          JSString ->
+            JSString ->
+              Optional SQLTransactionCallback ->
+                Optional SQLTransactionErrorCallback ->
+                  Optional VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.changeVersion Mozilla Database.changeVersion documentation> 
+changeVersion ::
+              (MonadIO m, ToJSString oldVersion, ToJSString newVersion) =>
+                Database ->
+                  oldVersion ->
+                    newVersion ->
+                      Maybe SQLTransactionCallback ->
+                        Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+changeVersion self oldVersion newVersion callback errorCallback
+  successCallback
+  = liftIO
+      (js_changeVersion self (toJSString oldVersion)
+         (toJSString newVersion)
+         (maybeToOptional callback)
+         (maybeToOptional errorCallback)
+         (maybeToOptional successCallback))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"transaction\"]($2, $3, $4); })"
+        js_transaction ::
+        Database ->
+          SQLTransactionCallback ->
+            Optional SQLTransactionErrorCallback ->
+              Optional VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.transaction Mozilla Database.transaction documentation> 
+transaction ::
+            (MonadIO m) =>
+              Database ->
+                SQLTransactionCallback ->
+                  Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+transaction self callback errorCallback successCallback
+  = liftIO
+      (js_transaction self callback (maybeToOptional errorCallback)
+         (maybeToOptional successCallback))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"readTransaction\"]($2, $3,\n$4); })" js_readTransaction ::
+        Database ->
+          SQLTransactionCallback ->
+            Optional SQLTransactionErrorCallback ->
+              Optional VoidCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.readTransaction Mozilla Database.readTransaction documentation> 
+readTransaction ::
+                (MonadIO m) =>
+                  Database ->
+                    SQLTransactionCallback ->
+                      Maybe SQLTransactionErrorCallback -> Maybe VoidCallback -> m ()
+readTransaction self callback errorCallback successCallback
+  = liftIO
+      (js_readTransaction self callback (maybeToOptional errorCallback)
+         (maybeToOptional successCallback))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
+        Database -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Database.version Mozilla Database.version documentation> 
+getVersion ::
+           (MonadIO m, FromJSString result) => Database -> m result
+getVersion self = liftIO (fromJSString <$> (js_getVersion self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DatabaseCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DatabaseCallback
+       (newDatabaseCallback, newDatabaseCallbackSync,
+        newDatabaseCallbackAsync, DatabaseCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallback ::
+                    (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
+newDatabaseCallback callback
+  = liftIO
+      (DatabaseCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ database ->
+              fromJSValUnchecked database >>= \ database' -> callback database'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallbackSync ::
+                        (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
+newDatabaseCallbackSync callback
+  = liftIO
+      (DatabaseCallback <$>
+         syncCallback1 ContinueAsync
+           (\ database ->
+              fromJSValUnchecked database >>= \ database' -> callback database'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DatabaseCallback Mozilla DatabaseCallback documentation> 
+newDatabaseCallbackAsync ::
+                         (MonadIO m) => (Database -> IO ()) -> m DatabaseCallback
+newDatabaseCallbackAsync callback
+  = liftIO
+      (DatabaseCallback <$>
+         asyncCallback1
+           (\ database ->
+              fromJSValUnchecked database >>= \ database' -> callback database'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DedicatedWorkerGlobalScope.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DedicatedWorkerGlobalScope
+       (js_postMessage, postMessage, message,
+        DedicatedWorkerGlobalScope(..), gTypeDedicatedWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessage ::
+        DedicatedWorkerGlobalScope -> JSVal -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.postMessage Mozilla DedicatedWorkerGlobalScope.postMessage documentation> 
+postMessage ::
+            (MonadIO m, ToJSVal message, IsGObject transfer) =>
+              DedicatedWorkerGlobalScope -> message -> [transfer] -> m ()
+postMessage self message transfer
+  = liftIO
+      (toJSVal transfer >>=
+         \ transfer' ->
+           toJSVal message >>= \ message' -> js_postMessage self message'
+             transfer')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope.onmessage Mozilla DedicatedWorkerGlobalScope.onmessage documentation> 
+message :: EventName DedicatedWorkerGlobalScope MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DelayNode.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DelayNode
+       (js_getDelayTime, getDelayTime, DelayNode(..), gTypeDelayNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"delayTime\"]; })"
+        js_getDelayTime :: DelayNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode.delayTime Mozilla DelayNode.delayTime documentation> 
+getDelayTime :: (MonadIO m) => DelayNode -> m AudioParam
+getDelayTime self = liftIO (js_getDelayTime self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceMotionEvent.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceMotionEvent
+       (js_initDeviceMotionEvent, initDeviceMotionEvent,
+        js_getAcceleration, getAcceleration, getAccelerationUnsafe,
+        getAccelerationUnchecked, js_getAccelerationIncludingGravity,
+        getAccelerationIncludingGravity,
+        getAccelerationIncludingGravityUnsafe,
+        getAccelerationIncludingGravityUnchecked, js_getRotationRate,
+        getRotationRate, getRotationRateUnsafe, getRotationRateUnchecked,
+        js_getInterval, getInterval, getIntervalUnsafe,
+        getIntervalUnchecked, DeviceMotionEvent(..),
+        gTypeDeviceMotionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"initDeviceMotionEvent\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_initDeviceMotionEvent ::
+        DeviceMotionEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional Acceleration ->
+                  Optional Acceleration ->
+                    Optional RotationRate -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.initDeviceMotionEvent Mozilla DeviceMotionEvent.initDeviceMotionEvent documentation> 
+initDeviceMotionEvent ::
+                      (MonadIO m, ToJSString type') =>
+                        DeviceMotionEvent ->
+                          Maybe type' ->
+                            Bool ->
+                              Bool ->
+                                Maybe Acceleration ->
+                                  Maybe Acceleration -> Maybe RotationRate -> Maybe Double -> m ()
+initDeviceMotionEvent self type' bubbles cancelable acceleration
+  accelerationIncludingGravity rotationRate interval
+  = liftIO
+      (js_initDeviceMotionEvent self (toOptionalJSString type') bubbles
+         cancelable
+         (maybeToOptional acceleration)
+         (maybeToOptional accelerationIncludingGravity)
+         (maybeToOptional rotationRate)
+         (maybeToOptional interval))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"acceleration\"]; })"
+        js_getAcceleration ::
+        DeviceMotionEvent -> IO (Nullable Acceleration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
+getAcceleration ::
+                (MonadIO m) => DeviceMotionEvent -> m (Maybe Acceleration)
+getAcceleration self
+  = liftIO (nullableToMaybe <$> (js_getAcceleration self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
+getAccelerationUnsafe ::
+                      (MonadIO m, HasCallStack) => DeviceMotionEvent -> m Acceleration
+getAccelerationUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAcceleration self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.acceleration Mozilla DeviceMotionEvent.acceleration documentation> 
+getAccelerationUnchecked ::
+                         (MonadIO m) => DeviceMotionEvent -> m Acceleration
+getAccelerationUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAcceleration self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"accelerationIncludingGravity\"]; })"
+        js_getAccelerationIncludingGravity ::
+        DeviceMotionEvent -> IO (Nullable Acceleration)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
+getAccelerationIncludingGravity ::
+                                (MonadIO m) => DeviceMotionEvent -> m (Maybe Acceleration)
+getAccelerationIncludingGravity self
+  = liftIO
+      (nullableToMaybe <$> (js_getAccelerationIncludingGravity self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
+getAccelerationIncludingGravityUnsafe ::
+                                      (MonadIO m, HasCallStack) =>
+                                        DeviceMotionEvent -> m Acceleration
+getAccelerationIncludingGravityUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAccelerationIncludingGravity self))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.accelerationIncludingGravity Mozilla DeviceMotionEvent.accelerationIncludingGravity documentation> 
+getAccelerationIncludingGravityUnchecked ::
+                                         (MonadIO m) => DeviceMotionEvent -> m Acceleration
+getAccelerationIncludingGravityUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getAccelerationIncludingGravity self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rotationRate\"]; })"
+        js_getRotationRate ::
+        DeviceMotionEvent -> IO (Nullable RotationRate)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
+getRotationRate ::
+                (MonadIO m) => DeviceMotionEvent -> m (Maybe RotationRate)
+getRotationRate self
+  = liftIO (nullableToMaybe <$> (js_getRotationRate self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
+getRotationRateUnsafe ::
+                      (MonadIO m, HasCallStack) => DeviceMotionEvent -> m RotationRate
+getRotationRateUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRotationRate self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.rotationRate Mozilla DeviceMotionEvent.rotationRate documentation> 
+getRotationRateUnchecked ::
+                         (MonadIO m) => DeviceMotionEvent -> m RotationRate
+getRotationRateUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getRotationRate self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"interval\"]; })" js_getInterval
+        :: DeviceMotionEvent -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
+getInterval :: (MonadIO m) => DeviceMotionEvent -> m (Maybe Double)
+getInterval self
+  = liftIO (nullableToMaybe <$> (js_getInterval self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
+getIntervalUnsafe ::
+                  (MonadIO m, HasCallStack) => DeviceMotionEvent -> m Double
+getIntervalUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getInterval self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent.interval Mozilla DeviceMotionEvent.interval documentation> 
+getIntervalUnchecked ::
+                     (MonadIO m) => DeviceMotionEvent -> m Double
+getIntervalUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getInterval self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceOrientationEvent.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceOrientationEvent
+       (js_initDeviceOrientationEvent, initDeviceOrientationEvent,
+        js_getAlpha, getAlpha, getAlphaUnsafe, getAlphaUnchecked,
+        js_getBeta, getBeta, getBetaUnsafe, getBetaUnchecked, js_getGamma,
+        getGamma, getGammaUnsafe, getGammaUnchecked, js_getAbsolute,
+        getAbsolute, getAbsoluteUnsafe, getAbsoluteUnchecked,
+        DeviceOrientationEvent(..), gTypeDeviceOrientationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"initDeviceOrientationEvent\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_initDeviceOrientationEvent ::
+        DeviceOrientationEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional Double ->
+                  Optional Double -> Optional Double -> Optional Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.initDeviceOrientationEvent Mozilla DeviceOrientationEvent.initDeviceOrientationEvent documentation> 
+initDeviceOrientationEvent ::
+                           (MonadIO m, ToJSString type') =>
+                             DeviceOrientationEvent ->
+                               Maybe type' ->
+                                 Bool ->
+                                   Bool ->
+                                     Maybe Double ->
+                                       Maybe Double -> Maybe Double -> Maybe Bool -> m ()
+initDeviceOrientationEvent self type' bubbles cancelable alpha beta
+  gamma absolute
+  = liftIO
+      (js_initDeviceOrientationEvent self (toOptionalJSString type')
+         bubbles
+         cancelable
+         (maybeToOptional alpha)
+         (maybeToOptional beta)
+         (maybeToOptional gamma)
+         (maybeToOptional absolute))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })" js_getAlpha ::
+        DeviceOrientationEvent -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
+getAlpha ::
+         (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
+getAlpha self = liftIO (nullableToMaybe <$> (js_getAlpha self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
+getAlphaUnsafe ::
+               (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
+getAlphaUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAlpha self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.alpha Mozilla DeviceOrientationEvent.alpha documentation> 
+getAlphaUnchecked ::
+                  (MonadIO m) => DeviceOrientationEvent -> m Double
+getAlphaUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAlpha self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"beta\"]; })" js_getBeta ::
+        DeviceOrientationEvent -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
+getBeta ::
+        (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
+getBeta self = liftIO (nullableToMaybe <$> (js_getBeta self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
+getBetaUnsafe ::
+              (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
+getBetaUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBeta self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.beta Mozilla DeviceOrientationEvent.beta documentation> 
+getBetaUnchecked ::
+                 (MonadIO m) => DeviceOrientationEvent -> m Double
+getBetaUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getBeta self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gamma\"]; })" js_getGamma ::
+        DeviceOrientationEvent -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
+getGamma ::
+         (MonadIO m) => DeviceOrientationEvent -> m (Maybe Double)
+getGamma self = liftIO (nullableToMaybe <$> (js_getGamma self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
+getGammaUnsafe ::
+               (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Double
+getGammaUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getGamma self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.gamma Mozilla DeviceOrientationEvent.gamma documentation> 
+getGammaUnchecked ::
+                  (MonadIO m) => DeviceOrientationEvent -> m Double
+getGammaUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getGamma self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"absolute\"]; })" js_getAbsolute
+        :: DeviceOrientationEvent -> IO (Nullable Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
+getAbsolute ::
+            (MonadIO m) => DeviceOrientationEvent -> m (Maybe Bool)
+getAbsolute self
+  = liftIO (nullableToMaybe <$> (js_getAbsolute self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
+getAbsoluteUnsafe ::
+                  (MonadIO m, HasCallStack) => DeviceOrientationEvent -> m Bool
+getAbsoluteUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAbsolute self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent.absolute Mozilla DeviceOrientationEvent.absolute documentation> 
+getAbsoluteUnchecked ::
+                     (MonadIO m) => DeviceOrientationEvent -> m Bool
+getAbsoluteUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAbsolute self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DeviceProximityEvent.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DeviceProximityEvent
+       (js_newDeviceProximityEvent, newDeviceProximityEvent, js_getValue,
+        getValue, js_getMin, getMin, js_getMax, getMax,
+        DeviceProximityEvent(..), gTypeDeviceProximityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"DeviceProximityEvent\"]($1,\n$2); })"
+        js_newDeviceProximityEvent ::
+        JSString ->
+          Optional DeviceProximityEventInit -> IO DeviceProximityEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation> 
+newDeviceProximityEvent ::
+                        (MonadIO m, ToJSString type') =>
+                          type' -> Maybe DeviceProximityEventInit -> m DeviceProximityEvent
+newDeviceProximityEvent type' eventInitDict
+  = liftIO
+      (js_newDeviceProximityEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        DeviceProximityEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.value Mozilla DeviceProximityEvent.value documentation> 
+getValue :: (MonadIO m) => DeviceProximityEvent -> m Double
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
+        DeviceProximityEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.min Mozilla DeviceProximityEvent.min documentation> 
+getMin :: (MonadIO m) => DeviceProximityEvent -> m Double
+getMin self = liftIO (js_getMin self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
+        DeviceProximityEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent.max Mozilla DeviceProximityEvent.max documentation> 
+getMax :: (MonadIO m) => DeviceProximityEvent -> m Double
+getMax self = liftIO (js_getMax self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Document.hs b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Document.hs
@@ -0,0 +1,1850 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Document
+       (js_getAnimations, getAnimations, getAnimations_, js_newDocument,
+        newDocument, js_getElementsByTagName, getElementsByTagName,
+        getElementsByTagName_, js_getElementsByTagNameNS,
+        getElementsByTagNameNS, getElementsByTagNameNS_,
+        js_getElementsByClassName, getElementsByClassName,
+        getElementsByClassName_, js_createElement, createElement,
+        createElement_, js_createElementNS, createElementNS,
+        createElementNS_, js_createDocumentFragment,
+        createDocumentFragment, createDocumentFragment_, js_createTextNode,
+        createTextNode, createTextNode_, js_createCDATASection,
+        createCDATASection, createCDATASection_, js_createComment,
+        createComment, createComment_, js_createProcessingInstruction,
+        createProcessingInstruction, createProcessingInstruction_,
+        js_importNode, importNode, importNode_, js_adoptNode, adoptNode,
+        adoptNode_, js_createAttribute, createAttribute, createAttribute_,
+        js_createAttributeNS, createAttributeNS, createAttributeNS_,
+        js_createEvent, createEvent, createEvent_, js_createRange,
+        createRange, createRange_, js_createNodeIterator,
+        createNodeIterator, createNodeIterator_, js_createTreeWalker,
+        createTreeWalker, createTreeWalker_, js_getElementsByName,
+        getElementsByName, getElementsByName_, js_hasFocus, hasFocus,
+        hasFocus_, js_execCommand, execCommand, execCommand_,
+        js_queryCommandEnabled, queryCommandEnabled, queryCommandEnabled_,
+        js_queryCommandIndeterm, queryCommandIndeterm,
+        queryCommandIndeterm_, js_queryCommandState, queryCommandState,
+        queryCommandState_, js_queryCommandSupported,
+        queryCommandSupported, queryCommandSupported_,
+        js_queryCommandValue, queryCommandValue, queryCommandValue_,
+        js_getSelection, getSelection, getSelection_, getSelectionUnsafe,
+        getSelectionUnchecked, js_createExpression, createExpression,
+        createExpression_, js_createNSResolver, createNSResolver,
+        createNSResolver_, js_evaluate, evaluate, evaluate_,
+        js_webkitExitFullscreen, webkitExitFullscreen,
+        js_webkitCancelFullScreen, webkitCancelFullScreen,
+        js_exitPointerLock, exitPointerLock, js_getOverrideStyle,
+        getOverrideStyle, getOverrideStyle_, js_caretRangeFromPoint,
+        caretRangeFromPoint, caretRangeFromPoint_, js_getCSSCanvasContext,
+        getCSSCanvasContext, getCSSCanvasContext_, js_webkitGetNamedFlows,
+        webkitGetNamedFlows, webkitGetNamedFlows_, js_createTouch,
+        createTouch, createTouch_, js_createTouchList, createTouchList,
+        createTouchList_, js_getTimeline, getTimeline,
+        js_getImplementation, getImplementation, js_getURL, getURL,
+        js_getDocumentURI, getDocumentURI, js_getOrigin, getOrigin,
+        js_getCompatMode, getCompatMode, js_getCharacterSet,
+        getCharacterSet, js_getCharset, getCharset, js_getInputEncoding,
+        getInputEncoding, js_getContentType, getContentType, js_getDoctype,
+        getDoctype, getDoctypeUnsafe, getDoctypeUnchecked,
+        js_getDocumentElement, getDocumentElement,
+        getDocumentElementUnsafe, getDocumentElementUnchecked,
+        js_getLocation, getLocation, getLocationUnsafe,
+        getLocationUnchecked, js_setDomain, setDomain, js_getDomain,
+        getDomain, js_getReferrer, getReferrer, js_setCookie, setCookie,
+        js_getCookie, getCookie, js_getLastModified, getLastModified,
+        js_getReadyState, getReadyState, js_setTitle, setTitle,
+        js_getTitle, getTitle, js_setDir, setDir, js_getDir, getDir,
+        js_setBody, setBody, js_getBody, getBody, getBodyUnsafe,
+        getBodyUnchecked, js_getHead, getHead, getHeadUnsafe,
+        getHeadUnchecked, js_getImages, getImages, js_getEmbeds, getEmbeds,
+        js_getPlugins, getPlugins, js_getLinks, getLinks, js_getForms,
+        getForms, js_getScripts, getScripts, js_getCurrentScript,
+        getCurrentScript, getCurrentScriptUnsafe,
+        getCurrentScriptUnchecked, js_getDefaultView, getDefaultView,
+        getDefaultViewUnsafe, getDefaultViewUnchecked, js_setDesignMode,
+        setDesignMode, js_getDesignMode, getDesignMode, readyStateChange,
+        js_getStyleSheets, getStyleSheets, js_getScrollingElement,
+        getScrollingElement, getScrollingElementUnsafe,
+        getScrollingElementUnchecked, js_getWebkitFullscreenEnabled,
+        getWebkitFullscreenEnabled, js_getWebkitFullscreenElement,
+        getWebkitFullscreenElement, getWebkitFullscreenElementUnsafe,
+        getWebkitFullscreenElementUnchecked, js_getWebkitIsFullScreen,
+        getWebkitIsFullScreen, js_getWebkitFullScreenKeyboardInputAllowed,
+        getWebkitFullScreenKeyboardInputAllowed,
+        js_getWebkitCurrentFullScreenElement,
+        getWebkitCurrentFullScreenElement, webKitFullscreenChange,
+        webKitFullscreenError, pointerlockchange, pointerlockerror,
+        js_getFonts, getFonts, js_getHidden, getHidden,
+        js_getVisibilityState, getVisibilityState, visibilitychange,
+        js_getApplets, getApplets, js_getAnchors, getAnchors,
+        js_getPreferredStylesheetSet, getPreferredStylesheetSet,
+        getPreferredStylesheetSetUnsafe,
+        getPreferredStylesheetSetUnchecked, js_setSelectedStylesheetSet,
+        setSelectedStylesheetSet, js_getSelectedStylesheetSet,
+        getSelectedStylesheetSet, getSelectedStylesheetSetUnsafe,
+        getSelectedStylesheetSetUnchecked, js_getXmlEncoding,
+        getXmlEncoding, getXmlEncodingUnsafe, getXmlEncodingUnchecked,
+        js_setXmlVersion, setXmlVersion, js_getXmlVersion, getXmlVersion,
+        getXmlVersionUnsafe, getXmlVersionUnchecked, js_setXmlStandalone,
+        setXmlStandalone, js_getXmlStandalone, getXmlStandalone,
+        selectStart, selectionchange, js_getRootElement, getRootElement,
+        getRootElementUnsafe, getRootElementUnchecked, Document(..),
+        gTypeDocument, IsDocument, toDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAnimations\"](); })"
+        js_getAnimations :: Document -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
+getAnimations ::
+              (MonadIO m, IsDocument self) => self -> m [Animation]
+getAnimations self
+  = liftIO
+      ((js_getAnimations (toDocument self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getAnimations Mozilla Document.getAnimations documentation> 
+getAnimations_ :: (MonadIO m, IsDocument self) => self -> m ()
+getAnimations_ self
+  = liftIO (void (js_getAnimations (toDocument self)))
+ 
+foreign import javascript unsafe "(() => { return new window[\"Document\"](); })"
+        js_newDocument :: IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation> 
+newDocument :: (MonadIO m) => m Document
+newDocument = liftIO (js_newDocument)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
+        js_getElementsByTagName ::
+        Document -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadIO m, IsDocument self, ToJSString qualifiedName) =>
+                       self -> qualifiedName -> m HTMLCollection
+getElementsByTagName self qualifiedName
+  = liftIO
+      (js_getElementsByTagName (toDocument self)
+         (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagName Mozilla Document.getElementsByTagName documentation> 
+getElementsByTagName_ ::
+                      (MonadIO m, IsDocument self, ToJSString qualifiedName) =>
+                        self -> qualifiedName -> m ()
+getElementsByTagName_ self qualifiedName
+  = liftIO
+      (void
+         (js_getElementsByTagName (toDocument self)
+            (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2,\n$3); })" js_getElementsByTagNameNS
+        :: Document -> Optional JSString -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS ::
+                       (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                        ToJSString localName) =>
+                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
+getElementsByTagNameNS self namespaceURI localName
+  = liftIO
+      (js_getElementsByTagNameNS (toDocument self)
+         (toOptionalJSString namespaceURI)
+         (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByTagNameNS Mozilla Document.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS_ ::
+                        (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                         ToJSString localName) =>
+                          self -> Maybe namespaceURI -> localName -> m ()
+getElementsByTagNameNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getElementsByTagNameNS (toDocument self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })" js_getElementsByClassName ::
+        Document -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
+getElementsByClassName ::
+                       (MonadIO m, IsDocument self, ToJSString classNames) =>
+                         self -> classNames -> m HTMLCollection
+getElementsByClassName self classNames
+  = liftIO
+      (js_getElementsByClassName (toDocument self)
+         (toJSString classNames))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByClassName Mozilla Document.getElementsByClassName documentation> 
+getElementsByClassName_ ::
+                        (MonadIO m, IsDocument self, ToJSString classNames) =>
+                          self -> classNames -> m ()
+getElementsByClassName_ self classNames
+  = liftIO
+      (void
+         (js_getElementsByClassName (toDocument self)
+            (toJSString classNames)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createElement\"]($2); })"
+        js_createElement :: Document -> JSString -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
+createElement ::
+              (MonadIO m, IsDocument self, ToJSString localName) =>
+                self -> localName -> m Element
+createElement self localName
+  = liftIO
+      (js_createElement (toDocument self) (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElement Mozilla Document.createElement documentation> 
+createElement_ ::
+               (MonadIO m, IsDocument self, ToJSString localName) =>
+                 self -> localName -> m ()
+createElement_ self localName
+  = liftIO
+      (void (js_createElement (toDocument self) (toJSString localName)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createElementNS\"]($2, $3); })"
+        js_createElementNS ::
+        Document -> Optional JSString -> JSString -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
+createElementNS ::
+                (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                 ToJSString qualifiedName) =>
+                  self -> Maybe namespaceURI -> qualifiedName -> m Element
+createElementNS self namespaceURI qualifiedName
+  = liftIO
+      (js_createElementNS (toDocument self)
+         (toOptionalJSString namespaceURI)
+         (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createElementNS Mozilla Document.createElementNS documentation> 
+createElementNS_ ::
+                 (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                  ToJSString qualifiedName) =>
+                   self -> Maybe namespaceURI -> qualifiedName -> m ()
+createElementNS_ self namespaceURI qualifiedName
+  = liftIO
+      (void
+         (js_createElementNS (toDocument self)
+            (toOptionalJSString namespaceURI)
+            (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createDocumentFragment\"](); })"
+        js_createDocumentFragment :: Document -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
+createDocumentFragment ::
+                       (MonadIO m, IsDocument self) => self -> m DocumentFragment
+createDocumentFragment self
+  = liftIO (js_createDocumentFragment (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createDocumentFragment Mozilla Document.createDocumentFragment documentation> 
+createDocumentFragment_ ::
+                        (MonadIO m, IsDocument self) => self -> m ()
+createDocumentFragment_ self
+  = liftIO (void (js_createDocumentFragment (toDocument self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createTextNode\"]($2); })"
+        js_createTextNode :: Document -> JSString -> IO Text
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
+createTextNode ::
+               (MonadIO m, IsDocument self, ToJSString data') =>
+                 self -> data' -> m Text
+createTextNode self data'
+  = liftIO (js_createTextNode (toDocument self) (toJSString data'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTextNode Mozilla Document.createTextNode documentation> 
+createTextNode_ ::
+                (MonadIO m, IsDocument self, ToJSString data') =>
+                  self -> data' -> m ()
+createTextNode_ self data'
+  = liftIO
+      (void (js_createTextNode (toDocument self) (toJSString data')))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createCDATASection\"]($2); })"
+        js_createCDATASection :: Document -> JSString -> IO CDATASection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
+createCDATASection ::
+                   (MonadIO m, IsDocument self, ToJSString data') =>
+                     self -> data' -> m CDATASection
+createCDATASection self data'
+  = liftIO
+      (js_createCDATASection (toDocument self) (toJSString data'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createCDATASection Mozilla Document.createCDATASection documentation> 
+createCDATASection_ ::
+                    (MonadIO m, IsDocument self, ToJSString data') =>
+                      self -> data' -> m ()
+createCDATASection_ self data'
+  = liftIO
+      (void (js_createCDATASection (toDocument self) (toJSString data')))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createComment\"]($2); })"
+        js_createComment :: Document -> JSString -> IO Comment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
+createComment ::
+              (MonadIO m, IsDocument self, ToJSString data') =>
+                self -> data' -> m Comment
+createComment self data'
+  = liftIO (js_createComment (toDocument self) (toJSString data'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createComment Mozilla Document.createComment documentation> 
+createComment_ ::
+               (MonadIO m, IsDocument self, ToJSString data') =>
+                 self -> data' -> m ()
+createComment_ self data'
+  = liftIO
+      (void (js_createComment (toDocument self) (toJSString data')))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"createProcessingInstruction\"]($2,\n$3); })"
+        js_createProcessingInstruction ::
+        Document -> JSString -> JSString -> IO ProcessingInstruction
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
+createProcessingInstruction ::
+                            (MonadIO m, IsDocument self, ToJSString target,
+                             ToJSString data') =>
+                              self -> target -> data' -> m ProcessingInstruction
+createProcessingInstruction self target data'
+  = liftIO
+      (js_createProcessingInstruction (toDocument self)
+         (toJSString target)
+         (toJSString data'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createProcessingInstruction Mozilla Document.createProcessingInstruction documentation> 
+createProcessingInstruction_ ::
+                             (MonadIO m, IsDocument self, ToJSString target,
+                              ToJSString data') =>
+                               self -> target -> data' -> m ()
+createProcessingInstruction_ self target data'
+  = liftIO
+      (void
+         (js_createProcessingInstruction (toDocument self)
+            (toJSString target)
+            (toJSString data')))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"importNode\"]($2, $3); })"
+        js_importNode :: Document -> Node -> Bool -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
+importNode ::
+           (MonadIO m, IsDocument self, IsNode node) =>
+             self -> node -> Bool -> m Node
+importNode self node deep
+  = liftIO (js_importNode (toDocument self) (toNode node) deep)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.importNode Mozilla Document.importNode documentation> 
+importNode_ ::
+            (MonadIO m, IsDocument self, IsNode node) =>
+              self -> node -> Bool -> m ()
+importNode_ self node deep
+  = liftIO
+      (void (js_importNode (toDocument self) (toNode node) deep))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"adoptNode\"]($2); })" js_adoptNode
+        :: Document -> Node -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
+adoptNode ::
+          (MonadIO m, IsDocument self, IsNode node) => self -> node -> m Node
+adoptNode self node
+  = liftIO (js_adoptNode (toDocument self) (toNode node))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.adoptNode Mozilla Document.adoptNode documentation> 
+adoptNode_ ::
+           (MonadIO m, IsDocument self, IsNode node) => self -> node -> m ()
+adoptNode_ self node
+  = liftIO (void (js_adoptNode (toDocument self) (toNode node)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createAttribute\"]($2); })"
+        js_createAttribute :: Document -> JSString -> IO Attr
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
+createAttribute ::
+                (MonadIO m, IsDocument self, ToJSString localName) =>
+                  self -> localName -> m Attr
+createAttribute self localName
+  = liftIO
+      (js_createAttribute (toDocument self) (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttribute Mozilla Document.createAttribute documentation> 
+createAttribute_ ::
+                 (MonadIO m, IsDocument self, ToJSString localName) =>
+                   self -> localName -> m ()
+createAttribute_ self localName
+  = liftIO
+      (void
+         (js_createAttribute (toDocument self) (toJSString localName)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createAttributeNS\"]($2, $3); })"
+        js_createAttributeNS ::
+        Document -> Optional JSString -> JSString -> IO Attr
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
+createAttributeNS ::
+                  (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                   ToJSString qualifiedName) =>
+                    self -> Maybe namespaceURI -> qualifiedName -> m Attr
+createAttributeNS self namespaceURI qualifiedName
+  = liftIO
+      (js_createAttributeNS (toDocument self)
+         (toOptionalJSString namespaceURI)
+         (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createAttributeNS Mozilla Document.createAttributeNS documentation> 
+createAttributeNS_ ::
+                   (MonadIO m, IsDocument self, ToJSString namespaceURI,
+                    ToJSString qualifiedName) =>
+                     self -> Maybe namespaceURI -> qualifiedName -> m ()
+createAttributeNS_ self namespaceURI qualifiedName
+  = liftIO
+      (void
+         (js_createAttributeNS (toDocument self)
+            (toOptionalJSString namespaceURI)
+            (toJSString qualifiedName)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createEvent\"]($2); })"
+        js_createEvent :: Document -> JSString -> IO Event
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
+createEvent ::
+            (MonadIO m, IsDocument self, ToJSString type') =>
+              self -> type' -> m Event
+createEvent self type'
+  = liftIO (js_createEvent (toDocument self) (toJSString type'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createEvent Mozilla Document.createEvent documentation> 
+createEvent_ ::
+             (MonadIO m, IsDocument self, ToJSString type') =>
+               self -> type' -> m ()
+createEvent_ self type'
+  = liftIO
+      (void (js_createEvent (toDocument self) (toJSString type')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createRange\"](); })"
+        js_createRange :: Document -> IO Range
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
+createRange :: (MonadIO m, IsDocument self) => self -> m Range
+createRange self = liftIO (js_createRange (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createRange Mozilla Document.createRange documentation> 
+createRange_ :: (MonadIO m, IsDocument self) => self -> m ()
+createRange_ self
+  = liftIO (void (js_createRange (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"createNodeIterator\"]($2, $3,\n$4); })" js_createNodeIterator ::
+        Document ->
+          Node -> Optional Word -> Optional NodeFilter -> IO NodeIterator
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
+createNodeIterator ::
+                   (MonadIO m, IsDocument self, IsNode root) =>
+                     self -> root -> Maybe Word -> Maybe NodeFilter -> m NodeIterator
+createNodeIterator self root whatToShow filter
+  = liftIO
+      (js_createNodeIterator (toDocument self) (toNode root)
+         (maybeToOptional whatToShow)
+         (maybeToOptional filter))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNodeIterator Mozilla Document.createNodeIterator documentation> 
+createNodeIterator_ ::
+                    (MonadIO m, IsDocument self, IsNode root) =>
+                      self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
+createNodeIterator_ self root whatToShow filter
+  = liftIO
+      (void
+         (js_createNodeIterator (toDocument self) (toNode root)
+            (maybeToOptional whatToShow)
+            (maybeToOptional filter)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"createTreeWalker\"]($2, $3,\n$4); })" js_createTreeWalker ::
+        Document ->
+          Node -> Optional Word -> Optional NodeFilter -> IO TreeWalker
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
+createTreeWalker ::
+                 (MonadIO m, IsDocument self, IsNode root) =>
+                   self -> root -> Maybe Word -> Maybe NodeFilter -> m TreeWalker
+createTreeWalker self root whatToShow filter
+  = liftIO
+      (js_createTreeWalker (toDocument self) (toNode root)
+         (maybeToOptional whatToShow)
+         (maybeToOptional filter))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTreeWalker Mozilla Document.createTreeWalker documentation> 
+createTreeWalker_ ::
+                  (MonadIO m, IsDocument self, IsNode root) =>
+                    self -> root -> Maybe Word -> Maybe NodeFilter -> m ()
+createTreeWalker_ self root whatToShow filter
+  = liftIO
+      (void
+         (js_createTreeWalker (toDocument self) (toNode root)
+            (maybeToOptional whatToShow)
+            (maybeToOptional filter)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByName\"]($2); })"
+        js_getElementsByName :: Document -> JSString -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
+getElementsByName ::
+                  (MonadIO m, IsDocument self, ToJSString elementName) =>
+                    self -> elementName -> m NodeList
+getElementsByName self elementName
+  = liftIO
+      (js_getElementsByName (toDocument self) (toJSString elementName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getElementsByName Mozilla Document.getElementsByName documentation> 
+getElementsByName_ ::
+                   (MonadIO m, IsDocument self, ToJSString elementName) =>
+                     self -> elementName -> m ()
+getElementsByName_ self elementName
+  = liftIO
+      (void
+         (js_getElementsByName (toDocument self) (toJSString elementName)))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"hasFocus\"]() ? 1 : 0); })"
+        js_hasFocus :: Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
+hasFocus :: (MonadIO m, IsDocument self) => self -> m Bool
+hasFocus self = liftIO (js_hasFocus (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hasFocus Mozilla Document.hasFocus documentation> 
+hasFocus_ :: (MonadIO m, IsDocument self) => self -> m ()
+hasFocus_ self = liftIO (void (js_hasFocus (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return ($1[\"execCommand\"]($2, $3,\n$4) ? 1 : 0); })" js_execCommand ::
+        Document -> JSString -> Bool -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
+execCommand ::
+            (MonadIO m, IsDocument self, ToJSString commandId,
+             ToJSString value) =>
+              self -> commandId -> Bool -> Maybe value -> m Bool
+execCommand self commandId showUI value
+  = liftIO
+      (js_execCommand (toDocument self) (toJSString commandId) showUI
+         (toOptionalJSString value))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.execCommand Mozilla Document.execCommand documentation> 
+execCommand_ ::
+             (MonadIO m, IsDocument self, ToJSString commandId,
+              ToJSString value) =>
+               self -> commandId -> Bool -> Maybe value -> m ()
+execCommand_ self commandId showUI value
+  = liftIO
+      (void
+         (js_execCommand (toDocument self) (toJSString commandId) showUI
+            (toOptionalJSString value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"queryCommandEnabled\"]($2) ? 1 : 0); })" js_queryCommandEnabled
+        :: Document -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
+queryCommandEnabled ::
+                    (MonadIO m, IsDocument self, ToJSString commandId) =>
+                      self -> commandId -> m Bool
+queryCommandEnabled self commandId
+  = liftIO
+      (js_queryCommandEnabled (toDocument self) (toJSString commandId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandEnabled Mozilla Document.queryCommandEnabled documentation> 
+queryCommandEnabled_ ::
+                     (MonadIO m, IsDocument self, ToJSString commandId) =>
+                       self -> commandId -> m ()
+queryCommandEnabled_ self commandId
+  = liftIO
+      (void
+         (js_queryCommandEnabled (toDocument self) (toJSString commandId)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"queryCommandIndeterm\"]($2) ? 1 : 0); })"
+        js_queryCommandIndeterm :: Document -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
+queryCommandIndeterm ::
+                     (MonadIO m, IsDocument self, ToJSString commandId) =>
+                       self -> commandId -> m Bool
+queryCommandIndeterm self commandId
+  = liftIO
+      (js_queryCommandIndeterm (toDocument self) (toJSString commandId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandIndeterm Mozilla Document.queryCommandIndeterm documentation> 
+queryCommandIndeterm_ ::
+                      (MonadIO m, IsDocument self, ToJSString commandId) =>
+                        self -> commandId -> m ()
+queryCommandIndeterm_ self commandId
+  = liftIO
+      (void
+         (js_queryCommandIndeterm (toDocument self) (toJSString commandId)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"queryCommandState\"]($2) ? 1 : 0); })" js_queryCommandState ::
+        Document -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
+queryCommandState ::
+                  (MonadIO m, IsDocument self, ToJSString commandId) =>
+                    self -> commandId -> m Bool
+queryCommandState self commandId
+  = liftIO
+      (js_queryCommandState (toDocument self) (toJSString commandId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandState Mozilla Document.queryCommandState documentation> 
+queryCommandState_ ::
+                   (MonadIO m, IsDocument self, ToJSString commandId) =>
+                     self -> commandId -> m ()
+queryCommandState_ self commandId
+  = liftIO
+      (void
+         (js_queryCommandState (toDocument self) (toJSString commandId)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"queryCommandSupported\"]($2) ? 1 : 0); })"
+        js_queryCommandSupported :: Document -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
+queryCommandSupported ::
+                      (MonadIO m, IsDocument self, ToJSString commandId) =>
+                        self -> commandId -> m Bool
+queryCommandSupported self commandId
+  = liftIO
+      (js_queryCommandSupported (toDocument self) (toJSString commandId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandSupported Mozilla Document.queryCommandSupported documentation> 
+queryCommandSupported_ ::
+                       (MonadIO m, IsDocument self, ToJSString commandId) =>
+                         self -> commandId -> m ()
+queryCommandSupported_ self commandId
+  = liftIO
+      (void
+         (js_queryCommandSupported (toDocument self)
+            (toJSString commandId)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"queryCommandValue\"]($2); })"
+        js_queryCommandValue :: Document -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
+queryCommandValue ::
+                  (MonadIO m, IsDocument self, ToJSString commandId,
+                   FromJSString result) =>
+                    self -> commandId -> m result
+queryCommandValue self commandId
+  = liftIO
+      (fromJSString <$>
+         (js_queryCommandValue (toDocument self) (toJSString commandId)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.queryCommandValue Mozilla Document.queryCommandValue documentation> 
+queryCommandValue_ ::
+                   (MonadIO m, IsDocument self, ToJSString commandId) =>
+                     self -> commandId -> m ()
+queryCommandValue_ self commandId
+  = liftIO
+      (void
+         (js_queryCommandValue (toDocument self) (toJSString commandId)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSelection\"](); })"
+        js_getSelection :: Document -> IO (Nullable Selection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelection ::
+             (MonadIO m, IsDocument self) => self -> m (Maybe Selection)
+getSelection self
+  = liftIO (nullableToMaybe <$> (js_getSelection (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelection_ :: (MonadIO m, IsDocument self) => self -> m ()
+getSelection_ self
+  = liftIO (void (js_getSelection (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelectionUnsafe ::
+                   (MonadIO m, IsDocument self, HasCallStack) => self -> m Selection
+getSelectionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSelection (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getSelection Mozilla Document.getSelection documentation> 
+getSelectionUnchecked ::
+                      (MonadIO m, IsDocument self) => self -> m Selection
+getSelectionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getSelection (toDocument self)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createExpression\"]($2, $3); })"
+        js_createExpression ::
+        Document ->
+          Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
+createExpression ::
+                 (MonadIO m, IsDocument self, ToJSString expression) =>
+                   self ->
+                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
+createExpression self expression resolver
+  = liftIO
+      (js_createExpression (toDocument self)
+         (toOptionalJSString expression)
+         (maybeToOptional resolver))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createExpression Mozilla Document.createExpression documentation> 
+createExpression_ ::
+                  (MonadIO m, IsDocument self, ToJSString expression) =>
+                    self -> Maybe expression -> Maybe XPathNSResolver -> m ()
+createExpression_ self expression resolver
+  = liftIO
+      (void
+         (js_createExpression (toDocument self)
+            (toOptionalJSString expression)
+            (maybeToOptional resolver)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createNSResolver\"]($2); })"
+        js_createNSResolver ::
+        Document -> Optional Node -> IO XPathNSResolver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
+createNSResolver ::
+                 (MonadIO m, IsDocument self, IsNode nodeResolver) =>
+                   self -> Maybe nodeResolver -> m XPathNSResolver
+createNSResolver self nodeResolver
+  = liftIO
+      (js_createNSResolver (toDocument self)
+         (maybeToOptional (fmap toNode nodeResolver)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createNSResolver Mozilla Document.createNSResolver documentation> 
+createNSResolver_ ::
+                  (MonadIO m, IsDocument self, IsNode nodeResolver) =>
+                    self -> Maybe nodeResolver -> m ()
+createNSResolver_ self nodeResolver
+  = liftIO
+      (void
+         (js_createNSResolver (toDocument self)
+            (maybeToOptional (fmap toNode nodeResolver))))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"evaluate\"]($2, $3, $4, $5,\n$6); })" js_evaluate ::
+        Document ->
+          Optional JSString ->
+            Optional Node ->
+              Optional XPathNSResolver ->
+                Optional Word -> Optional XPathResult -> IO XPathResult
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
+evaluate ::
+         (MonadIO m, IsDocument self, ToJSString expression,
+          IsNode contextNode) =>
+           self ->
+             Maybe expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Maybe Word -> Maybe XPathResult -> m XPathResult
+evaluate self expression contextNode resolver type' inResult
+  = liftIO
+      (js_evaluate (toDocument self) (toOptionalJSString expression)
+         (maybeToOptional (fmap toNode contextNode))
+         (maybeToOptional resolver)
+         (maybeToOptional type')
+         (maybeToOptional inResult))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.evaluate Mozilla Document.evaluate documentation> 
+evaluate_ ::
+          (MonadIO m, IsDocument self, ToJSString expression,
+           IsNode contextNode) =>
+            self ->
+              Maybe expression ->
+                Maybe contextNode ->
+                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
+evaluate_ self expression contextNode resolver type' inResult
+  = liftIO
+      (void
+         (js_evaluate (toDocument self) (toOptionalJSString expression)
+            (maybeToOptional (fmap toNode contextNode))
+            (maybeToOptional resolver)
+            (maybeToOptional type')
+            (maybeToOptional inResult)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullscreen\"](); })"
+        js_webkitExitFullscreen :: Document -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitExitFullscreen Mozilla Document.webkitExitFullscreen documentation> 
+webkitExitFullscreen ::
+                     (MonadIO m, IsDocument self) => self -> m ()
+webkitExitFullscreen self
+  = liftIO (js_webkitExitFullscreen (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitCancelFullScreen\"](); })"
+        js_webkitCancelFullScreen :: Document -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCancelFullScreen Mozilla Document.webkitCancelFullScreen documentation> 
+webkitCancelFullScreen ::
+                       (MonadIO m, IsDocument self) => self -> m ()
+webkitCancelFullScreen self
+  = liftIO (js_webkitCancelFullScreen (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"exitPointerLock\"](); })"
+        js_exitPointerLock :: Document -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.exitPointerLock Mozilla Document.exitPointerLock documentation> 
+exitPointerLock :: (MonadIO m, IsDocument self) => self -> m ()
+exitPointerLock self
+  = liftIO (js_exitPointerLock (toDocument self))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getOverrideStyle\"]($2, $3); })"
+        js_getOverrideStyle ::
+        Document ->
+          Optional Element -> Optional JSString -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
+getOverrideStyle ::
+                 (MonadIO m, IsDocument self, IsElement element,
+                  ToJSString pseudoElement) =>
+                   self ->
+                     Maybe element -> Maybe pseudoElement -> m CSSStyleDeclaration
+getOverrideStyle self element pseudoElement
+  = liftIO
+      (js_getOverrideStyle (toDocument self)
+         (maybeToOptional (fmap toElement element))
+         (toOptionalJSString pseudoElement))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getOverrideStyle Mozilla Document.getOverrideStyle documentation> 
+getOverrideStyle_ ::
+                  (MonadIO m, IsDocument self, IsElement element,
+                   ToJSString pseudoElement) =>
+                    self -> Maybe element -> Maybe pseudoElement -> m ()
+getOverrideStyle_ self element pseudoElement
+  = liftIO
+      (void
+         (js_getOverrideStyle (toDocument self)
+            (maybeToOptional (fmap toElement element))
+            (toOptionalJSString pseudoElement)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"caretRangeFromPoint\"]($2,\n$3); })" js_caretRangeFromPoint ::
+        Document -> Optional Int -> Optional Int -> IO Range
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
+caretRangeFromPoint ::
+                    (MonadIO m, IsDocument self) =>
+                      self -> Maybe Int -> Maybe Int -> m Range
+caretRangeFromPoint self x y
+  = liftIO
+      (js_caretRangeFromPoint (toDocument self) (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.caretRangeFromPoint Mozilla Document.caretRangeFromPoint documentation> 
+caretRangeFromPoint_ ::
+                     (MonadIO m, IsDocument self) =>
+                       self -> Maybe Int -> Maybe Int -> m ()
+caretRangeFromPoint_ self x y
+  = liftIO
+      (void
+         (js_caretRangeFromPoint (toDocument self) (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"getCSSCanvasContext\"]($2,\n$3, $4, $5); })"
+        js_getCSSCanvasContext ::
+        Document ->
+          JSString -> JSString -> Int -> Int -> IO RenderingContext
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
+getCSSCanvasContext ::
+                    (MonadIO m, IsDocument self, ToJSString contextId,
+                     ToJSString name) =>
+                      self -> contextId -> name -> Int -> Int -> m RenderingContext
+getCSSCanvasContext self contextId name width height
+  = liftIO
+      (js_getCSSCanvasContext (toDocument self) (toJSString contextId)
+         (toJSString name)
+         width
+         height)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.getCSSCanvasContext Mozilla Document.getCSSCanvasContext documentation> 
+getCSSCanvasContext_ ::
+                     (MonadIO m, IsDocument self, ToJSString contextId,
+                      ToJSString name) =>
+                       self -> contextId -> name -> Int -> Int -> m ()
+getCSSCanvasContext_ self contextId name width height
+  = liftIO
+      (void
+         (js_getCSSCanvasContext (toDocument self) (toJSString contextId)
+            (toJSString name)
+            width
+            height))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitGetNamedFlows\"](); })"
+        js_webkitGetNamedFlows :: Document -> IO DOMNamedFlowCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
+webkitGetNamedFlows ::
+                    (MonadIO m, IsDocument self) => self -> m DOMNamedFlowCollection
+webkitGetNamedFlows self
+  = liftIO (js_webkitGetNamedFlows (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitGetNamedFlows Mozilla Document.webkitGetNamedFlows documentation> 
+webkitGetNamedFlows_ ::
+                     (MonadIO m, IsDocument self) => self -> m ()
+webkitGetNamedFlows_ self
+  = liftIO (void (js_webkitGetNamedFlows (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"createTouch\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12); })"
+        js_createTouch ::
+        Document ->
+          Optional Window ->
+            Optional EventTarget ->
+              Optional Int ->
+                Optional Int ->
+                  Optional Int ->
+                    Optional Int ->
+                      Optional Int ->
+                        Optional Int ->
+                          Optional Int -> Optional Float -> Optional Float -> IO Touch
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
+createTouch ::
+            (MonadIO m, IsDocument self, IsEventTarget target) =>
+              self ->
+                Maybe Window ->
+                  Maybe target ->
+                    Maybe Int ->
+                      Maybe Int ->
+                        Maybe Int ->
+                          Maybe Int ->
+                            Maybe Int ->
+                              Maybe Int -> Maybe Int -> Maybe Float -> Maybe Float -> m Touch
+createTouch self window target identifier pageX pageY screenX
+  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
+  = liftIO
+      (js_createTouch (toDocument self) (maybeToOptional window)
+         (maybeToOptional (fmap toEventTarget target))
+         (maybeToOptional identifier)
+         (maybeToOptional pageX)
+         (maybeToOptional pageY)
+         (maybeToOptional screenX)
+         (maybeToOptional screenY)
+         (maybeToOptional webkitRadiusX)
+         (maybeToOptional webkitRadiusY)
+         (maybeToOptional webkitRotationAngle)
+         (maybeToOptional webkitForce))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouch Mozilla Document.createTouch documentation> 
+createTouch_ ::
+             (MonadIO m, IsDocument self, IsEventTarget target) =>
+               self ->
+                 Maybe Window ->
+                   Maybe target ->
+                     Maybe Int ->
+                       Maybe Int ->
+                         Maybe Int ->
+                           Maybe Int ->
+                             Maybe Int ->
+                               Maybe Int -> Maybe Int -> Maybe Float -> Maybe Float -> m ()
+createTouch_ self window target identifier pageX pageY screenX
+  screenY webkitRadiusX webkitRadiusY webkitRotationAngle webkitForce
+  = liftIO
+      (void
+         (js_createTouch (toDocument self) (maybeToOptional window)
+            (maybeToOptional (fmap toEventTarget target))
+            (maybeToOptional identifier)
+            (maybeToOptional pageX)
+            (maybeToOptional pageY)
+            (maybeToOptional screenX)
+            (maybeToOptional screenY)
+            (maybeToOptional webkitRadiusX)
+            (maybeToOptional webkitRadiusY)
+            (maybeToOptional webkitRotationAngle)
+            (maybeToOptional webkitForce)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createTouchList\"]($2); })"
+        js_createTouchList :: Document -> JSVal -> IO TouchList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
+createTouchList ::
+                (MonadIO m, IsDocument self) => self -> [Touch] -> m TouchList
+createTouchList self touches
+  = liftIO
+      (toJSVal touches >>=
+         \ touches' -> js_createTouchList (toDocument self) touches')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.createTouchList Mozilla Document.createTouchList documentation> 
+createTouchList_ ::
+                 (MonadIO m, IsDocument self) => self -> [Touch] -> m ()
+createTouchList_ self touches
+  = liftIO
+      (void
+         (toJSVal touches >>=
+            \ touches' -> js_createTouchList (toDocument self) touches'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timeline\"]; })" js_getTimeline
+        :: Document -> IO DocumentTimeline
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.timeline Mozilla Document.timeline documentation> 
+getTimeline ::
+            (MonadIO m, IsDocument self) => self -> m DocumentTimeline
+getTimeline self = liftIO (js_getTimeline (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"implementation\"]; })"
+        js_getImplementation :: Document -> IO DOMImplementation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.implementation Mozilla Document.implementation documentation> 
+getImplementation ::
+                  (MonadIO m, IsDocument self) => self -> m DOMImplementation
+getImplementation self
+  = liftIO (js_getImplementation (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"URL\"]; })" js_getURL ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.URL Mozilla Document.URL documentation> 
+getURL ::
+       (MonadIO m, IsDocument self, FromJSString result) =>
+         self -> m result
+getURL self
+  = liftIO (fromJSString <$> (js_getURL (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
+        js_getDocumentURI :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentURI Mozilla Document.documentURI documentation> 
+getDocumentURI ::
+               (MonadIO m, IsDocument self, FromJSString result) =>
+                 self -> m result
+getDocumentURI self
+  = liftIO (fromJSString <$> (js_getDocumentURI (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.origin Mozilla Document.origin documentation> 
+getOrigin ::
+          (MonadIO m, IsDocument self, FromJSString result) =>
+            self -> m result
+getOrigin self
+  = liftIO (fromJSString <$> (js_getOrigin (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"compatMode\"]; })"
+        js_getCompatMode :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.compatMode Mozilla Document.compatMode documentation> 
+getCompatMode ::
+              (MonadIO m, IsDocument self, FromJSString result) =>
+                self -> m result
+getCompatMode self
+  = liftIO (fromJSString <$> (js_getCompatMode (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"characterSet\"]; })"
+        js_getCharacterSet :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.characterSet Mozilla Document.characterSet documentation> 
+getCharacterSet ::
+                (MonadIO m, IsDocument self, FromJSString result) =>
+                  self -> m result
+getCharacterSet self
+  = liftIO (fromJSString <$> (js_getCharacterSet (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.charset Mozilla Document.charset documentation> 
+getCharset ::
+           (MonadIO m, IsDocument self, FromJSString result) =>
+             self -> m result
+getCharset self
+  = liftIO (fromJSString <$> (js_getCharset (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"inputEncoding\"]; })"
+        js_getInputEncoding :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.inputEncoding Mozilla Document.inputEncoding documentation> 
+getInputEncoding ::
+                 (MonadIO m, IsDocument self, FromJSString result) =>
+                   self -> m result
+getInputEncoding self
+  = liftIO (fromJSString <$> (js_getInputEncoding (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentType\"]; })"
+        js_getContentType :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.contentType Mozilla Document.contentType documentation> 
+getContentType ::
+               (MonadIO m, IsDocument self, FromJSString result) =>
+                 self -> m result
+getContentType self
+  = liftIO (fromJSString <$> (js_getContentType (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"doctype\"]; })" js_getDoctype ::
+        Document -> IO (Nullable DocumentType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
+getDoctype ::
+           (MonadIO m, IsDocument self) => self -> m (Maybe DocumentType)
+getDoctype self
+  = liftIO (nullableToMaybe <$> (js_getDoctype (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
+getDoctypeUnsafe ::
+                 (MonadIO m, IsDocument self, HasCallStack) =>
+                   self -> m DocumentType
+getDoctypeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getDoctype (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.doctype Mozilla Document.doctype documentation> 
+getDoctypeUnchecked ::
+                    (MonadIO m, IsDocument self) => self -> m DocumentType
+getDoctypeUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getDoctype (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"documentElement\"]; })"
+        js_getDocumentElement :: Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
+getDocumentElement ::
+                   (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getDocumentElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getDocumentElement (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
+getDocumentElementUnsafe ::
+                         (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
+getDocumentElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getDocumentElement (toDocument self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.documentElement Mozilla Document.documentElement documentation> 
+getDocumentElementUnchecked ::
+                            (MonadIO m, IsDocument self) => self -> m Element
+getDocumentElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getDocumentElement (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
+        :: Document -> IO (Nullable Location)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+getLocation ::
+            (MonadIO m, IsDocument self) => self -> m (Maybe Location)
+getLocation self
+  = liftIO (nullableToMaybe <$> (js_getLocation (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+getLocationUnsafe ::
+                  (MonadIO m, IsDocument self, HasCallStack) => self -> m Location
+getLocationUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getLocation (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.location Mozilla Document.location documentation> 
+getLocationUnchecked ::
+                     (MonadIO m, IsDocument self) => self -> m Location
+getLocationUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getLocation (toDocument self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"domain\"] = $2; })" js_setDomain
+        :: Document -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
+setDomain ::
+          (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDomain self val
+  = liftIO (js_setDomain (toDocument self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domain\"]; })" js_getDomain ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.domain Mozilla Document.domain documentation> 
+getDomain ::
+          (MonadIO m, IsDocument self, FromJSString result) =>
+            self -> m result
+getDomain self
+  = liftIO (fromJSString <$> (js_getDomain (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
+        :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.referrer Mozilla Document.referrer documentation> 
+getReferrer ::
+            (MonadIO m, IsDocument self, FromJSString result) =>
+              self -> m result
+getReferrer self
+  = liftIO (fromJSString <$> (js_getReferrer (toDocument self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"cookie\"] = $2; })" js_setCookie
+        :: Document -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
+setCookie ::
+          (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
+setCookie self val
+  = liftIO (js_setCookie (toDocument self) (toJSString val))
+ 
+foreign import javascript safe "(($1) => { return $1[\"cookie\"]; })" js_getCookie ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.cookie Mozilla Document.cookie documentation> 
+getCookie ::
+          (MonadIO m, IsDocument self, FromJSString result) =>
+            self -> m result
+getCookie self
+  = liftIO (fromJSString <$> (js_getCookie (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
+        js_getLastModified :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.lastModified Mozilla Document.lastModified documentation> 
+getLastModified ::
+                (MonadIO m, IsDocument self, FromJSString result) =>
+                  self -> m result
+getLastModified self
+  = liftIO (fromJSString <$> (js_getLastModified (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: Document -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.readyState Mozilla Document.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsDocument self) => self -> m DocumentReadyState
+getReadyState self
+  = liftIO
+      ((js_getReadyState (toDocument self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
+        :: Document -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
+setTitle ::
+         (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
+setTitle self val
+  = liftIO (js_setTitle (toDocument self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.title Mozilla Document.title documentation> 
+getTitle ::
+         (MonadIO m, IsDocument self, FromJSString result) =>
+           self -> m result
+getTitle self
+  = liftIO (fromJSString <$> (js_getTitle (toDocument self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dir\"] = $2; })" js_setDir ::
+        Document -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
+setDir ::
+       (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDir self val
+  = liftIO (js_setDir (toDocument self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })" js_getDir ::
+        Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.dir Mozilla Document.dir documentation> 
+getDir ::
+       (MonadIO m, IsDocument self, FromJSString result) =>
+         self -> m result
+getDir self
+  = liftIO (fromJSString <$> (js_getDir (toDocument self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"body\"] = $2; })" js_setBody ::
+        Document -> Optional HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+setBody ::
+        (MonadIO m, IsDocument self, IsHTMLElement val) =>
+          self -> Maybe val -> m ()
+setBody self val
+  = liftIO
+      (js_setBody (toDocument self)
+         (maybeToOptional (fmap toHTMLElement val)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })" js_getBody ::
+        Document -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+getBody ::
+        (MonadIO m, IsDocument self) => self -> m (Maybe HTMLElement)
+getBody self
+  = liftIO (nullableToMaybe <$> (js_getBody (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+getBodyUnsafe ::
+              (MonadIO m, IsDocument self, HasCallStack) => self -> m HTMLElement
+getBodyUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBody (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.body Mozilla Document.body documentation> 
+getBodyUnchecked ::
+                 (MonadIO m, IsDocument self) => self -> m HTMLElement
+getBodyUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getBody (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"head\"]; })" js_getHead ::
+        Document -> IO (Nullable HTMLHeadElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
+getHead ::
+        (MonadIO m, IsDocument self) => self -> m (Maybe HTMLHeadElement)
+getHead self
+  = liftIO (nullableToMaybe <$> (js_getHead (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
+getHeadUnsafe ::
+              (MonadIO m, IsDocument self, HasCallStack) =>
+                self -> m HTMLHeadElement
+getHeadUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getHead (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.head Mozilla Document.head documentation> 
+getHeadUnchecked ::
+                 (MonadIO m, IsDocument self) => self -> m HTMLHeadElement
+getHeadUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getHead (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"images\"]; })" js_getImages ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.images Mozilla Document.images documentation> 
+getImages ::
+          (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getImages self = liftIO (js_getImages (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"embeds\"]; })" js_getEmbeds ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.embeds Mozilla Document.embeds documentation> 
+getEmbeds ::
+          (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getEmbeds self = liftIO (js_getEmbeds (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })" js_getPlugins ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.plugins Mozilla Document.plugins documentation> 
+getPlugins ::
+           (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getPlugins self = liftIO (js_getPlugins (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"links\"]; })" js_getLinks ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.links Mozilla Document.links documentation> 
+getLinks ::
+         (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getLinks self = liftIO (js_getLinks (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"forms\"]; })" js_getForms ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.forms Mozilla Document.forms documentation> 
+getForms ::
+         (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getForms self = liftIO (js_getForms (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scripts\"]; })" js_getScripts ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scripts Mozilla Document.scripts documentation> 
+getScripts ::
+           (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getScripts self = liftIO (js_getScripts (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentScript\"]; })"
+        js_getCurrentScript :: Document -> IO (Nullable HTMLScriptElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
+getCurrentScript ::
+                 (MonadIO m, IsDocument self) => self -> m (Maybe HTMLScriptElement)
+getCurrentScript self
+  = liftIO
+      (nullableToMaybe <$> (js_getCurrentScript (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
+getCurrentScriptUnsafe ::
+                       (MonadIO m, IsDocument self, HasCallStack) =>
+                         self -> m HTMLScriptElement
+getCurrentScriptUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCurrentScript (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.currentScript Mozilla Document.currentScript documentation> 
+getCurrentScriptUnchecked ::
+                          (MonadIO m, IsDocument self) => self -> m HTMLScriptElement
+getCurrentScriptUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getCurrentScript (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultView\"]; })"
+        js_getDefaultView :: Document -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
+getDefaultView ::
+               (MonadIO m, IsDocument self) => self -> m (Maybe Window)
+getDefaultView self
+  = liftIO
+      (nullableToMaybe <$> (js_getDefaultView (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
+getDefaultViewUnsafe ::
+                     (MonadIO m, IsDocument self, HasCallStack) => self -> m Window
+getDefaultViewUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getDefaultView (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.defaultView Mozilla Document.defaultView documentation> 
+getDefaultViewUnchecked ::
+                        (MonadIO m, IsDocument self) => self -> m Window
+getDefaultViewUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getDefaultView (toDocument self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"designMode\"] = $2; })"
+        js_setDesignMode :: Document -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
+setDesignMode ::
+              (MonadIO m, IsDocument self, ToJSString val) => self -> val -> m ()
+setDesignMode self val
+  = liftIO (js_setDesignMode (toDocument self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"designMode\"]; })"
+        js_getDesignMode :: Document -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.designMode Mozilla Document.designMode documentation> 
+getDesignMode ::
+              (MonadIO m, IsDocument self, FromJSString result) =>
+                self -> m result
+getDesignMode self
+  = liftIO (fromJSString <$> (js_getDesignMode (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onreadystatechange Mozilla Document.onreadystatechange documentation> 
+readyStateChange ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+readyStateChange
+  = unsafeEventNameAsync (toJSString "readystatechange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"styleSheets\"]; })"
+        js_getStyleSheets :: Document -> IO StyleSheetList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.styleSheets Mozilla Document.styleSheets documentation> 
+getStyleSheets ::
+               (MonadIO m, IsDocument self) => self -> m StyleSheetList
+getStyleSheets self = liftIO (js_getStyleSheets (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollingElement\"]; })"
+        js_getScrollingElement :: Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
+getScrollingElement ::
+                    (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getScrollingElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getScrollingElement (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
+getScrollingElementUnsafe ::
+                          (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
+getScrollingElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getScrollingElement (toDocument self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.scrollingElement Mozilla Document.scrollingElement documentation> 
+getScrollingElementUnchecked ::
+                             (MonadIO m, IsDocument self) => self -> m Element
+getScrollingElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getScrollingElement (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitFullscreenEnabled\"] ? 1 : 0); })"
+        js_getWebkitFullscreenEnabled :: Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenEnabled Mozilla Document.webkitFullscreenEnabled documentation> 
+getWebkitFullscreenEnabled ::
+                           (MonadIO m, IsDocument self) => self -> m Bool
+getWebkitFullscreenEnabled self
+  = liftIO (js_getWebkitFullscreenEnabled (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitFullscreenElement\"]; })"
+        js_getWebkitFullscreenElement :: Document -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
+getWebkitFullscreenElement ::
+                           (MonadIO m, IsDocument self) => self -> m (Maybe Element)
+getWebkitFullscreenElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getWebkitFullscreenElement (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
+getWebkitFullscreenElementUnsafe ::
+                                 (MonadIO m, IsDocument self, HasCallStack) => self -> m Element
+getWebkitFullscreenElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getWebkitFullscreenElement (toDocument self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullscreenElement Mozilla Document.webkitFullscreenElement documentation> 
+getWebkitFullscreenElementUnchecked ::
+                                    (MonadIO m, IsDocument self) => self -> m Element
+getWebkitFullscreenElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getWebkitFullscreenElement (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitIsFullScreen\"] ? 1 : 0); })" js_getWebkitIsFullScreen ::
+        Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitIsFullScreen Mozilla Document.webkitIsFullScreen documentation> 
+getWebkitIsFullScreen ::
+                      (MonadIO m, IsDocument self) => self -> m Bool
+getWebkitIsFullScreen self
+  = liftIO (js_getWebkitIsFullScreen (toDocument self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitFullScreenKeyboardInputAllowed\"] ? 1 : 0); })"
+        js_getWebkitFullScreenKeyboardInputAllowed :: Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitFullScreenKeyboardInputAllowed Mozilla Document.webkitFullScreenKeyboardInputAllowed documentation> 
+getWebkitFullScreenKeyboardInputAllowed ::
+                                        (MonadIO m, IsDocument self) => self -> m Bool
+getWebkitFullScreenKeyboardInputAllowed self
+  = liftIO
+      (js_getWebkitFullScreenKeyboardInputAllowed (toDocument self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitCurrentFullScreenElement\"]; })"
+        js_getWebkitCurrentFullScreenElement :: Document -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.webkitCurrentFullScreenElement Mozilla Document.webkitCurrentFullScreenElement documentation> 
+getWebkitCurrentFullScreenElement ::
+                                  (MonadIO m, IsDocument self) => self -> m Element
+getWebkitCurrentFullScreenElement self
+  = liftIO (js_getWebkitCurrentFullScreenElement (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenchange Mozilla Document.onwebkitfullscreenchange documentation> 
+webKitFullscreenChange ::
+                       (IsDocument self, IsEventTarget self) => EventName self Event
+webKitFullscreenChange
+  = unsafeEventName (toJSString "webkitfullscreenchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onwebkitfullscreenerror Mozilla Document.onwebkitfullscreenerror documentation> 
+webKitFullscreenError ::
+                      (IsDocument self, IsEventTarget self) => EventName self Event
+webKitFullscreenError
+  = unsafeEventName (toJSString "webkitfullscreenerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockchange Mozilla Document.onpointerlockchange documentation> 
+pointerlockchange ::
+                  (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockchange
+  = unsafeEventName (toJSString "pointerlockchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onpointerlockerror Mozilla Document.onpointerlockerror documentation> 
+pointerlockerror ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+pointerlockerror = unsafeEventName (toJSString "pointerlockerror")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fonts\"]; })" js_getFonts ::
+        Document -> IO FontFaceSet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.fonts Mozilla Document.fonts documentation> 
+getFonts :: (MonadIO m, IsDocument self) => self -> m FontFaceSet
+getFonts self = liftIO (js_getFonts (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"hidden\"] ? 1 : 0); })"
+        js_getHidden :: Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.hidden Mozilla Document.hidden documentation> 
+getHidden :: (MonadIO m, IsDocument self) => self -> m Bool
+getHidden self = liftIO (js_getHidden (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"visibilityState\"]; })"
+        js_getVisibilityState :: Document -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.visibilityState Mozilla Document.visibilityState documentation> 
+getVisibilityState ::
+                   (MonadIO m, IsDocument self) => self -> m VisibilityState
+getVisibilityState self
+  = liftIO
+      ((js_getVisibilityState (toDocument self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onvisibilitychange Mozilla Document.onvisibilitychange documentation> 
+visibilitychange ::
+                 (IsDocument self, IsEventTarget self) => EventName self Event
+visibilitychange = unsafeEventName (toJSString "visibilitychange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"applets\"]; })" js_getApplets ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.applets Mozilla Document.applets documentation> 
+getApplets ::
+           (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getApplets self = liftIO (js_getApplets (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"anchors\"]; })" js_getAnchors ::
+        Document -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.anchors Mozilla Document.anchors documentation> 
+getAnchors ::
+           (MonadIO m, IsDocument self) => self -> m HTMLCollection
+getAnchors self = liftIO (js_getAnchors (toDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preferredStylesheetSet\"]; })"
+        js_getPreferredStylesheetSet :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
+getPreferredStylesheetSet ::
+                          (MonadIO m, IsDocument self, FromJSString result) =>
+                            self -> m (Maybe result)
+getPreferredStylesheetSet self
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getPreferredStylesheetSet (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
+getPreferredStylesheetSetUnsafe ::
+                                (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
+                                  self -> m result
+getPreferredStylesheetSetUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getPreferredStylesheetSet (toDocument self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.preferredStylesheetSet Mozilla Document.preferredStylesheetSet documentation> 
+getPreferredStylesheetSetUnchecked ::
+                                   (MonadIO m, IsDocument self, FromJSString result) =>
+                                     self -> m result
+getPreferredStylesheetSetUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getPreferredStylesheetSet (toDocument self)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"selectedStylesheetSet\"] = $2; })" js_setSelectedStylesheetSet
+        :: Document -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+setSelectedStylesheetSet ::
+                         (MonadIO m, IsDocument self, ToJSString val) =>
+                           self -> Maybe val -> m ()
+setSelectedStylesheetSet self val
+  = liftIO
+      (js_setSelectedStylesheetSet (toDocument self)
+         (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectedStylesheetSet\"]; })"
+        js_getSelectedStylesheetSet :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+getSelectedStylesheetSet ::
+                         (MonadIO m, IsDocument self, FromJSString result) =>
+                           self -> m (Maybe result)
+getSelectedStylesheetSet self
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getSelectedStylesheetSet (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+getSelectedStylesheetSetUnsafe ::
+                               (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
+                                 self -> m result
+getSelectedStylesheetSetUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getSelectedStylesheetSet (toDocument self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.selectedStylesheetSet Mozilla Document.selectedStylesheetSet documentation> 
+getSelectedStylesheetSetUnchecked ::
+                                  (MonadIO m, IsDocument self, FromJSString result) =>
+                                    self -> m result
+getSelectedStylesheetSetUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getSelectedStylesheetSet (toDocument self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"xmlEncoding\"]; })"
+        js_getXmlEncoding :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
+getXmlEncoding ::
+               (MonadIO m, IsDocument self, FromJSString result) =>
+                 self -> m (Maybe result)
+getXmlEncoding self
+  = liftIO
+      (fromMaybeJSString <$> (js_getXmlEncoding (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
+getXmlEncodingUnsafe ::
+                     (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
+                       self -> m result
+getXmlEncodingUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getXmlEncoding (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlEncoding Mozilla Document.xmlEncoding documentation> 
+getXmlEncodingUnchecked ::
+                        (MonadIO m, IsDocument self, FromJSString result) =>
+                          self -> m result
+getXmlEncodingUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getXmlEncoding (toDocument self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"xmlVersion\"] = $2; })"
+        js_setXmlVersion :: Document -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+setXmlVersion ::
+              (MonadIO m, IsDocument self, ToJSString val) =>
+                self -> Maybe val -> m ()
+setXmlVersion self val
+  = liftIO
+      (js_setXmlVersion (toDocument self) (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"xmlVersion\"]; })"
+        js_getXmlVersion :: Document -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+getXmlVersion ::
+              (MonadIO m, IsDocument self, FromJSString result) =>
+                self -> m (Maybe result)
+getXmlVersion self
+  = liftIO
+      (fromMaybeJSString <$> (js_getXmlVersion (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+getXmlVersionUnsafe ::
+                    (MonadIO m, IsDocument self, HasCallStack, FromJSString result) =>
+                      self -> m result
+getXmlVersionUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getXmlVersion (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlVersion Mozilla Document.xmlVersion documentation> 
+getXmlVersionUnchecked ::
+                       (MonadIO m, IsDocument self, FromJSString result) =>
+                         self -> m result
+getXmlVersionUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getXmlVersion (toDocument self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"xmlStandalone\"] = $2; })"
+        js_setXmlStandalone :: Document -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
+setXmlStandalone ::
+                 (MonadIO m, IsDocument self) => self -> Bool -> m ()
+setXmlStandalone self val
+  = liftIO (js_setXmlStandalone (toDocument self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"xmlStandalone\"] ? 1 : 0); })"
+        js_getXmlStandalone :: Document -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.xmlStandalone Mozilla Document.xmlStandalone documentation> 
+getXmlStandalone :: (MonadIO m, IsDocument self) => self -> m Bool
+getXmlStandalone self
+  = liftIO (js_getXmlStandalone (toDocument self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectstart Mozilla Document.onselectstart documentation> 
+selectStart ::
+            (IsDocument self, IsEventTarget self) => EventName self Event
+selectStart = unsafeEventName (toJSString "selectstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.onselectionchange Mozilla Document.onselectionchange documentation> 
+selectionchange ::
+                (IsDocument self, IsEventTarget self) =>
+                  EventName self onselectionchange
+selectionchange = unsafeEventName (toJSString "selectionchange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rootElement\"]; })"
+        js_getRootElement :: Document -> IO (Nullable SVGSVGElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
+getRootElement ::
+               (MonadIO m, IsDocument self) => self -> m (Maybe SVGSVGElement)
+getRootElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getRootElement (toDocument self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
+getRootElementUnsafe ::
+                     (MonadIO m, IsDocument self, HasCallStack) =>
+                       self -> m SVGSVGElement
+getRootElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRootElement (toDocument self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Document.rootElement Mozilla Document.rootElement documentation> 
+getRootElementUnchecked ::
+                        (MonadIO m, IsDocument self) => self -> m SVGSVGElement
+getRootElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getRootElement (toDocument self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentAndElementEventHandlers.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentAndElementEventHandlers
+       (copy, cut, paste, beforeCopy, beforeCut, beforeinput, beforePaste,
+        DocumentAndElementEventHandlers(..),
+        gTypeDocumentAndElementEventHandlers,
+        IsDocumentAndElementEventHandlers,
+        toDocumentAndElementEventHandlers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncopy Mozilla DocumentAndElementEventHandlers.oncopy documentation> 
+copy ::
+     (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+       EventName self ClipboardEvent
+copy = unsafeEventName (toJSString "copy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.oncut Mozilla DocumentAndElementEventHandlers.oncut documentation> 
+cut ::
+    (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+      EventName self ClipboardEvent
+cut = unsafeEventName (toJSString "cut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onpaste Mozilla DocumentAndElementEventHandlers.onpaste documentation> 
+paste ::
+      (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+        EventName self ClipboardEvent
+paste = unsafeEventName (toJSString "paste")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforecopy Mozilla DocumentAndElementEventHandlers.onbeforecopy documentation> 
+beforeCopy ::
+           (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+             EventName self ClipboardEvent
+beforeCopy = unsafeEventName (toJSString "beforecopy")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforecut Mozilla DocumentAndElementEventHandlers.onbeforecut documentation> 
+beforeCut ::
+          (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+            EventName self ClipboardEvent
+beforeCut = unsafeEventName (toJSString "beforecut")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforeinput Mozilla DocumentAndElementEventHandlers.onbeforeinput documentation> 
+beforeinput ::
+            (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+              EventName self onbeforeinput
+beforeinput = unsafeEventName (toJSString "beforeinput")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers.onbeforepaste Mozilla DocumentAndElementEventHandlers.onbeforepaste documentation> 
+beforePaste ::
+            (IsDocumentAndElementEventHandlers self, IsEventTarget self) =>
+              EventName self ClipboardEvent
+beforePaste = unsafeEventName (toJSString "beforepaste")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentFragment.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentFragment
+       (js_newDocumentFragment, newDocumentFragment, DocumentFragment(..),
+        gTypeDocumentFragment, IsDocumentFragment, toDocumentFragment)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"DocumentFragment\"](); })" js_newDocumentFragment ::
+        IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation> 
+newDocumentFragment :: (MonadIO m) => m DocumentFragment
+newDocumentFragment = liftIO (js_newDocumentFragment)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentOrShadowRoot.hs
@@ -0,0 +1,135 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentOrShadowRoot
+       (js_elementFromPoint, elementFromPoint, elementFromPoint_,
+        elementFromPointUnsafe, elementFromPointUnchecked,
+        js_getActiveElement, getActiveElement, getActiveElementUnsafe,
+        getActiveElementUnchecked, js_getPointerLockElement,
+        getPointerLockElement, getPointerLockElementUnsafe,
+        getPointerLockElementUnchecked, DocumentOrShadowRoot(..),
+        gTypeDocumentOrShadowRoot, IsDocumentOrShadowRoot,
+        toDocumentOrShadowRoot)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"elementFromPoint\"]($2, $3); })"
+        js_elementFromPoint ::
+        DocumentOrShadowRoot -> Double -> Double -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
+elementFromPoint ::
+                 (MonadIO m, IsDocumentOrShadowRoot self) =>
+                   self -> Double -> Double -> m (Maybe Element)
+elementFromPoint self x y
+  = liftIO
+      (nullableToMaybe <$>
+         (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
+elementFromPoint_ ::
+                  (MonadIO m, IsDocumentOrShadowRoot self) =>
+                    self -> Double -> Double -> m ()
+elementFromPoint_ self x y
+  = liftIO
+      (void (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
+elementFromPointUnsafe ::
+                       (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
+                         self -> Double -> Double -> m Element
+elementFromPointUnsafe self x y
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.elementFromPoint Mozilla DocumentOrShadowRoot.elementFromPoint documentation> 
+elementFromPointUnchecked ::
+                          (MonadIO m, IsDocumentOrShadowRoot self) =>
+                            self -> Double -> Double -> m Element
+elementFromPointUnchecked self x y
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_elementFromPoint (toDocumentOrShadowRoot self) x y))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"activeElement\"]; })"
+        js_getActiveElement ::
+        DocumentOrShadowRoot -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
+getActiveElement ::
+                 (MonadIO m, IsDocumentOrShadowRoot self) =>
+                   self -> m (Maybe Element)
+getActiveElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getActiveElement (toDocumentOrShadowRoot self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
+getActiveElementUnsafe ::
+                       (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
+                         self -> m Element
+getActiveElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getActiveElement (toDocumentOrShadowRoot self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.activeElement Mozilla DocumentOrShadowRoot.activeElement documentation> 
+getActiveElementUnchecked ::
+                          (MonadIO m, IsDocumentOrShadowRoot self) => self -> m Element
+getActiveElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getActiveElement (toDocumentOrShadowRoot self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pointerLockElement\"]; })"
+        js_getPointerLockElement ::
+        DocumentOrShadowRoot -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
+getPointerLockElement ::
+                      (MonadIO m, IsDocumentOrShadowRoot self) =>
+                        self -> m (Maybe Element)
+getPointerLockElement self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getPointerLockElement (toDocumentOrShadowRoot self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
+getPointerLockElementUnsafe ::
+                            (MonadIO m, IsDocumentOrShadowRoot self, HasCallStack) =>
+                              self -> m Element
+getPointerLockElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getPointerLockElement (toDocumentOrShadowRoot self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot.pointerLockElement Mozilla DocumentOrShadowRoot.pointerLockElement documentation> 
+getPointerLockElementUnchecked ::
+                               (MonadIO m, IsDocumentOrShadowRoot self) => self -> m Element
+getPointerLockElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPointerLockElement (toDocumentOrShadowRoot self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentTimeline.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentTimeline
+       (js_newDocumentTimeline, newDocumentTimeline, DocumentTimeline(..),
+        gTypeDocumentTimeline)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"DocumentTimeline\"]($1); })" js_newDocumentTimeline ::
+        Double -> IO DocumentTimeline
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline Mozilla DocumentTimeline documentation> 
+newDocumentTimeline :: (MonadIO m) => Double -> m DocumentTimeline
+newDocumentTimeline originTime
+  = liftIO (js_newDocumentTimeline originTime)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DocumentType.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DocumentType
+       (js_getName, getName, js_getPublicId, getPublicId, js_getSystemId,
+        getSystemId, DocumentType(..), gTypeDocumentType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        DocumentType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.name Mozilla DocumentType.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => DocumentType -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"publicId\"]; })" js_getPublicId
+        :: DocumentType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.publicId Mozilla DocumentType.publicId documentation> 
+getPublicId ::
+            (MonadIO m, FromJSString result) => DocumentType -> m result
+getPublicId self = liftIO (fromJSString <$> (js_getPublicId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"systemId\"]; })" js_getSystemId
+        :: DocumentType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType.systemId Mozilla DocumentType.systemId documentation> 
+getSystemId ::
+            (MonadIO m, FromJSString result) => DocumentType -> m result
+getSystemId self = liftIO (fromJSString <$> (js_getSystemId self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/DynamicsCompressorNode.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.DynamicsCompressorNode
+       (js_getThreshold, getThreshold, js_getKnee, getKnee, js_getRatio,
+        getRatio, js_getReduction, getReduction, js_getAttack, getAttack,
+        js_getRelease, getRelease, DynamicsCompressorNode(..),
+        gTypeDynamicsCompressorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"threshold\"]; })"
+        js_getThreshold :: DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.threshold Mozilla DynamicsCompressorNode.threshold documentation> 
+getThreshold ::
+             (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getThreshold self = liftIO (js_getThreshold self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"knee\"]; })" js_getKnee ::
+        DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.knee Mozilla DynamicsCompressorNode.knee documentation> 
+getKnee :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getKnee self = liftIO (js_getKnee self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ratio\"]; })" js_getRatio ::
+        DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.ratio Mozilla DynamicsCompressorNode.ratio documentation> 
+getRatio :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getRatio self = liftIO (js_getRatio self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reduction\"]; })"
+        js_getReduction :: DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.reduction Mozilla DynamicsCompressorNode.reduction documentation> 
+getReduction ::
+             (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getReduction self = liftIO (js_getReduction self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attack\"]; })" js_getAttack ::
+        DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.attack Mozilla DynamicsCompressorNode.attack documentation> 
+getAttack :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getAttack self = liftIO (js_getAttack self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"release\"]; })" js_getRelease ::
+        DynamicsCompressorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode.release Mozilla DynamicsCompressorNode.release documentation> 
+getRelease :: (MonadIO m) => DynamicsCompressorNode -> m AudioParam
+getRelease self = liftIO (js_getRelease self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTBlendMinMax.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EXTBlendMinMax
+       (pattern MIN_EXT, pattern MAX_EXT, EXTBlendMinMax(..),
+        gTypeEXTBlendMinMax)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern MIN_EXT = 32775
+pattern MAX_EXT = 32776
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTTextureFilterAnisotropic.hs
@@ -0,0 +1,30 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EXTTextureFilterAnisotropic
+       (pattern TEXTURE_MAX_ANISOTROPY_EXT,
+        pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT,
+        EXTTextureFilterAnisotropic(..), gTypeEXTTextureFilterAnisotropic)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern TEXTURE_MAX_ANISOTROPY_EXT = 34046
+pattern MAX_TEXTURE_MAX_ANISOTROPY_EXT = 34047
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs b/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EXTsRGB.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EXTsRGB
+       (pattern SRGB_EXT, pattern SRGB_ALPHA_EXT,
+        pattern SRGB8_ALPHA8_EXT,
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT, EXTsRGB(..),
+        gTypeEXTsRGB)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SRGB_EXT = 35904
+pattern SRGB_ALPHA_EXT = 35906
+pattern SRGB8_ALPHA8_EXT = 35907
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING_EXT = 33296
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Element.hs b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Element.hs
@@ -0,0 +1,1275 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Element
+       (js_hasAttributes, hasAttributes, hasAttributes_,
+        js_getAttributeNames, getAttributeNames, getAttributeNames_,
+        js_getAttribute, getAttribute, getAttribute_, getAttributeUnsafe,
+        getAttributeUnchecked, js_getAttributeNS, getAttributeNS,
+        getAttributeNS_, getAttributeNSUnsafe, getAttributeNSUnchecked,
+        js_setAttribute, setAttribute, js_setAttributeNS, setAttributeNS,
+        js_removeAttribute, removeAttribute, js_removeAttributeNS,
+        removeAttributeNS, js_hasAttribute, hasAttribute, hasAttribute_,
+        js_hasAttributeNS, hasAttributeNS, hasAttributeNS_,
+        js_getAttributeNode, getAttributeNode, getAttributeNode_,
+        getAttributeNodeUnsafe, getAttributeNodeUnchecked,
+        js_getAttributeNodeNS, getAttributeNodeNS, getAttributeNodeNS_,
+        getAttributeNodeNSUnsafe, getAttributeNodeNSUnchecked,
+        js_setAttributeNode, setAttributeNode, setAttributeNode_,
+        setAttributeNodeUnsafe, setAttributeNodeUnchecked,
+        js_setAttributeNodeNS, setAttributeNodeNS, setAttributeNodeNS_,
+        setAttributeNodeNSUnsafe, setAttributeNodeNSUnchecked,
+        js_removeAttributeNode, removeAttributeNode, removeAttributeNode_,
+        js_attachShadow, attachShadow, attachShadow_, js_closest, closest,
+        closest_, closestUnsafe, closestUnchecked, js_matches, matches,
+        matches_, js_webkitMatchesSelector, webkitMatchesSelector,
+        webkitMatchesSelector_, js_getElementsByTagName,
+        getElementsByTagName, getElementsByTagName_,
+        js_getElementsByTagNameNS, getElementsByTagNameNS,
+        getElementsByTagNameNS_, js_getElementsByClassName,
+        getElementsByClassName, getElementsByClassName_,
+        js_insertAdjacentElement, insertAdjacentElement,
+        insertAdjacentElement_, insertAdjacentElementUnsafe,
+        insertAdjacentElementUnchecked, js_insertAdjacentText,
+        insertAdjacentText, js_getClientRects, getClientRects,
+        getClientRects_, js_getBoundingClientRect, getBoundingClientRect,
+        getBoundingClientRect_, js_scrollIntoView, scrollIntoView,
+        js_scrollOpt, scrollOpt, js_scroll, scroll, js_scrollToOpt,
+        scrollToOpt, js_scrollTo, scrollTo, js_scrollByOpt, scrollByOpt,
+        js_scrollBy, scrollBy, js_insertAdjacentHTML, insertAdjacentHTML,
+        js_webkitRequestFullScreen, webkitRequestFullScreen,
+        js_webkitRequestFullscreen, webkitRequestFullscreen,
+        js_requestPointerLock, requestPointerLock,
+        js_webkitGetRegionFlowRanges, webkitGetRegionFlowRanges,
+        webkitGetRegionFlowRanges_, js_scrollIntoViewIfNeeded,
+        scrollIntoViewIfNeeded, js_getNamespaceURI, getNamespaceURI,
+        getNamespaceURIUnsafe, getNamespaceURIUnchecked, js_getPrefix,
+        getPrefix, getPrefixUnsafe, getPrefixUnchecked, js_getLocalName,
+        getLocalName, js_getTagName, getTagName, js_setId, setId, js_getId,
+        getId, js_setClassName, setClassName, js_getClassName,
+        getClassName, js_getClassList, getClassList, js_setSlot, setSlot,
+        js_getSlot, getSlot, js_getAttributes, getAttributes,
+        js_getShadowRoot, getShadowRoot, getShadowRootUnsafe,
+        getShadowRootUnchecked, js_setScrollTop, setScrollTop,
+        js_getScrollTop, getScrollTop, js_setScrollLeft, setScrollLeft,
+        js_getScrollLeft, getScrollLeft, js_getScrollWidth, getScrollWidth,
+        js_getScrollHeight, getScrollHeight, js_getClientTop, getClientTop,
+        js_getClientLeft, getClientLeft, js_getClientWidth, getClientWidth,
+        js_getClientHeight, getClientHeight, js_setInnerHTML, setInnerHTML,
+        js_getInnerHTML, getInnerHTML, js_setOuterHTML, setOuterHTML,
+        js_getOuterHTML, getOuterHTML, js_getWebkitRegionOverset,
+        getWebkitRegionOverset, selectStart, gestureChange, gestureEnd,
+        gestureStart, webKitAnimationEnd, webKitAnimationIteration,
+        webKitAnimationStart, webKitTransitionEnd, webKitFullscreenChange,
+        webKitFullscreenError, focusin, focusout, beforeload,
+        webKitNeedKey, webKitPresentationModeChanged,
+        webKitCurrentPlaybackTargetIsWirelessChanged,
+        webKitPlaybackTargetAvailabilityChanged, Element(..), gTypeElement,
+        IsElement, toElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"hasAttributes\"]() ? 1 : 0); })" js_hasAttributes ::
+        Element -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
+hasAttributes :: (MonadIO m, IsElement self) => self -> m Bool
+hasAttributes self = liftIO (js_hasAttributes (toElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributes Mozilla Element.hasAttributes documentation> 
+hasAttributes_ :: (MonadIO m, IsElement self) => self -> m ()
+hasAttributes_ self
+  = liftIO (void (js_hasAttributes (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAttributeNames\"](); })"
+        js_getAttributeNames :: Element -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
+getAttributeNames ::
+                  (MonadIO m, IsElement self, FromJSString result) =>
+                    self -> m [result]
+getAttributeNames self
+  = liftIO
+      ((js_getAttributeNames (toElement self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNames Mozilla Element.getAttributeNames documentation> 
+getAttributeNames_ :: (MonadIO m, IsElement self) => self -> m ()
+getAttributeNames_ self
+  = liftIO (void (js_getAttributeNames (toElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttribute\"]($2); })"
+        js_getAttribute :: Element -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttribute ::
+             (MonadIO m, IsElement self, ToJSString qualifiedName,
+              FromJSString result) =>
+               self -> qualifiedName -> m (Maybe result)
+getAttribute self qualifiedName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getAttribute (toElement self) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttribute_ ::
+              (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                self -> qualifiedName -> m ()
+getAttribute_ self qualifiedName
+  = liftIO
+      (void
+         (js_getAttribute (toElement self) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttributeUnsafe ::
+                   (MonadIO m, IsElement self, ToJSString qualifiedName, HasCallStack,
+                    FromJSString result) =>
+                     self -> qualifiedName -> m result
+getAttributeUnsafe self qualifiedName
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getAttribute (toElement self) (toJSString qualifiedName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttribute Mozilla Element.getAttribute documentation> 
+getAttributeUnchecked ::
+                      (MonadIO m, IsElement self, ToJSString qualifiedName,
+                       FromJSString result) =>
+                        self -> qualifiedName -> m result
+getAttributeUnchecked self qualifiedName
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getAttribute (toElement self) (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getAttributeNS\"]($2, $3); })"
+        js_getAttributeNS ::
+        Element -> Optional JSString -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
+getAttributeNS ::
+               (MonadIO m, IsElement self, ToJSString namespaceURI,
+                ToJSString localName, FromJSString result) =>
+                 self -> Maybe namespaceURI -> localName -> m (Maybe result)
+getAttributeNS self namespaceURI localName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getAttributeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
+getAttributeNS_ ::
+                (MonadIO m, IsElement self, ToJSString namespaceURI,
+                 ToJSString localName) =>
+                  self -> Maybe namespaceURI -> localName -> m ()
+getAttributeNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getAttributeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
+getAttributeNSUnsafe ::
+                     (MonadIO m, IsElement self, ToJSString namespaceURI,
+                      ToJSString localName, HasCallStack, FromJSString result) =>
+                       self -> Maybe namespaceURI -> localName -> m result
+getAttributeNSUnsafe self namespaceURI localName
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getAttributeNS (toElement self)
+             (toOptionalJSString namespaceURI)
+             (toJSString localName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNS Mozilla Element.getAttributeNS documentation> 
+getAttributeNSUnchecked ::
+                        (MonadIO m, IsElement self, ToJSString namespaceURI,
+                         ToJSString localName, FromJSString result) =>
+                          self -> Maybe namespaceURI -> localName -> m result
+getAttributeNSUnchecked self namespaceURI localName
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getAttributeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setAttribute\"]($2, $3); })"
+        js_setAttribute :: Element -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttribute Mozilla Element.setAttribute documentation> 
+setAttribute ::
+             (MonadIO m, IsElement self, ToJSString qualifiedName,
+              ToJSString value) =>
+               self -> qualifiedName -> value -> m ()
+setAttribute self qualifiedName value
+  = liftIO
+      (js_setAttribute (toElement self) (toJSString qualifiedName)
+         (toJSString value))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setAttributeNS\"]($2, $3, $4); })"
+        js_setAttributeNS ::
+        Element -> Optional JSString -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNS Mozilla Element.setAttributeNS documentation> 
+setAttributeNS ::
+               (MonadIO m, IsElement self, ToJSString namespaceURI,
+                ToJSString qualifiedName, ToJSString value) =>
+                 self -> Maybe namespaceURI -> qualifiedName -> value -> m ()
+setAttributeNS self namespaceURI qualifiedName value
+  = liftIO
+      (js_setAttributeNS (toElement self)
+         (toOptionalJSString namespaceURI)
+         (toJSString qualifiedName)
+         (toJSString value))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"removeAttribute\"]($2); })"
+        js_removeAttribute :: Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttribute Mozilla Element.removeAttribute documentation> 
+removeAttribute ::
+                (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                  self -> qualifiedName -> m ()
+removeAttribute self qualifiedName
+  = liftIO
+      (js_removeAttribute (toElement self) (toJSString qualifiedName))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"removeAttributeNS\"]($2, $3); })" js_removeAttributeNS ::
+        Element -> Optional JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNS Mozilla Element.removeAttributeNS documentation> 
+removeAttributeNS ::
+                  (MonadIO m, IsElement self, ToJSString namespaceURI,
+                   ToJSString localName) =>
+                    self -> Maybe namespaceURI -> localName -> m ()
+removeAttributeNS self namespaceURI localName
+  = liftIO
+      (js_removeAttributeNS (toElement self)
+         (toOptionalJSString namespaceURI)
+         (toJSString localName))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"hasAttribute\"]($2) ? 1 : 0); })" js_hasAttribute ::
+        Element -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
+hasAttribute ::
+             (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+               self -> qualifiedName -> m Bool
+hasAttribute self qualifiedName
+  = liftIO
+      (js_hasAttribute (toElement self) (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttribute Mozilla Element.hasAttribute documentation> 
+hasAttribute_ ::
+              (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                self -> qualifiedName -> m ()
+hasAttribute_ self qualifiedName
+  = liftIO
+      (void
+         (js_hasAttribute (toElement self) (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return ($1[\"hasAttributeNS\"]($2,\n$3) ? 1 : 0); })" js_hasAttributeNS ::
+        Element -> Optional JSString -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
+hasAttributeNS ::
+               (MonadIO m, IsElement self, ToJSString namespaceURI,
+                ToJSString localName) =>
+                 self -> Maybe namespaceURI -> localName -> m Bool
+hasAttributeNS self namespaceURI localName
+  = liftIO
+      (js_hasAttributeNS (toElement self)
+         (toOptionalJSString namespaceURI)
+         (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.hasAttributeNS Mozilla Element.hasAttributeNS documentation> 
+hasAttributeNS_ ::
+                (MonadIO m, IsElement self, ToJSString namespaceURI,
+                 ToJSString localName) =>
+                  self -> Maybe namespaceURI -> localName -> m ()
+hasAttributeNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_hasAttributeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttributeNode\"]($2); })"
+        js_getAttributeNode :: Element -> JSString -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNode ::
+                 (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                   self -> qualifiedName -> m (Maybe Attr)
+getAttributeNode self qualifiedName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNode_ ::
+                  (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                    self -> qualifiedName -> m ()
+getAttributeNode_ self qualifiedName
+  = liftIO
+      (void
+         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNodeUnsafe ::
+                       (MonadIO m, IsElement self, ToJSString qualifiedName,
+                        HasCallStack) =>
+                         self -> qualifiedName -> m Attr
+getAttributeNodeUnsafe self qualifiedName
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNode Mozilla Element.getAttributeNode documentation> 
+getAttributeNodeUnchecked ::
+                          (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                            self -> qualifiedName -> m Attr
+getAttributeNodeUnchecked self qualifiedName
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getAttributeNode (toElement self) (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getAttributeNodeNS\"]($2, $3); })" js_getAttributeNodeNS ::
+        Element -> Optional JSString -> JSString -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNS ::
+                   (MonadIO m, IsElement self, ToJSString namespaceURI,
+                    ToJSString localName) =>
+                     self -> Maybe namespaceURI -> localName -> m (Maybe Attr)
+getAttributeNodeNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getAttributeNodeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNS_ ::
+                    (MonadIO m, IsElement self, ToJSString namespaceURI,
+                     ToJSString localName) =>
+                      self -> Maybe namespaceURI -> localName -> m ()
+getAttributeNodeNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getAttributeNodeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNSUnsafe ::
+                         (MonadIO m, IsElement self, ToJSString namespaceURI,
+                          ToJSString localName, HasCallStack) =>
+                           self -> Maybe namespaceURI -> localName -> m Attr
+getAttributeNodeNSUnsafe self namespaceURI localName
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getAttributeNodeNS (toElement self)
+             (toOptionalJSString namespaceURI)
+             (toJSString localName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getAttributeNodeNS Mozilla Element.getAttributeNodeNS documentation> 
+getAttributeNodeNSUnchecked ::
+                            (MonadIO m, IsElement self, ToJSString namespaceURI,
+                             ToJSString localName) =>
+                              self -> Maybe namespaceURI -> localName -> m Attr
+getAttributeNodeNSUnchecked self namespaceURI localName
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getAttributeNodeNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNode\"]($2); })"
+        js_setAttributeNode :: Element -> Attr -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNode ::
+                 (MonadIO m, IsElement self) => self -> Attr -> m (Maybe Attr)
+setAttributeNode self attr
+  = liftIO
+      (nullableToMaybe <$> (js_setAttributeNode (toElement self) attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNode_ ::
+                  (MonadIO m, IsElement self) => self -> Attr -> m ()
+setAttributeNode_ self attr
+  = liftIO (void (js_setAttributeNode (toElement self) attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNodeUnsafe ::
+                       (MonadIO m, IsElement self, HasCallStack) => self -> Attr -> m Attr
+setAttributeNodeUnsafe self attr
+  = liftIO
+      ((nullableToMaybe <$> (js_setAttributeNode (toElement self) attr))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNode Mozilla Element.setAttributeNode documentation> 
+setAttributeNodeUnchecked ::
+                          (MonadIO m, IsElement self) => self -> Attr -> m Attr
+setAttributeNodeUnchecked self attr
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_setAttributeNode (toElement self) attr))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setAttributeNodeNS\"]($2); })"
+        js_setAttributeNodeNS :: Element -> Attr -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNS ::
+                   (MonadIO m, IsElement self) => self -> Attr -> m (Maybe Attr)
+setAttributeNodeNS self attr
+  = liftIO
+      (nullableToMaybe <$> (js_setAttributeNodeNS (toElement self) attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNS_ ::
+                    (MonadIO m, IsElement self) => self -> Attr -> m ()
+setAttributeNodeNS_ self attr
+  = liftIO (void (js_setAttributeNodeNS (toElement self) attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNSUnsafe ::
+                         (MonadIO m, IsElement self, HasCallStack) => self -> Attr -> m Attr
+setAttributeNodeNSUnsafe self attr
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_setAttributeNodeNS (toElement self) attr))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.setAttributeNodeNS Mozilla Element.setAttributeNodeNS documentation> 
+setAttributeNodeNSUnchecked ::
+                            (MonadIO m, IsElement self) => self -> Attr -> m Attr
+setAttributeNodeNSUnchecked self attr
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_setAttributeNodeNS (toElement self) attr))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeAttributeNode\"]($2); })"
+        js_removeAttributeNode :: Element -> Attr -> IO Attr
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
+removeAttributeNode ::
+                    (MonadIO m, IsElement self) => self -> Attr -> m Attr
+removeAttributeNode self attr
+  = liftIO (js_removeAttributeNode (toElement self) attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.removeAttributeNode Mozilla Element.removeAttributeNode documentation> 
+removeAttributeNode_ ::
+                     (MonadIO m, IsElement self) => self -> Attr -> m ()
+removeAttributeNode_ self attr
+  = liftIO (void (js_removeAttributeNode (toElement self) attr))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"attachShadow\"]($2); })"
+        js_attachShadow :: Element -> ShadowRootInit -> IO ShadowRoot
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
+attachShadow ::
+             (MonadIO m, IsElement self) =>
+               self -> ShadowRootInit -> m ShadowRoot
+attachShadow self init
+  = liftIO (js_attachShadow (toElement self) init)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attachShadow Mozilla Element.attachShadow documentation> 
+attachShadow_ ::
+              (MonadIO m, IsElement self) => self -> ShadowRootInit -> m ()
+attachShadow_ self init
+  = liftIO (void (js_attachShadow (toElement self) init))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"closest\"]($2); })" js_closest ::
+        Element -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closest ::
+        (MonadIO m, IsElement self, ToJSString selectors) =>
+          self -> selectors -> m (Maybe Element)
+closest self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_closest (toElement self) (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closest_ ::
+         (MonadIO m, IsElement self, ToJSString selectors) =>
+           self -> selectors -> m ()
+closest_ self selectors
+  = liftIO
+      (void (js_closest (toElement self) (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closestUnsafe ::
+              (MonadIO m, IsElement self, ToJSString selectors, HasCallStack) =>
+                self -> selectors -> m Element
+closestUnsafe self selectors
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_closest (toElement self) (toJSString selectors)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.closest Mozilla Element.closest documentation> 
+closestUnchecked ::
+                 (MonadIO m, IsElement self, ToJSString selectors) =>
+                   self -> selectors -> m Element
+closestUnchecked self selectors
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_closest (toElement self) (toJSString selectors)))
+ 
+foreign import javascript safe "(($1, $2) => { return ($1[\"matches\"]($2) ? 1 : 0); })"
+        js_matches :: Element -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
+matches ::
+        (MonadIO m, IsElement self, ToJSString selectors) =>
+          self -> selectors -> m Bool
+matches self selectors
+  = liftIO (js_matches (toElement self) (toJSString selectors))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.matches Mozilla Element.matches documentation> 
+matches_ ::
+         (MonadIO m, IsElement self, ToJSString selectors) =>
+           self -> selectors -> m ()
+matches_ self selectors
+  = liftIO
+      (void (js_matches (toElement self) (toJSString selectors)))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return ($1[\"webkitMatchesSelector\"]($2) ? 1 : 0); })"
+        js_webkitMatchesSelector :: Element -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
+webkitMatchesSelector ::
+                      (MonadIO m, IsElement self, ToJSString selectors) =>
+                        self -> selectors -> m Bool
+webkitMatchesSelector self selectors
+  = liftIO
+      (js_webkitMatchesSelector (toElement self) (toJSString selectors))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitMatchesSelector Mozilla Element.webkitMatchesSelector documentation> 
+webkitMatchesSelector_ ::
+                       (MonadIO m, IsElement self, ToJSString selectors) =>
+                         self -> selectors -> m ()
+webkitMatchesSelector_ self selectors
+  = liftIO
+      (void
+         (js_webkitMatchesSelector (toElement self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementsByTagName\"]($2); })"
+        js_getElementsByTagName :: Element -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
+getElementsByTagName ::
+                     (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                       self -> qualifiedName -> m HTMLCollection
+getElementsByTagName self qualifiedName
+  = liftIO
+      (js_getElementsByTagName (toElement self)
+         (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagName Mozilla Element.getElementsByTagName documentation> 
+getElementsByTagName_ ::
+                      (MonadIO m, IsElement self, ToJSString qualifiedName) =>
+                        self -> qualifiedName -> m ()
+getElementsByTagName_ self qualifiedName
+  = liftIO
+      (void
+         (js_getElementsByTagName (toElement self)
+            (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getElementsByTagNameNS\"]($2,\n$3); })" js_getElementsByTagNameNS
+        :: Element -> Optional JSString -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS ::
+                       (MonadIO m, IsElement self, ToJSString namespaceURI,
+                        ToJSString localName) =>
+                         self -> Maybe namespaceURI -> localName -> m HTMLCollection
+getElementsByTagNameNS self namespaceURI localName
+  = liftIO
+      (js_getElementsByTagNameNS (toElement self)
+         (toOptionalJSString namespaceURI)
+         (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByTagNameNS Mozilla Element.getElementsByTagNameNS documentation> 
+getElementsByTagNameNS_ ::
+                        (MonadIO m, IsElement self, ToJSString namespaceURI,
+                         ToJSString localName) =>
+                          self -> Maybe namespaceURI -> localName -> m ()
+getElementsByTagNameNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getElementsByTagNameNS (toElement self)
+            (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getElementsByClassName\"]($2); })" js_getElementsByClassName ::
+        Element -> JSString -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
+getElementsByClassName ::
+                       (MonadIO m, IsElement self, ToJSString name) =>
+                         self -> name -> m HTMLCollection
+getElementsByClassName self name
+  = liftIO
+      (js_getElementsByClassName (toElement self) (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getElementsByClassName Mozilla Element.getElementsByClassName documentation> 
+getElementsByClassName_ ::
+                        (MonadIO m, IsElement self, ToJSString name) =>
+                          self -> name -> m ()
+getElementsByClassName_ self name
+  = liftIO
+      (void
+         (js_getElementsByClassName (toElement self) (toJSString name)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"insertAdjacentElement\"]($2,\n$3); })" js_insertAdjacentElement
+        :: Element -> JSString -> Element -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
+insertAdjacentElement ::
+                      (MonadIO m, IsElement self, ToJSString where',
+                       IsElement element) =>
+                        self -> where' -> element -> m (Maybe Element)
+insertAdjacentElement self where' element
+  = liftIO
+      (nullableToMaybe <$>
+         (js_insertAdjacentElement (toElement self) (toJSString where')
+            (toElement element)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
+insertAdjacentElement_ ::
+                       (MonadIO m, IsElement self, ToJSString where',
+                        IsElement element) =>
+                         self -> where' -> element -> m ()
+insertAdjacentElement_ self where' element
+  = liftIO
+      (void
+         (js_insertAdjacentElement (toElement self) (toJSString where')
+            (toElement element)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
+insertAdjacentElementUnsafe ::
+                            (MonadIO m, IsElement self, ToJSString where', IsElement element,
+                             HasCallStack) =>
+                              self -> where' -> element -> m Element
+insertAdjacentElementUnsafe self where' element
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_insertAdjacentElement (toElement self) (toJSString where')
+             (toElement element)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentElement Mozilla Element.insertAdjacentElement documentation> 
+insertAdjacentElementUnchecked ::
+                               (MonadIO m, IsElement self, ToJSString where',
+                                IsElement element) =>
+                                 self -> where' -> element -> m Element
+insertAdjacentElementUnchecked self where' element
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_insertAdjacentElement (toElement self) (toJSString where')
+            (toElement element)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentText\"]($2, $3); })"
+        js_insertAdjacentText :: Element -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentText Mozilla Element.insertAdjacentText documentation> 
+insertAdjacentText ::
+                   (MonadIO m, IsElement self, ToJSString where', ToJSString data') =>
+                     self -> where' -> data' -> m ()
+insertAdjacentText self where' data'
+  = liftIO
+      (js_insertAdjacentText (toElement self) (toJSString where')
+         (toJSString data'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getClientRects\"](); })"
+        js_getClientRects :: Element -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
+getClientRects ::
+               (MonadIO m, IsElement self) => self -> m [DOMRect]
+getClientRects self
+  = liftIO
+      ((js_getClientRects (toElement self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getClientRects Mozilla Element.getClientRects documentation> 
+getClientRects_ :: (MonadIO m, IsElement self) => self -> m ()
+getClientRects_ self
+  = liftIO (void (js_getClientRects (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
+        js_getBoundingClientRect :: Element -> IO DOMRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadIO m, IsElement self) => self -> m DOMRect
+getBoundingClientRect self
+  = liftIO (js_getBoundingClientRect (toElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.getBoundingClientRect Mozilla Element.getBoundingClientRect documentation> 
+getBoundingClientRect_ ::
+                       (MonadIO m, IsElement self) => self -> m ()
+getBoundingClientRect_ self
+  = liftIO (void (js_getBoundingClientRect (toElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollIntoView\"]($2); })"
+        js_scrollIntoView :: Element -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoView Mozilla Element.scrollIntoView documentation> 
+scrollIntoView ::
+               (MonadIO m, IsElement self) => self -> Bool -> m ()
+scrollIntoView self alignWithTop
+  = liftIO (js_scrollIntoView (toElement self) alignWithTop)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scroll\"]($2); })" js_scrollOpt
+        :: Element -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
+scrollOpt ::
+          (MonadIO m, IsElement self) =>
+            self -> Maybe ScrollToOptions -> m ()
+scrollOpt self options
+  = liftIO (js_scrollOpt (toElement self) (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scroll\"]($2, $3); })" js_scroll
+        :: Element -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scroll Mozilla Element.scroll documentation> 
+scroll ::
+       (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
+scroll self x y = liftIO (js_scroll (toElement self) x y)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollTo\"]($2); })"
+        js_scrollToOpt :: Element -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
+scrollToOpt ::
+            (MonadIO m, IsElement self) =>
+              self -> Maybe ScrollToOptions -> m ()
+scrollToOpt self options
+  = liftIO
+      (js_scrollToOpt (toElement self) (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollTo\"]($2, $3); })"
+        js_scrollTo :: Element -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTo Mozilla Element.scrollTo documentation> 
+scrollTo ::
+         (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
+scrollTo self x y = liftIO (js_scrollTo (toElement self) x y)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollBy\"]($2); })"
+        js_scrollByOpt :: Element -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
+scrollByOpt ::
+            (MonadIO m, IsElement self) =>
+              self -> Maybe ScrollToOptions -> m ()
+scrollByOpt self option
+  = liftIO (js_scrollByOpt (toElement self) (maybeToOptional option))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollBy\"]($2, $3); })"
+        js_scrollBy :: Element -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollBy Mozilla Element.scrollBy documentation> 
+scrollBy ::
+         (MonadIO m, IsElement self) => self -> Double -> Double -> m ()
+scrollBy self x y = liftIO (js_scrollBy (toElement self) x y)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertAdjacentHTML\"]($2, $3); })"
+        js_insertAdjacentHTML :: Element -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.insertAdjacentHTML Mozilla Element.insertAdjacentHTML documentation> 
+insertAdjacentHTML ::
+                   (MonadIO m, IsElement self, ToJSString position,
+                    ToJSString text) =>
+                     self -> position -> text -> m ()
+insertAdjacentHTML self position text
+  = liftIO
+      (js_insertAdjacentHTML (toElement self) (toJSString position)
+         (toJSString text))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitRequestFullScreen\"](); })" js_webkitRequestFullScreen ::
+        Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullScreen Mozilla Element.webkitRequestFullScreen documentation> 
+webkitRequestFullScreen ::
+                        (MonadIO m, IsElement self) => self -> m ()
+webkitRequestFullScreen self
+  = liftIO (js_webkitRequestFullScreen (toElement self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitRequestFullscreen\"](); })" js_webkitRequestFullscreen ::
+        Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRequestFullscreen Mozilla Element.webkitRequestFullscreen documentation> 
+webkitRequestFullscreen ::
+                        (MonadIO m, IsElement self) => self -> m ()
+webkitRequestFullscreen self
+  = liftIO (js_webkitRequestFullscreen (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requestPointerLock\"](); })"
+        js_requestPointerLock :: Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.requestPointerLock Mozilla Element.requestPointerLock documentation> 
+requestPointerLock :: (MonadIO m, IsElement self) => self -> m ()
+requestPointerLock self
+  = liftIO (js_requestPointerLock (toElement self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitGetRegionFlowRanges\"](); })" js_webkitGetRegionFlowRanges
+        :: Element -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
+webkitGetRegionFlowRanges ::
+                          (MonadIO m, IsElement self) => self -> m (Maybe [Range])
+webkitGetRegionFlowRanges self
+  = liftIO
+      ((js_webkitGetRegionFlowRanges (toElement self)) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitGetRegionFlowRanges Mozilla Element.webkitGetRegionFlowRanges documentation> 
+webkitGetRegionFlowRanges_ ::
+                           (MonadIO m, IsElement self) => self -> m ()
+webkitGetRegionFlowRanges_ self
+  = liftIO (void (js_webkitGetRegionFlowRanges (toElement self)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"scrollIntoViewIfNeeded\"]($2); })" js_scrollIntoViewIfNeeded ::
+        Element -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollIntoViewIfNeeded Mozilla Element.scrollIntoViewIfNeeded documentation> 
+scrollIntoViewIfNeeded ::
+                       (MonadIO m, IsElement self) => self -> Bool -> m ()
+scrollIntoViewIfNeeded self centerIfNeeded
+  = liftIO
+      (js_scrollIntoViewIfNeeded (toElement self) centerIfNeeded)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"namespaceURI\"]; })"
+        js_getNamespaceURI :: Element -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
+getNamespaceURI ::
+                (MonadIO m, IsElement self, FromJSString result) =>
+                  self -> m (Maybe result)
+getNamespaceURI self
+  = liftIO
+      (fromMaybeJSString <$> (js_getNamespaceURI (toElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
+getNamespaceURIUnsafe ::
+                      (MonadIO m, IsElement self, HasCallStack, FromJSString result) =>
+                        self -> m result
+getNamespaceURIUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getNamespaceURI (toElement self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.namespaceURI Mozilla Element.namespaceURI documentation> 
+getNamespaceURIUnchecked ::
+                         (MonadIO m, IsElement self, FromJSString result) =>
+                           self -> m result
+getNamespaceURIUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getNamespaceURI (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"prefix\"]; })" js_getPrefix ::
+        Element -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
+getPrefix ::
+          (MonadIO m, IsElement self, FromJSString result) =>
+            self -> m (Maybe result)
+getPrefix self
+  = liftIO (fromMaybeJSString <$> (js_getPrefix (toElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
+getPrefixUnsafe ::
+                (MonadIO m, IsElement self, HasCallStack, FromJSString result) =>
+                  self -> m result
+getPrefixUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getPrefix (toElement self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.prefix Mozilla Element.prefix documentation> 
+getPrefixUnchecked ::
+                   (MonadIO m, IsElement self, FromJSString result) =>
+                     self -> m result
+getPrefixUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getPrefix (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"localName\"]; })"
+        js_getLocalName :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.localName Mozilla Element.localName documentation> 
+getLocalName ::
+             (MonadIO m, IsElement self, FromJSString result) =>
+               self -> m result
+getLocalName self
+  = liftIO (fromJSString <$> (js_getLocalName (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tagName\"]; })" js_getTagName ::
+        Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.tagName Mozilla Element.tagName documentation> 
+getTagName ::
+           (MonadIO m, IsElement self, FromJSString result) =>
+             self -> m result
+getTagName self
+  = liftIO (fromJSString <$> (js_getTagName (toElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
+        Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
+setId ::
+      (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setId self val
+  = liftIO (js_setId (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.id Mozilla Element.id documentation> 
+getId ::
+      (MonadIO m, IsElement self, FromJSString result) =>
+        self -> m result
+getId self = liftIO (fromJSString <$> (js_getId (toElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"className\"] = $2; })"
+        js_setClassName :: Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
+setClassName ::
+             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setClassName self val
+  = liftIO (js_setClassName (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
+        js_getClassName :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.className Mozilla Element.className documentation> 
+getClassName ::
+             (MonadIO m, IsElement self, FromJSString result) =>
+               self -> m result
+getClassName self
+  = liftIO (fromJSString <$> (js_getClassName (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"classList\"]; })"
+        js_getClassList :: Element -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.classList Mozilla Element.classList documentation> 
+getClassList ::
+             (MonadIO m, IsElement self) => self -> m DOMTokenList
+getClassList self = liftIO (js_getClassList (toElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"slot\"] = $2; })" js_setSlot ::
+        Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
+setSlot ::
+        (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setSlot self val
+  = liftIO (js_setSlot (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"slot\"]; })" js_getSlot ::
+        Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.slot Mozilla Element.slot documentation> 
+getSlot ::
+        (MonadIO m, IsElement self, FromJSString result) =>
+          self -> m result
+getSlot self
+  = liftIO (fromJSString <$> (js_getSlot (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attributes\"]; })"
+        js_getAttributes :: Element -> IO NamedNodeMap
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.attributes Mozilla Element.attributes documentation> 
+getAttributes ::
+              (MonadIO m, IsElement self) => self -> m NamedNodeMap
+getAttributes self = liftIO (js_getAttributes (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRoot\"]; })"
+        js_getShadowRoot :: Element -> IO (Nullable ShadowRoot)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
+getShadowRoot ::
+              (MonadIO m, IsElement self) => self -> m (Maybe ShadowRoot)
+getShadowRoot self
+  = liftIO (nullableToMaybe <$> (js_getShadowRoot (toElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
+getShadowRootUnsafe ::
+                    (MonadIO m, IsElement self, HasCallStack) => self -> m ShadowRoot
+getShadowRootUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getShadowRoot (toElement self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.shadowRoot Mozilla Element.shadowRoot documentation> 
+getShadowRootUnchecked ::
+                       (MonadIO m, IsElement self) => self -> m ShadowRoot
+getShadowRootUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getShadowRoot (toElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrollTop\"] = $2; })"
+        js_setScrollTop :: Element -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
+setScrollTop :: (MonadIO m, IsElement self) => self -> Int -> m ()
+setScrollTop self val
+  = liftIO (js_setScrollTop (toElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollTop\"]; })"
+        js_getScrollTop :: Element -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollTop Mozilla Element.scrollTop documentation> 
+getScrollTop :: (MonadIO m, IsElement self) => self -> m Int
+getScrollTop self = liftIO (js_getScrollTop (toElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrollLeft\"] = $2; })"
+        js_setScrollLeft :: Element -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
+setScrollLeft :: (MonadIO m, IsElement self) => self -> Int -> m ()
+setScrollLeft self val
+  = liftIO (js_setScrollLeft (toElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollLeft\"]; })"
+        js_getScrollLeft :: Element -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollLeft Mozilla Element.scrollLeft documentation> 
+getScrollLeft :: (MonadIO m, IsElement self) => self -> m Int
+getScrollLeft self = liftIO (js_getScrollLeft (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollWidth\"]; })"
+        js_getScrollWidth :: Element -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollWidth Mozilla Element.scrollWidth documentation> 
+getScrollWidth :: (MonadIO m, IsElement self) => self -> m Int
+getScrollWidth self = liftIO (js_getScrollWidth (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollHeight\"]; })"
+        js_getScrollHeight :: Element -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.scrollHeight Mozilla Element.scrollHeight documentation> 
+getScrollHeight :: (MonadIO m, IsElement self) => self -> m Int
+getScrollHeight self = liftIO (js_getScrollHeight (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientTop\"]; })"
+        js_getClientTop :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientTop Mozilla Element.clientTop documentation> 
+getClientTop :: (MonadIO m, IsElement self) => self -> m Double
+getClientTop self = liftIO (js_getClientTop (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientLeft\"]; })"
+        js_getClientLeft :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientLeft Mozilla Element.clientLeft documentation> 
+getClientLeft :: (MonadIO m, IsElement self) => self -> m Double
+getClientLeft self = liftIO (js_getClientLeft (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientWidth\"]; })"
+        js_getClientWidth :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientWidth Mozilla Element.clientWidth documentation> 
+getClientWidth :: (MonadIO m, IsElement self) => self -> m Double
+getClientWidth self = liftIO (js_getClientWidth (toElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientHeight\"]; })"
+        js_getClientHeight :: Element -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.clientHeight Mozilla Element.clientHeight documentation> 
+getClientHeight :: (MonadIO m, IsElement self) => self -> m Double
+getClientHeight self = liftIO (js_getClientHeight (toElement self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"innerHTML\"] = $2; })"
+        js_setInnerHTML :: Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
+setInnerHTML ::
+             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setInnerHTML self val
+  = liftIO (js_setInnerHTML (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"innerHTML\"]; })"
+        js_getInnerHTML :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.innerHTML Mozilla Element.innerHTML documentation> 
+getInnerHTML ::
+             (MonadIO m, IsElement self, FromJSString result) =>
+               self -> m result
+getInnerHTML self
+  = liftIO (fromJSString <$> (js_getInnerHTML (toElement self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"outerHTML\"] = $2; })"
+        js_setOuterHTML :: Element -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
+setOuterHTML ::
+             (MonadIO m, IsElement self, ToJSString val) => self -> val -> m ()
+setOuterHTML self val
+  = liftIO (js_setOuterHTML (toElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"outerHTML\"]; })"
+        js_getOuterHTML :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.outerHTML Mozilla Element.outerHTML documentation> 
+getOuterHTML ::
+             (MonadIO m, IsElement self, FromJSString result) =>
+               self -> m result
+getOuterHTML self
+  = liftIO (fromJSString <$> (js_getOuterHTML (toElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitRegionOverset\"]; })"
+        js_getWebkitRegionOverset :: Element -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.webkitRegionOverset Mozilla Element.webkitRegionOverset documentation> 
+getWebkitRegionOverset ::
+                       (MonadIO m, IsElement self, FromJSString result) =>
+                         self -> m result
+getWebkitRegionOverset self
+  = liftIO
+      (fromJSString <$> (js_getWebkitRegionOverset (toElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onselectstart Mozilla Element.onselectstart documentation> 
+selectStart ::
+            (IsElement self, IsEventTarget self) => EventName self Event
+selectStart = unsafeEventName (toJSString "selectstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongesturechange Mozilla Element.ongesturechange documentation> 
+gestureChange ::
+              (IsElement self, IsEventTarget self) => EventName self UIEvent
+gestureChange = unsafeEventName (toJSString "gesturechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongestureend Mozilla Element.ongestureend documentation> 
+gestureEnd ::
+           (IsElement self, IsEventTarget self) => EventName self UIEvent
+gestureEnd = unsafeEventName (toJSString "gestureend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.ongesturestart Mozilla Element.ongesturestart documentation> 
+gestureStart ::
+             (IsElement self, IsEventTarget self) => EventName self UIEvent
+gestureStart = unsafeEventName (toJSString "gesturestart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationend Mozilla Element.onwebkitanimationend documentation> 
+webKitAnimationEnd ::
+                   (IsElement self, IsEventTarget self) =>
+                     EventName self AnimationEvent
+webKitAnimationEnd
+  = unsafeEventName (toJSString "webkitanimationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationiteration Mozilla Element.onwebkitanimationiteration documentation> 
+webKitAnimationIteration ::
+                         (IsElement self, IsEventTarget self) =>
+                           EventName self AnimationEvent
+webKitAnimationIteration
+  = unsafeEventName (toJSString "webkitanimationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitanimationstart Mozilla Element.onwebkitanimationstart documentation> 
+webKitAnimationStart ::
+                     (IsElement self, IsEventTarget self) =>
+                       EventName self AnimationEvent
+webKitAnimationStart
+  = unsafeEventName (toJSString "webkitanimationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkittransitionend Mozilla Element.onwebkittransitionend documentation> 
+webKitTransitionEnd ::
+                    (IsElement self, IsEventTarget self) =>
+                      EventName self TransitionEvent
+webKitTransitionEnd
+  = unsafeEventName (toJSString "webkittransitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenchange Mozilla Element.onwebkitfullscreenchange documentation> 
+webKitFullscreenChange ::
+                       (IsElement self, IsEventTarget self) => EventName self Event
+webKitFullscreenChange
+  = unsafeEventName (toJSString "webkitfullscreenchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitfullscreenerror Mozilla Element.onwebkitfullscreenerror documentation> 
+webKitFullscreenError ::
+                      (IsElement self, IsEventTarget self) => EventName self Event
+webKitFullscreenError
+  = unsafeEventName (toJSString "webkitfullscreenerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocusin Mozilla Element.onfocusin documentation> 
+focusin ::
+        (IsElement self, IsEventTarget self) => EventName self onfocusin
+focusin = unsafeEventName (toJSString "focusin")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onfocusout Mozilla Element.onfocusout documentation> 
+focusout ::
+         (IsElement self, IsEventTarget self) => EventName self onfocusout
+focusout = unsafeEventName (toJSString "focusout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onbeforeload Mozilla Element.onbeforeload documentation> 
+beforeload ::
+           (IsElement self, IsEventTarget self) => EventName self onbeforeload
+beforeload = unsafeEventName (toJSString "beforeload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitneedkey Mozilla Element.onwebkitneedkey documentation> 
+webKitNeedKey ::
+              (IsElement self, IsEventTarget self) => EventName self Event
+webKitNeedKey = unsafeEventName (toJSString "webkitneedkey")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitpresentationmodechanged Mozilla Element.onwebkitpresentationmodechanged documentation> 
+webKitPresentationModeChanged ::
+                              (IsElement self, IsEventTarget self) => EventName self Event
+webKitPresentationModeChanged
+  = unsafeEventName (toJSString "webkitpresentationmodechanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitcurrentplaybacktargetiswirelesschanged Mozilla Element.onwebkitcurrentplaybacktargetiswirelesschanged documentation> 
+webKitCurrentPlaybackTargetIsWirelessChanged ::
+                                             (IsElement self, IsEventTarget self) =>
+                                               EventName self Event
+webKitCurrentPlaybackTargetIsWirelessChanged
+  = unsafeEventName
+      (toJSString "webkitcurrentplaybacktargetiswirelesschanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Element.onwebkitplaybacktargetavailabilitychanged Mozilla Element.onwebkitplaybacktargetavailabilitychanged documentation> 
+webKitPlaybackTargetAvailabilityChanged ::
+                                        (IsElement self, IsEventTarget self) => EventName self Event
+webKitPlaybackTargetAvailabilityChanged
+  = unsafeEventName
+      (toJSString "webkitplaybacktargetavailabilitychanged")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ElementCSSInlineStyle.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ElementCSSInlineStyle
+       (js_getStyle, getStyle, ElementCSSInlineStyle(..),
+        gTypeElementCSSInlineStyle, IsElementCSSInlineStyle,
+        toElementCSSInlineStyle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        ElementCSSInlineStyle -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle.style Mozilla ElementCSSInlineStyle.style documentation> 
+getStyle ::
+         (MonadIO m, IsElementCSSInlineStyle self) =>
+           self -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle (toElementCSSInlineStyle self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Enums.hs b/src/GHCJS/DOM/JSFFI/Generated/Enums.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Enums.hs
@@ -0,0 +1,4535 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Enums
+       (KeyType(..), PToJSVal, ToJSVal, PFromJSVal, FromJSVal,
+        js_KeyTypePublic, js_KeyTypePrivate, js_KeyTypeSecret,
+        CryptoKeyUsage(..), js_CryptoKeyUsageEncrypt,
+        js_CryptoKeyUsageDecrypt, js_CryptoKeyUsageSign,
+        js_CryptoKeyUsageVerify, js_CryptoKeyUsageDeriveKey,
+        js_CryptoKeyUsageDeriveBits, js_CryptoKeyUsageWrapKey,
+        js_CryptoKeyUsageUnwrapKey, KeyFormat(..), js_KeyFormatRaw,
+        js_KeyFormatSpki, js_KeyFormatPkcs8, js_KeyFormatJwk,
+        FontFaceLoadStatus(..), js_FontFaceLoadStatusUnloaded,
+        js_FontFaceLoadStatusLoading, js_FontFaceLoadStatusLoaded,
+        js_FontFaceLoadStatusError, FontFaceSetLoadStatus(..),
+        js_FontFaceSetLoadStatusLoading, js_FontFaceSetLoadStatusLoaded,
+        VisibilityState(..), js_VisibilityStateHidden,
+        js_VisibilityStateVisible, js_VisibilityStatePrerender,
+        DocumentReadyState(..), js_DocumentReadyStateLoading,
+        js_DocumentReadyStateInteractive, js_DocumentReadyStateComplete,
+        ShadowRootMode(..), js_ShadowRootModeUserAgent,
+        js_ShadowRootModeClosed, js_ShadowRootModeOpen,
+        BlobLineEndings(..), js_BlobLineEndingsTransparent,
+        js_BlobLineEndingsNative, ImageSmoothingQuality(..),
+        js_ImageSmoothingQualityLow, js_ImageSmoothingQualityMedium,
+        js_ImageSmoothingQualityHigh, CanvasWindingRule(..),
+        js_CanvasWindingRuleNonzero, js_CanvasWindingRuleEvenodd,
+        WebGLPowerPreference(..), js_WebGLPowerPreferenceDefault,
+        js_WebGLPowerPreferenceLowPower,
+        js_WebGLPowerPreferenceHighPerformance, WebGPUCompareFunction(..),
+        js_WebGPUCompareFunctionNever, js_WebGPUCompareFunctionLess,
+        js_WebGPUCompareFunctionEqual, js_WebGPUCompareFunctionLessequal,
+        js_WebGPUCompareFunctionGreater, js_WebGPUCompareFunctionNotequal,
+        js_WebGPUCompareFunctionGreaterequal,
+        js_WebGPUCompareFunctionAlways, WebGPUPixelFormat(..),
+        js_WebGPUPixelFormatBGRA8Unorm, WebGPULoadAction(..),
+        js_WebGPULoadActionDontcare, js_WebGPULoadActionLoad,
+        js_WebGPULoadActionClear, WebGPUStoreAction(..),
+        js_WebGPUStoreActionDontcare, js_WebGPUStoreActionStore,
+        js_WebGPUStoreActionMultisampleresolve, WebGPUPrimitiveType(..),
+        js_WebGPUPrimitiveTypePoint, js_WebGPUPrimitiveTypeLine,
+        js_WebGPUPrimitiveTypeLinestrip, js_WebGPUPrimitiveTypeTriangle,
+        js_WebGPUPrimitiveTypeTrianglestrip, WebGPUFunctionType(..),
+        js_WebGPUFunctionTypeFragment, js_WebGPUFunctionTypeVertex,
+        WebGPUStencilOperation(..), js_WebGPUStencilOperationKeep,
+        js_WebGPUStencilOperationZero, js_WebGPUStencilOperationReplace,
+        js_WebGPUStencilOperationIncrementclamp,
+        js_WebGPUStencilOperationDecrementclamp,
+        js_WebGPUStencilOperationInvert,
+        js_WebGPUStencilOperationIncrementwrap,
+        js_WebGPUStencilOperationDecrementwrap, WebGPUStatus(..),
+        js_WebGPUStatusNotenqueued, js_WebGPUStatusEnqueued,
+        js_WebGPUStatusCommitted, js_WebGPUStatusScheduled,
+        js_WebGPUStatusCompleted, js_WebGPUStatusError,
+        WebGPUSamplerAddressMode(..),
+        js_WebGPUSamplerAddressModeClamptoedge,
+        js_WebGPUSamplerAddressModeMirrorclamptoedge,
+        js_WebGPUSamplerAddressModeRepeat,
+        js_WebGPUSamplerAddressModeMirrorrepeat,
+        js_WebGPUSamplerAddressModeClamptozero,
+        WebGPUSamplerMinMagFilter(..), js_WebGPUSamplerMinMagFilterNearest,
+        js_WebGPUSamplerMinMagFilterLinear, WebGPUSamplerMipFilter(..),
+        js_WebGPUSamplerMipFilterNotmipmapped,
+        js_WebGPUSamplerMipFilterNearest, js_WebGPUSamplerMipFilterLinear,
+        WebGPUCullMode(..), js_WebGPUCullModeNone, js_WebGPUCullModeFront,
+        js_WebGPUCullModeBack, WebGPUIndexType(..),
+        js_WebGPUIndexTypeUint16, js_WebGPUIndexTypeUint32,
+        WebGPUVisibilityResultMode(..),
+        js_WebGPUVisibilityResultModeDisabled,
+        js_WebGPUVisibilityResultModeBoolean,
+        js_WebGPUVisibilityResultModeCounting, WebGPUWinding(..),
+        js_WebGPUWindingClockwise, js_WebGPUWindingCounterclockwise,
+        WebGPUDepthClipMode(..), js_WebGPUDepthClipModeClip,
+        js_WebGPUDepthClipModeClamp, WebGPUTriangleFillMode(..),
+        js_WebGPUTriangleFillModeFill, js_WebGPUTriangleFillModeLines,
+        WebGPUCPUCacheMode(..), js_WebGPUCPUCacheModeDefaultcache,
+        js_WebGPUCPUCacheModeWritecombined, WebGPUStorageMode(..),
+        js_WebGPUStorageModeShared, js_WebGPUStorageModeManaged,
+        js_WebGPUStorageModePrivate, WebGPUResourceOptions(..),
+        js_WebGPUResourceOptionsCpucachemodedefaultcache,
+        js_WebGPUResourceOptionsCpucachemodewritecombined,
+        js_WebGPUResourceOptionsStoragemodeshared,
+        js_WebGPUResourceOptionsStoragemodemanaged,
+        js_WebGPUResourceOptionsStoragemodeprivate,
+        js_WebGPUResourceOptionsOptioncpucachemodedefaultcache,
+        js_WebGPUResourceOptionsOptioncpucachemodewritecombined,
+        WebGPUTextureUsage(..), js_WebGPUTextureUsageUnknown,
+        js_WebGPUTextureUsageShaderread, js_WebGPUTextureUsageShaderwrite,
+        js_WebGPUTextureUsageRendertarget,
+        js_WebGPUTextureUsagePixelformatview, WebGPUBlendOperation(..),
+        js_WebGPUBlendOperationAdd, js_WebGPUBlendOperationSubtract,
+        js_WebGPUBlendOperationReversesubtract, js_WebGPUBlendOperationMin,
+        js_WebGPUBlendOperationMax, WebGPUBlendFactor(..),
+        js_WebGPUBlendFactorZero, js_WebGPUBlendFactorOne,
+        js_WebGPUBlendFactorSourcecolor,
+        js_WebGPUBlendFactorOneminussourcecolor,
+        js_WebGPUBlendFactorSourcealpha,
+        js_WebGPUBlendFactorOneminussourcealpha,
+        js_WebGPUBlendFactorDestinationcolor,
+        js_WebGPUBlendFactorOneminusdestinationcolor,
+        js_WebGPUBlendFactorDestinationalpha,
+        js_WebGPUBlendFactorOneminusdestinationalpha,
+        js_WebGPUBlendFactorSourcealphasaturated,
+        js_WebGPUBlendFactorBlendcolor,
+        js_WebGPUBlendFactorOneminusblendcolor,
+        js_WebGPUBlendFactorBlendalpha,
+        js_WebGPUBlendFactorOneminusblendalpha, WebGPUColorWriteMask(..),
+        js_WebGPUColorWriteMaskNone, js_WebGPUColorWriteMaskRed,
+        js_WebGPUColorWriteMaskGreen, js_WebGPUColorWriteMaskBlue,
+        js_WebGPUColorWriteMaskAlpha, js_WebGPUColorWriteMaskAll,
+        WebGPUMultisampleDepthResolveFilter(..),
+        js_WebGPUMultisampleDepthResolveFilterSample0,
+        js_WebGPUMultisampleDepthResolveFilterMin,
+        js_WebGPUMultisampleDepthResolveFilterMax, WebGPUFeatureSet(..),
+        js_WebGPUFeatureSetLevel1, js_WebGPUFeatureSetLevel2,
+        VideoPresentationMode(..), js_VideoPresentationModeFullscreen,
+        js_VideoPresentationModePictureInPicture,
+        js_VideoPresentationModeInline, TextTrackMode(..),
+        js_TextTrackModeDisabled, js_TextTrackModeHidden,
+        js_TextTrackModeShowing, TextTrackKind(..),
+        js_TextTrackKindSubtitles, js_TextTrackKindCaptions,
+        js_TextTrackKindDescriptions, js_TextTrackKindChapters,
+        js_TextTrackKindMetadata, js_TextTrackKindForced,
+        ApplePayErrorCode(..), js_ApplePayErrorCodeUnknown,
+        js_ApplePayErrorCodeShippingContactInvalid,
+        js_ApplePayErrorCodeBillingContactInvalid,
+        js_ApplePayErrorCodeAddressUnservicable,
+        ApplePayErrorContactField(..),
+        js_ApplePayErrorContactFieldPhoneNumber,
+        js_ApplePayErrorContactFieldEmailAddress,
+        js_ApplePayErrorContactFieldName,
+        js_ApplePayErrorContactFieldPostalAddress,
+        js_ApplePayErrorContactFieldAddressLines,
+        js_ApplePayErrorContactFieldLocality,
+        js_ApplePayErrorContactFieldPostalCode,
+        js_ApplePayErrorContactFieldAdministrativeArea,
+        js_ApplePayErrorContactFieldCountry, ApplePayLineItemType(..),
+        js_ApplePayLineItemTypePending, js_ApplePayLineItemTypeFinal,
+        ApplePayPaymentMethodType(..), js_ApplePayPaymentMethodTypeDebit,
+        js_ApplePayPaymentMethodTypeCredit,
+        js_ApplePayPaymentMethodTypePrepaid,
+        js_ApplePayPaymentMethodTypeStore,
+        ApplePayPaymentPassActivationState(..),
+        js_ApplePayPaymentPassActivationStateActivated,
+        js_ApplePayPaymentPassActivationStateRequiresActivation,
+        js_ApplePayPaymentPassActivationStateActivating,
+        js_ApplePayPaymentPassActivationStateSuspended,
+        js_ApplePayPaymentPassActivationStateDeactivated,
+        ApplePayMerchantCapability(..),
+        js_ApplePayMerchantCapabilitySupports3DS,
+        js_ApplePayMerchantCapabilitySupportsEMV,
+        js_ApplePayMerchantCapabilitySupportsCredit,
+        js_ApplePayMerchantCapabilitySupportsDebit,
+        ApplePayContactField(..), js_ApplePayContactFieldEmail,
+        js_ApplePayContactFieldName, js_ApplePayContactFieldPhone,
+        js_ApplePayContactFieldPostalAddress, ApplePayShippingType(..),
+        js_ApplePayShippingTypeShipping, js_ApplePayShippingTypeDelivery,
+        js_ApplePayShippingTypeStorePickup,
+        js_ApplePayShippingTypeServicePickup, MediaKeyMessageType(..),
+        js_MediaKeyMessageTypeLicenseRequest,
+        js_MediaKeyMessageTypeLicenseRenewal,
+        js_MediaKeyMessageTypeLicenseRelease,
+        js_MediaKeyMessageTypeIndividualizationRequest,
+        MediaKeySessionType(..), js_MediaKeySessionTypeTemporary,
+        js_MediaKeySessionTypePersistentUsageRecord,
+        js_MediaKeySessionTypePersistentLicense, MediaKeysRequirement(..),
+        js_MediaKeysRequirementRequired, js_MediaKeysRequirementOptional,
+        js_MediaKeysRequirementNotAllowed, MediaKeyStatus(..),
+        js_MediaKeyStatusUsable, js_MediaKeyStatusExpired,
+        js_MediaKeyStatusReleased, js_MediaKeyStatusOutputRestricted,
+        js_MediaKeyStatusOutputDownscaled, js_MediaKeyStatusStatusPending,
+        js_MediaKeyStatusInternalError, RequestType(..), js_RequestType,
+        js_RequestTypeAudio, js_RequestTypeFont, js_RequestTypeImage,
+        js_RequestTypeScript, js_RequestTypeStyle, js_RequestTypeTrack,
+        js_RequestTypeVideo, RequestDestination(..), js_RequestDestination,
+        js_RequestDestinationDocument, js_RequestDestinationSharedworker,
+        js_RequestDestinationSubresource, js_RequestDestinationUnknown,
+        js_RequestDestinationWorker, RequestMode(..),
+        js_RequestModeNavigate, js_RequestModeSameOrigin,
+        js_RequestModeNoCors, js_RequestModeCors, RequestCredentials(..),
+        js_RequestCredentialsOmit, js_RequestCredentialsSameOrigin,
+        js_RequestCredentialsInclude, RequestCache(..),
+        js_RequestCacheDefault, js_RequestCacheNoStore,
+        js_RequestCacheReload, js_RequestCacheNoCache,
+        js_RequestCacheForceCache, js_RequestCacheOnlyIfCached,
+        RequestRedirect(..), js_RequestRedirectFollow,
+        js_RequestRedirectError, js_RequestRedirectManual,
+        ReferrerPolicy(..), js_ReferrerPolicy, js_ReferrerPolicyNoReferrer,
+        js_ReferrerPolicyNoReferrerWhenDowngrade, js_ReferrerPolicyOrigin,
+        js_ReferrerPolicyOriginWhenCrossOrigin, js_ReferrerPolicyUnsafeUrl,
+        ResponseType(..), js_ResponseTypeBasic, js_ResponseTypeCors,
+        js_ResponseTypeDefault, js_ResponseTypeError,
+        js_ResponseTypeOpaque, js_ResponseTypeOpaqueredirect,
+        IDBCursorDirection(..), js_IDBCursorDirectionNext,
+        js_IDBCursorDirectionNextunique, js_IDBCursorDirectionPrev,
+        js_IDBCursorDirectionPrevunique, IDBRequestReadyState(..),
+        js_IDBRequestReadyStatePending, js_IDBRequestReadyStateDone,
+        IDBTransactionMode(..), js_IDBTransactionModeReadonly,
+        js_IDBTransactionModeReadwrite, js_IDBTransactionModeVersionchange,
+        DeviceType(..), js_DeviceTypeNone, js_DeviceTypeAirplay,
+        js_DeviceTypeTvout, MediaSessionKind(..),
+        js_MediaSessionKindContent, js_MediaSessionKindTransient,
+        js_MediaSessionKindTransientSolo, js_MediaSessionKindAmbient,
+        EndOfStreamError(..), js_EndOfStreamErrorNetwork,
+        js_EndOfStreamErrorDecode, ReadyState(..), js_ReadyStateClosed,
+        js_ReadyStateOpen, js_ReadyStateEnded, AppendMode(..),
+        js_AppendModeSegments, js_AppendModeSequence, MediaDeviceKind(..),
+        js_MediaDeviceKindAudioinput, js_MediaDeviceKindAudiooutput,
+        js_MediaDeviceKindVideoinput, MediaStreamTrackState(..),
+        js_MediaStreamTrackStateLive, js_MediaStreamTrackStateEnded,
+        RTCIceTransportPolicy(..), js_RTCIceTransportPolicyRelay,
+        js_RTCIceTransportPolicyAll, RTCBundlePolicy(..),
+        js_RTCBundlePolicyBalanced, js_RTCBundlePolicyMaxCompat,
+        js_RTCBundlePolicyMaxBundle, RTCDataChannelState(..),
+        js_RTCDataChannelStateConnecting, js_RTCDataChannelStateOpen,
+        js_RTCDataChannelStateClosing, js_RTCDataChannelStateClosed,
+        RTCIceConnectionState(..), js_RTCIceConnectionStateNew,
+        js_RTCIceConnectionStateChecking,
+        js_RTCIceConnectionStateConnected,
+        js_RTCIceConnectionStateCompleted, js_RTCIceConnectionStateFailed,
+        js_RTCIceConnectionStateDisconnected,
+        js_RTCIceConnectionStateClosed, RTCIceGatheringState(..),
+        js_RTCIceGatheringStateNew, js_RTCIceGatheringStateGathering,
+        js_RTCIceGatheringStateComplete, RTCIceTransportState(..),
+        js_RTCIceTransportStateNew, js_RTCIceTransportStateChecking,
+        js_RTCIceTransportStateConnected, js_RTCIceTransportStateCompleted,
+        js_RTCIceTransportStateFailed, js_RTCIceTransportStateDisconnected,
+        js_RTCIceTransportStateClosed, RTCPeerConnectionState(..),
+        js_RTCPeerConnectionStateNew, js_RTCPeerConnectionStateConnecting,
+        js_RTCPeerConnectionStateConnected,
+        js_RTCPeerConnectionStateDisconnected,
+        js_RTCPeerConnectionStateFailed, js_RTCPeerConnectionStateClosed,
+        RTCDegradationPreference(..),
+        js_RTCDegradationPreferenceMaintainFramerate,
+        js_RTCDegradationPreferenceMaintainResolution,
+        js_RTCDegradationPreferenceBalanced, RTCDtxStatus(..),
+        js_RTCDtxStatusDisabled, js_RTCDtxStatusEnabled,
+        RTCPriorityType(..), js_RTCPriorityTypeVeryLow,
+        js_RTCPriorityTypeLow, js_RTCPriorityTypeMedium,
+        js_RTCPriorityTypeHigh, RTCRtpTransceiverDirection(..),
+        js_RTCRtpTransceiverDirectionSendrecv,
+        js_RTCRtpTransceiverDirectionSendonly,
+        js_RTCRtpTransceiverDirectionRecvonly,
+        js_RTCRtpTransceiverDirectionInactive, RTCSdpType(..),
+        js_RTCSdpTypeOffer, js_RTCSdpTypePranswer, js_RTCSdpTypeAnswer,
+        js_RTCSdpTypeRollback, RTCSignalingState(..),
+        js_RTCSignalingStateStable, js_RTCSignalingStateHaveLocalOffer,
+        js_RTCSignalingStateHaveRemoteOffer,
+        js_RTCSignalingStateHaveLocalPranswer,
+        js_RTCSignalingStateHaveRemotePranswer, RTCStatsType(..),
+        js_RTCStatsTypeCodec, js_RTCStatsTypeInboundRtp,
+        js_RTCStatsTypeOutboundRtp, js_RTCStatsTypePeerConnection,
+        js_RTCStatsTypeDataChannel, js_RTCStatsTypeTrack,
+        js_RTCStatsTypeTransport, js_RTCStatsTypeCandidatePair,
+        js_RTCStatsTypeLocalCandidate, js_RTCStatsTypeRemoteCandidate,
+        js_RTCStatsTypeCertificate, NotificationDirection(..),
+        js_NotificationDirectionAuto, js_NotificationDirectionLtr,
+        js_NotificationDirectionRtl, AudioContextState(..),
+        js_AudioContextStateSuspended, js_AudioContextStateRunning,
+        js_AudioContextStateInterrupted, js_AudioContextStateClosed,
+        BiquadFilterType(..), js_BiquadFilterTypeLowpass,
+        js_BiquadFilterTypeHighpass, js_BiquadFilterTypeBandpass,
+        js_BiquadFilterTypeLowshelf, js_BiquadFilterTypeHighshelf,
+        js_BiquadFilterTypePeaking, js_BiquadFilterTypeNotch,
+        js_BiquadFilterTypeAllpass, OscillatorType(..),
+        js_OscillatorTypeSine, js_OscillatorTypeSquare,
+        js_OscillatorTypeSawtooth, js_OscillatorTypeTriangle,
+        js_OscillatorTypeCustom, PanningModelType(..),
+        js_PanningModelTypeEqualpower, js_PanningModelTypeHRTF,
+        DistanceModelType(..), js_DistanceModelTypeLinear,
+        js_DistanceModelTypeInverse, js_DistanceModelTypeExponential,
+        OverSampleType(..), js_OverSampleTypeNone, js_OverSampleType2x,
+        js_OverSampleType4x, ScrollRestoration(..),
+        js_ScrollRestorationAuto, js_ScrollRestorationManual,
+        XMLHttpRequestResponseType(..), js_XMLHttpRequestResponseType,
+        js_XMLHttpRequestResponseTypeArraybuffer,
+        js_XMLHttpRequestResponseTypeBlob,
+        js_XMLHttpRequestResponseTypeDocument,
+        js_XMLHttpRequestResponseTypeJson,
+        js_XMLHttpRequestResponseTypeText)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+ 
+data KeyType = KeyTypePublic
+             | KeyTypePrivate
+             | KeyTypeSecret
+             deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal KeyType where
+        pToJSVal KeyTypePublic = js_KeyTypePublic
+        pToJSVal KeyTypePrivate = js_KeyTypePrivate
+        pToJSVal KeyTypeSecret = js_KeyTypeSecret
+ 
+instance ToJSVal KeyType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal KeyType where
+        pFromJSVal x | x `js_eq` js_KeyTypePublic = KeyTypePublic
+        pFromJSVal x | x `js_eq` js_KeyTypePrivate = KeyTypePrivate
+        pFromJSVal x | x `js_eq` js_KeyTypeSecret = KeyTypeSecret
+ 
+instance FromJSVal KeyType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"public\"; })" js_KeyTypePublic ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"private\"; })" js_KeyTypePrivate ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"secret\"; })" js_KeyTypeSecret ::
+        JSVal
+ 
+data CryptoKeyUsage = CryptoKeyUsageEncrypt
+                    | CryptoKeyUsageDecrypt
+                    | CryptoKeyUsageSign
+                    | CryptoKeyUsageVerify
+                    | CryptoKeyUsageDeriveKey
+                    | CryptoKeyUsageDeriveBits
+                    | CryptoKeyUsageWrapKey
+                    | CryptoKeyUsageUnwrapKey
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal CryptoKeyUsage where
+        pToJSVal CryptoKeyUsageEncrypt = js_CryptoKeyUsageEncrypt
+        pToJSVal CryptoKeyUsageDecrypt = js_CryptoKeyUsageDecrypt
+        pToJSVal CryptoKeyUsageSign = js_CryptoKeyUsageSign
+        pToJSVal CryptoKeyUsageVerify = js_CryptoKeyUsageVerify
+        pToJSVal CryptoKeyUsageDeriveKey = js_CryptoKeyUsageDeriveKey
+        pToJSVal CryptoKeyUsageDeriveBits = js_CryptoKeyUsageDeriveBits
+        pToJSVal CryptoKeyUsageWrapKey = js_CryptoKeyUsageWrapKey
+        pToJSVal CryptoKeyUsageUnwrapKey = js_CryptoKeyUsageUnwrapKey
+ 
+instance ToJSVal CryptoKeyUsage where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal CryptoKeyUsage where
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageEncrypt = CryptoKeyUsageEncrypt
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageDecrypt = CryptoKeyUsageDecrypt
+        pFromJSVal x | x `js_eq` js_CryptoKeyUsageSign = CryptoKeyUsageSign
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageVerify = CryptoKeyUsageVerify
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageDeriveKey = CryptoKeyUsageDeriveKey
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageDeriveBits = CryptoKeyUsageDeriveBits
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageWrapKey = CryptoKeyUsageWrapKey
+        pFromJSVal x
+          | x `js_eq` js_CryptoKeyUsageUnwrapKey = CryptoKeyUsageUnwrapKey
+ 
+instance FromJSVal CryptoKeyUsage where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"encrypt\"; })"
+        js_CryptoKeyUsageEncrypt :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"decrypt\"; })"
+        js_CryptoKeyUsageDecrypt :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sign\"; })" js_CryptoKeyUsageSign
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"verify\"; })"
+        js_CryptoKeyUsageVerify :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"deriveKey\"; })"
+        js_CryptoKeyUsageDeriveKey :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"deriveBits\"; })"
+        js_CryptoKeyUsageDeriveBits :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"wrapKey\"; })"
+        js_CryptoKeyUsageWrapKey :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"unwrapKey\"; })"
+        js_CryptoKeyUsageUnwrapKey :: JSVal
+ 
+data KeyFormat = KeyFormatRaw
+               | KeyFormatSpki
+               | KeyFormatPkcs8
+               | KeyFormatJwk
+               deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal KeyFormat where
+        pToJSVal KeyFormatRaw = js_KeyFormatRaw
+        pToJSVal KeyFormatSpki = js_KeyFormatSpki
+        pToJSVal KeyFormatPkcs8 = js_KeyFormatPkcs8
+        pToJSVal KeyFormatJwk = js_KeyFormatJwk
+ 
+instance ToJSVal KeyFormat where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal KeyFormat where
+        pFromJSVal x | x `js_eq` js_KeyFormatRaw = KeyFormatRaw
+        pFromJSVal x | x `js_eq` js_KeyFormatSpki = KeyFormatSpki
+        pFromJSVal x | x `js_eq` js_KeyFormatPkcs8 = KeyFormatPkcs8
+        pFromJSVal x | x `js_eq` js_KeyFormatJwk = KeyFormatJwk
+ 
+instance FromJSVal KeyFormat where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"raw\"; })" js_KeyFormatRaw :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"spki\"; })" js_KeyFormatSpki ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"pkcs8\"; })" js_KeyFormatPkcs8 ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"jwk\"; })" js_KeyFormatJwk :: JSVal
+ 
+data FontFaceLoadStatus = FontFaceLoadStatusUnloaded
+                        | FontFaceLoadStatusLoading
+                        | FontFaceLoadStatusLoaded
+                        | FontFaceLoadStatusError
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal FontFaceLoadStatus where
+        pToJSVal FontFaceLoadStatusUnloaded = js_FontFaceLoadStatusUnloaded
+        pToJSVal FontFaceLoadStatusLoading = js_FontFaceLoadStatusLoading
+        pToJSVal FontFaceLoadStatusLoaded = js_FontFaceLoadStatusLoaded
+        pToJSVal FontFaceLoadStatusError = js_FontFaceLoadStatusError
+ 
+instance ToJSVal FontFaceLoadStatus where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal FontFaceLoadStatus where
+        pFromJSVal x
+          | x `js_eq` js_FontFaceLoadStatusUnloaded =
+            FontFaceLoadStatusUnloaded
+        pFromJSVal x
+          | x `js_eq` js_FontFaceLoadStatusLoading =
+            FontFaceLoadStatusLoading
+        pFromJSVal x
+          | x `js_eq` js_FontFaceLoadStatusLoaded = FontFaceLoadStatusLoaded
+        pFromJSVal x
+          | x `js_eq` js_FontFaceLoadStatusError = FontFaceLoadStatusError
+ 
+instance FromJSVal FontFaceLoadStatus where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"unloaded\"; })"
+        js_FontFaceLoadStatusUnloaded :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"loading\"; })"
+        js_FontFaceLoadStatusLoading :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"loaded\"; })"
+        js_FontFaceLoadStatusLoaded :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"error\"; })"
+        js_FontFaceLoadStatusError :: JSVal
+ 
+data FontFaceSetLoadStatus = FontFaceSetLoadStatusLoading
+                           | FontFaceSetLoadStatusLoaded
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal FontFaceSetLoadStatus where
+        pToJSVal FontFaceSetLoadStatusLoading
+          = js_FontFaceSetLoadStatusLoading
+        pToJSVal FontFaceSetLoadStatusLoaded
+          = js_FontFaceSetLoadStatusLoaded
+ 
+instance ToJSVal FontFaceSetLoadStatus where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal FontFaceSetLoadStatus where
+        pFromJSVal x
+          | x `js_eq` js_FontFaceSetLoadStatusLoading =
+            FontFaceSetLoadStatusLoading
+        pFromJSVal x
+          | x `js_eq` js_FontFaceSetLoadStatusLoaded =
+            FontFaceSetLoadStatusLoaded
+ 
+instance FromJSVal FontFaceSetLoadStatus where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"loading\"; })"
+        js_FontFaceSetLoadStatusLoading :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"loaded\"; })"
+        js_FontFaceSetLoadStatusLoaded :: JSVal
+ 
+data VisibilityState = VisibilityStateHidden
+                     | VisibilityStateVisible
+                     | VisibilityStatePrerender
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal VisibilityState where
+        pToJSVal VisibilityStateHidden = js_VisibilityStateHidden
+        pToJSVal VisibilityStateVisible = js_VisibilityStateVisible
+        pToJSVal VisibilityStatePrerender = js_VisibilityStatePrerender
+ 
+instance ToJSVal VisibilityState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal VisibilityState where
+        pFromJSVal x
+          | x `js_eq` js_VisibilityStateHidden = VisibilityStateHidden
+        pFromJSVal x
+          | x `js_eq` js_VisibilityStateVisible = VisibilityStateVisible
+        pFromJSVal x
+          | x `js_eq` js_VisibilityStatePrerender = VisibilityStatePrerender
+ 
+instance FromJSVal VisibilityState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"hidden\"; })"
+        js_VisibilityStateHidden :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"visible\"; })"
+        js_VisibilityStateVisible :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"prerender\"; })"
+        js_VisibilityStatePrerender :: JSVal
+ 
+data DocumentReadyState = DocumentReadyStateLoading
+                        | DocumentReadyStateInteractive
+                        | DocumentReadyStateComplete
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal DocumentReadyState where
+        pToJSVal DocumentReadyStateLoading = js_DocumentReadyStateLoading
+        pToJSVal DocumentReadyStateInteractive
+          = js_DocumentReadyStateInteractive
+        pToJSVal DocumentReadyStateComplete = js_DocumentReadyStateComplete
+ 
+instance ToJSVal DocumentReadyState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal DocumentReadyState where
+        pFromJSVal x
+          | x `js_eq` js_DocumentReadyStateLoading =
+            DocumentReadyStateLoading
+        pFromJSVal x
+          | x `js_eq` js_DocumentReadyStateInteractive =
+            DocumentReadyStateInteractive
+        pFromJSVal x
+          | x `js_eq` js_DocumentReadyStateComplete =
+            DocumentReadyStateComplete
+ 
+instance FromJSVal DocumentReadyState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"loading\"; })"
+        js_DocumentReadyStateLoading :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"interactive\"; })"
+        js_DocumentReadyStateInteractive :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"complete\"; })"
+        js_DocumentReadyStateComplete :: JSVal
+ 
+data ShadowRootMode = ShadowRootModeUserAgent
+                    | ShadowRootModeClosed
+                    | ShadowRootModeOpen
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ShadowRootMode where
+        pToJSVal ShadowRootModeUserAgent = js_ShadowRootModeUserAgent
+        pToJSVal ShadowRootModeClosed = js_ShadowRootModeClosed
+        pToJSVal ShadowRootModeOpen = js_ShadowRootModeOpen
+ 
+instance ToJSVal ShadowRootMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ShadowRootMode where
+        pFromJSVal x
+          | x `js_eq` js_ShadowRootModeUserAgent = ShadowRootModeUserAgent
+        pFromJSVal x
+          | x `js_eq` js_ShadowRootModeClosed = ShadowRootModeClosed
+        pFromJSVal x | x `js_eq` js_ShadowRootModeOpen = ShadowRootModeOpen
+ 
+instance FromJSVal ShadowRootMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"user-agent\"; })"
+        js_ShadowRootModeUserAgent :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_ShadowRootModeClosed :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"open\"; })" js_ShadowRootModeOpen
+        :: JSVal
+ 
+data BlobLineEndings = BlobLineEndingsTransparent
+                     | BlobLineEndingsNative
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal BlobLineEndings where
+        pToJSVal BlobLineEndingsTransparent = js_BlobLineEndingsTransparent
+        pToJSVal BlobLineEndingsNative = js_BlobLineEndingsNative
+ 
+instance ToJSVal BlobLineEndings where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal BlobLineEndings where
+        pFromJSVal x
+          | x `js_eq` js_BlobLineEndingsTransparent =
+            BlobLineEndingsTransparent
+        pFromJSVal x
+          | x `js_eq` js_BlobLineEndingsNative = BlobLineEndingsNative
+ 
+instance FromJSVal BlobLineEndings where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"transparent\"; })"
+        js_BlobLineEndingsTransparent :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"native\"; })"
+        js_BlobLineEndingsNative :: JSVal
+ 
+data ImageSmoothingQuality = ImageSmoothingQualityLow
+                           | ImageSmoothingQualityMedium
+                           | ImageSmoothingQualityHigh
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ImageSmoothingQuality where
+        pToJSVal ImageSmoothingQualityLow = js_ImageSmoothingQualityLow
+        pToJSVal ImageSmoothingQualityMedium
+          = js_ImageSmoothingQualityMedium
+        pToJSVal ImageSmoothingQualityHigh = js_ImageSmoothingQualityHigh
+ 
+instance ToJSVal ImageSmoothingQuality where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ImageSmoothingQuality where
+        pFromJSVal x
+          | x `js_eq` js_ImageSmoothingQualityLow = ImageSmoothingQualityLow
+        pFromJSVal x
+          | x `js_eq` js_ImageSmoothingQualityMedium =
+            ImageSmoothingQualityMedium
+        pFromJSVal x
+          | x `js_eq` js_ImageSmoothingQualityHigh =
+            ImageSmoothingQualityHigh
+ 
+instance FromJSVal ImageSmoothingQuality where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"low\"; })"
+        js_ImageSmoothingQualityLow :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"medium\"; })"
+        js_ImageSmoothingQualityMedium :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"high\"; })"
+        js_ImageSmoothingQualityHigh :: JSVal
+ 
+data CanvasWindingRule = CanvasWindingRuleNonzero
+                       | CanvasWindingRuleEvenodd
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal CanvasWindingRule where
+        pToJSVal CanvasWindingRuleNonzero = js_CanvasWindingRuleNonzero
+        pToJSVal CanvasWindingRuleEvenodd = js_CanvasWindingRuleEvenodd
+ 
+instance ToJSVal CanvasWindingRule where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal CanvasWindingRule where
+        pFromJSVal x
+          | x `js_eq` js_CanvasWindingRuleNonzero = CanvasWindingRuleNonzero
+        pFromJSVal x
+          | x `js_eq` js_CanvasWindingRuleEvenodd = CanvasWindingRuleEvenodd
+ 
+instance FromJSVal CanvasWindingRule where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"nonzero\"; })"
+        js_CanvasWindingRuleNonzero :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"evenodd\"; })"
+        js_CanvasWindingRuleEvenodd :: JSVal
+ 
+data WebGLPowerPreference = WebGLPowerPreferenceDefault
+                          | WebGLPowerPreferenceLowPower
+                          | WebGLPowerPreferenceHighPerformance
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGLPowerPreference where
+        pToJSVal WebGLPowerPreferenceDefault
+          = js_WebGLPowerPreferenceDefault
+        pToJSVal WebGLPowerPreferenceLowPower
+          = js_WebGLPowerPreferenceLowPower
+        pToJSVal WebGLPowerPreferenceHighPerformance
+          = js_WebGLPowerPreferenceHighPerformance
+ 
+instance ToJSVal WebGLPowerPreference where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGLPowerPreference where
+        pFromJSVal x
+          | x `js_eq` js_WebGLPowerPreferenceDefault =
+            WebGLPowerPreferenceDefault
+        pFromJSVal x
+          | x `js_eq` js_WebGLPowerPreferenceLowPower =
+            WebGLPowerPreferenceLowPower
+        pFromJSVal x
+          | x `js_eq` js_WebGLPowerPreferenceHighPerformance =
+            WebGLPowerPreferenceHighPerformance
+ 
+instance FromJSVal WebGLPowerPreference where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"default\"; })"
+        js_WebGLPowerPreferenceDefault :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"low-power\"; })"
+        js_WebGLPowerPreferenceLowPower :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"high-performance\"; })"
+        js_WebGLPowerPreferenceHighPerformance :: JSVal
+ 
+data WebGPUCompareFunction = WebGPUCompareFunctionNever
+                           | WebGPUCompareFunctionLess
+                           | WebGPUCompareFunctionEqual
+                           | WebGPUCompareFunctionLessequal
+                           | WebGPUCompareFunctionGreater
+                           | WebGPUCompareFunctionNotequal
+                           | WebGPUCompareFunctionGreaterequal
+                           | WebGPUCompareFunctionAlways
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUCompareFunction where
+        pToJSVal WebGPUCompareFunctionNever = js_WebGPUCompareFunctionNever
+        pToJSVal WebGPUCompareFunctionLess = js_WebGPUCompareFunctionLess
+        pToJSVal WebGPUCompareFunctionEqual = js_WebGPUCompareFunctionEqual
+        pToJSVal WebGPUCompareFunctionLessequal
+          = js_WebGPUCompareFunctionLessequal
+        pToJSVal WebGPUCompareFunctionGreater
+          = js_WebGPUCompareFunctionGreater
+        pToJSVal WebGPUCompareFunctionNotequal
+          = js_WebGPUCompareFunctionNotequal
+        pToJSVal WebGPUCompareFunctionGreaterequal
+          = js_WebGPUCompareFunctionGreaterequal
+        pToJSVal WebGPUCompareFunctionAlways
+          = js_WebGPUCompareFunctionAlways
+ 
+instance ToJSVal WebGPUCompareFunction where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUCompareFunction where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionNever =
+            WebGPUCompareFunctionNever
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionLess =
+            WebGPUCompareFunctionLess
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionEqual =
+            WebGPUCompareFunctionEqual
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionLessequal =
+            WebGPUCompareFunctionLessequal
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionGreater =
+            WebGPUCompareFunctionGreater
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionNotequal =
+            WebGPUCompareFunctionNotequal
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionGreaterequal =
+            WebGPUCompareFunctionGreaterequal
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCompareFunctionAlways =
+            WebGPUCompareFunctionAlways
+ 
+instance FromJSVal WebGPUCompareFunction where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"never\"; })"
+        js_WebGPUCompareFunctionNever :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"less\"; })"
+        js_WebGPUCompareFunctionLess :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"equal\"; })"
+        js_WebGPUCompareFunctionEqual :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"lessequal\"; })"
+        js_WebGPUCompareFunctionLessequal :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"greater\"; })"
+        js_WebGPUCompareFunctionGreater :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"notequal\"; })"
+        js_WebGPUCompareFunctionNotequal :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"greaterequal\"; })"
+        js_WebGPUCompareFunctionGreaterequal :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"always\"; })"
+        js_WebGPUCompareFunctionAlways :: JSVal
+ 
+data WebGPUPixelFormat = WebGPUPixelFormatBGRA8Unorm
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUPixelFormat where
+        pToJSVal WebGPUPixelFormatBGRA8Unorm
+          = js_WebGPUPixelFormatBGRA8Unorm
+ 
+instance ToJSVal WebGPUPixelFormat where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUPixelFormat where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPixelFormatBGRA8Unorm =
+            WebGPUPixelFormatBGRA8Unorm
+ 
+instance FromJSVal WebGPUPixelFormat where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"BGRA8Unorm\"; })"
+        js_WebGPUPixelFormatBGRA8Unorm :: JSVal
+ 
+data WebGPULoadAction = WebGPULoadActionDontcare
+                      | WebGPULoadActionLoad
+                      | WebGPULoadActionClear
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPULoadAction where
+        pToJSVal WebGPULoadActionDontcare = js_WebGPULoadActionDontcare
+        pToJSVal WebGPULoadActionLoad = js_WebGPULoadActionLoad
+        pToJSVal WebGPULoadActionClear = js_WebGPULoadActionClear
+ 
+instance ToJSVal WebGPULoadAction where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPULoadAction where
+        pFromJSVal x
+          | x `js_eq` js_WebGPULoadActionDontcare = WebGPULoadActionDontcare
+        pFromJSVal x
+          | x `js_eq` js_WebGPULoadActionLoad = WebGPULoadActionLoad
+        pFromJSVal x
+          | x `js_eq` js_WebGPULoadActionClear = WebGPULoadActionClear
+ 
+instance FromJSVal WebGPULoadAction where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"dontcare\"; })"
+        js_WebGPULoadActionDontcare :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"load\"; })" js_WebGPULoadActionLoad
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"clear\"; })"
+        js_WebGPULoadActionClear :: JSVal
+ 
+data WebGPUStoreAction = WebGPUStoreActionDontcare
+                       | WebGPUStoreActionStore
+                       | WebGPUStoreActionMultisampleresolve
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUStoreAction where
+        pToJSVal WebGPUStoreActionDontcare = js_WebGPUStoreActionDontcare
+        pToJSVal WebGPUStoreActionStore = js_WebGPUStoreActionStore
+        pToJSVal WebGPUStoreActionMultisampleresolve
+          = js_WebGPUStoreActionMultisampleresolve
+ 
+instance ToJSVal WebGPUStoreAction where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUStoreAction where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStoreActionDontcare =
+            WebGPUStoreActionDontcare
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStoreActionStore = WebGPUStoreActionStore
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStoreActionMultisampleresolve =
+            WebGPUStoreActionMultisampleresolve
+ 
+instance FromJSVal WebGPUStoreAction where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"dontcare\"; })"
+        js_WebGPUStoreActionDontcare :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"store\"; })"
+        js_WebGPUStoreActionStore :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"multisampleresolve\"; })"
+        js_WebGPUStoreActionMultisampleresolve :: JSVal
+ 
+data WebGPUPrimitiveType = WebGPUPrimitiveTypePoint
+                         | WebGPUPrimitiveTypeLine
+                         | WebGPUPrimitiveTypeLinestrip
+                         | WebGPUPrimitiveTypeTriangle
+                         | WebGPUPrimitiveTypeTrianglestrip
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUPrimitiveType where
+        pToJSVal WebGPUPrimitiveTypePoint = js_WebGPUPrimitiveTypePoint
+        pToJSVal WebGPUPrimitiveTypeLine = js_WebGPUPrimitiveTypeLine
+        pToJSVal WebGPUPrimitiveTypeLinestrip
+          = js_WebGPUPrimitiveTypeLinestrip
+        pToJSVal WebGPUPrimitiveTypeTriangle
+          = js_WebGPUPrimitiveTypeTriangle
+        pToJSVal WebGPUPrimitiveTypeTrianglestrip
+          = js_WebGPUPrimitiveTypeTrianglestrip
+ 
+instance ToJSVal WebGPUPrimitiveType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUPrimitiveType where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPrimitiveTypePoint = WebGPUPrimitiveTypePoint
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPrimitiveTypeLine = WebGPUPrimitiveTypeLine
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPrimitiveTypeLinestrip =
+            WebGPUPrimitiveTypeLinestrip
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPrimitiveTypeTriangle =
+            WebGPUPrimitiveTypeTriangle
+        pFromJSVal x
+          | x `js_eq` js_WebGPUPrimitiveTypeTrianglestrip =
+            WebGPUPrimitiveTypeTrianglestrip
+ 
+instance FromJSVal WebGPUPrimitiveType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"point\"; })"
+        js_WebGPUPrimitiveTypePoint :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"line\"; })"
+        js_WebGPUPrimitiveTypeLine :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"linestrip\"; })"
+        js_WebGPUPrimitiveTypeLinestrip :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"triangle\"; })"
+        js_WebGPUPrimitiveTypeTriangle :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"trianglestrip\"; })"
+        js_WebGPUPrimitiveTypeTrianglestrip :: JSVal
+ 
+data WebGPUFunctionType = WebGPUFunctionTypeFragment
+                        | WebGPUFunctionTypeVertex
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUFunctionType where
+        pToJSVal WebGPUFunctionTypeFragment = js_WebGPUFunctionTypeFragment
+        pToJSVal WebGPUFunctionTypeVertex = js_WebGPUFunctionTypeVertex
+ 
+instance ToJSVal WebGPUFunctionType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUFunctionType where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUFunctionTypeFragment =
+            WebGPUFunctionTypeFragment
+        pFromJSVal x
+          | x `js_eq` js_WebGPUFunctionTypeVertex = WebGPUFunctionTypeVertex
+ 
+instance FromJSVal WebGPUFunctionType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"fragment\"; })"
+        js_WebGPUFunctionTypeFragment :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"vertex\"; })"
+        js_WebGPUFunctionTypeVertex :: JSVal
+ 
+data WebGPUStencilOperation = WebGPUStencilOperationKeep
+                            | WebGPUStencilOperationZero
+                            | WebGPUStencilOperationReplace
+                            | WebGPUStencilOperationIncrementclamp
+                            | WebGPUStencilOperationDecrementclamp
+                            | WebGPUStencilOperationInvert
+                            | WebGPUStencilOperationIncrementwrap
+                            | WebGPUStencilOperationDecrementwrap
+                            deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUStencilOperation where
+        pToJSVal WebGPUStencilOperationKeep = js_WebGPUStencilOperationKeep
+        pToJSVal WebGPUStencilOperationZero = js_WebGPUStencilOperationZero
+        pToJSVal WebGPUStencilOperationReplace
+          = js_WebGPUStencilOperationReplace
+        pToJSVal WebGPUStencilOperationIncrementclamp
+          = js_WebGPUStencilOperationIncrementclamp
+        pToJSVal WebGPUStencilOperationDecrementclamp
+          = js_WebGPUStencilOperationDecrementclamp
+        pToJSVal WebGPUStencilOperationInvert
+          = js_WebGPUStencilOperationInvert
+        pToJSVal WebGPUStencilOperationIncrementwrap
+          = js_WebGPUStencilOperationIncrementwrap
+        pToJSVal WebGPUStencilOperationDecrementwrap
+          = js_WebGPUStencilOperationDecrementwrap
+ 
+instance ToJSVal WebGPUStencilOperation where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUStencilOperation where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationKeep =
+            WebGPUStencilOperationKeep
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationZero =
+            WebGPUStencilOperationZero
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationReplace =
+            WebGPUStencilOperationReplace
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationIncrementclamp =
+            WebGPUStencilOperationIncrementclamp
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationDecrementclamp =
+            WebGPUStencilOperationDecrementclamp
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationInvert =
+            WebGPUStencilOperationInvert
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationIncrementwrap =
+            WebGPUStencilOperationIncrementwrap
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStencilOperationDecrementwrap =
+            WebGPUStencilOperationDecrementwrap
+ 
+instance FromJSVal WebGPUStencilOperation where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"keep\"; })"
+        js_WebGPUStencilOperationKeep :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"zero\"; })"
+        js_WebGPUStencilOperationZero :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"replace\"; })"
+        js_WebGPUStencilOperationReplace :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"incrementclamp\"; })"
+        js_WebGPUStencilOperationIncrementclamp :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"decrementclamp\"; })"
+        js_WebGPUStencilOperationDecrementclamp :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"invert\"; })"
+        js_WebGPUStencilOperationInvert :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"incrementwrap\"; })"
+        js_WebGPUStencilOperationIncrementwrap :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"decrementwrap\"; })"
+        js_WebGPUStencilOperationDecrementwrap :: JSVal
+ 
+data WebGPUStatus = WebGPUStatusNotenqueued
+                  | WebGPUStatusEnqueued
+                  | WebGPUStatusCommitted
+                  | WebGPUStatusScheduled
+                  | WebGPUStatusCompleted
+                  | WebGPUStatusError
+                  deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUStatus where
+        pToJSVal WebGPUStatusNotenqueued = js_WebGPUStatusNotenqueued
+        pToJSVal WebGPUStatusEnqueued = js_WebGPUStatusEnqueued
+        pToJSVal WebGPUStatusCommitted = js_WebGPUStatusCommitted
+        pToJSVal WebGPUStatusScheduled = js_WebGPUStatusScheduled
+        pToJSVal WebGPUStatusCompleted = js_WebGPUStatusCompleted
+        pToJSVal WebGPUStatusError = js_WebGPUStatusError
+ 
+instance ToJSVal WebGPUStatus where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUStatus where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStatusNotenqueued = WebGPUStatusNotenqueued
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStatusEnqueued = WebGPUStatusEnqueued
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStatusCommitted = WebGPUStatusCommitted
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStatusScheduled = WebGPUStatusScheduled
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStatusCompleted = WebGPUStatusCompleted
+        pFromJSVal x | x `js_eq` js_WebGPUStatusError = WebGPUStatusError
+ 
+instance FromJSVal WebGPUStatus where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"notenqueued\"; })"
+        js_WebGPUStatusNotenqueued :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"enqueued\"; })"
+        js_WebGPUStatusEnqueued :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"committed\"; })"
+        js_WebGPUStatusCommitted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"scheduled\"; })"
+        js_WebGPUStatusScheduled :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"completed\"; })"
+        js_WebGPUStatusCompleted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"error\"; })" js_WebGPUStatusError
+        :: JSVal
+ 
+data WebGPUSamplerAddressMode = WebGPUSamplerAddressModeClamptoedge
+                              | WebGPUSamplerAddressModeMirrorclamptoedge
+                              | WebGPUSamplerAddressModeRepeat
+                              | WebGPUSamplerAddressModeMirrorrepeat
+                              | WebGPUSamplerAddressModeClamptozero
+                              deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUSamplerAddressMode where
+        pToJSVal WebGPUSamplerAddressModeClamptoedge
+          = js_WebGPUSamplerAddressModeClamptoedge
+        pToJSVal WebGPUSamplerAddressModeMirrorclamptoedge
+          = js_WebGPUSamplerAddressModeMirrorclamptoedge
+        pToJSVal WebGPUSamplerAddressModeRepeat
+          = js_WebGPUSamplerAddressModeRepeat
+        pToJSVal WebGPUSamplerAddressModeMirrorrepeat
+          = js_WebGPUSamplerAddressModeMirrorrepeat
+        pToJSVal WebGPUSamplerAddressModeClamptozero
+          = js_WebGPUSamplerAddressModeClamptozero
+ 
+instance ToJSVal WebGPUSamplerAddressMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUSamplerAddressMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerAddressModeClamptoedge =
+            WebGPUSamplerAddressModeClamptoedge
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerAddressModeMirrorclamptoedge =
+            WebGPUSamplerAddressModeMirrorclamptoedge
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerAddressModeRepeat =
+            WebGPUSamplerAddressModeRepeat
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerAddressModeMirrorrepeat =
+            WebGPUSamplerAddressModeMirrorrepeat
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerAddressModeClamptozero =
+            WebGPUSamplerAddressModeClamptozero
+ 
+instance FromJSVal WebGPUSamplerAddressMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"clamptoedge\"; })"
+        js_WebGPUSamplerAddressModeClamptoedge :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"mirrorclamptoedge\"; })"
+        js_WebGPUSamplerAddressModeMirrorclamptoedge :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"repeat\"; })"
+        js_WebGPUSamplerAddressModeRepeat :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"mirrorrepeat\"; })"
+        js_WebGPUSamplerAddressModeMirrorrepeat :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"clamptozero\"; })"
+        js_WebGPUSamplerAddressModeClamptozero :: JSVal
+ 
+data WebGPUSamplerMinMagFilter = WebGPUSamplerMinMagFilterNearest
+                               | WebGPUSamplerMinMagFilterLinear
+                               deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUSamplerMinMagFilter where
+        pToJSVal WebGPUSamplerMinMagFilterNearest
+          = js_WebGPUSamplerMinMagFilterNearest
+        pToJSVal WebGPUSamplerMinMagFilterLinear
+          = js_WebGPUSamplerMinMagFilterLinear
+ 
+instance ToJSVal WebGPUSamplerMinMagFilter where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUSamplerMinMagFilter where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerMinMagFilterNearest =
+            WebGPUSamplerMinMagFilterNearest
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerMinMagFilterLinear =
+            WebGPUSamplerMinMagFilterLinear
+ 
+instance FromJSVal WebGPUSamplerMinMagFilter where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"nearest\"; })"
+        js_WebGPUSamplerMinMagFilterNearest :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"linear\"; })"
+        js_WebGPUSamplerMinMagFilterLinear :: JSVal
+ 
+data WebGPUSamplerMipFilter = WebGPUSamplerMipFilterNotmipmapped
+                            | WebGPUSamplerMipFilterNearest
+                            | WebGPUSamplerMipFilterLinear
+                            deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUSamplerMipFilter where
+        pToJSVal WebGPUSamplerMipFilterNotmipmapped
+          = js_WebGPUSamplerMipFilterNotmipmapped
+        pToJSVal WebGPUSamplerMipFilterNearest
+          = js_WebGPUSamplerMipFilterNearest
+        pToJSVal WebGPUSamplerMipFilterLinear
+          = js_WebGPUSamplerMipFilterLinear
+ 
+instance ToJSVal WebGPUSamplerMipFilter where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUSamplerMipFilter where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerMipFilterNotmipmapped =
+            WebGPUSamplerMipFilterNotmipmapped
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerMipFilterNearest =
+            WebGPUSamplerMipFilterNearest
+        pFromJSVal x
+          | x `js_eq` js_WebGPUSamplerMipFilterLinear =
+            WebGPUSamplerMipFilterLinear
+ 
+instance FromJSVal WebGPUSamplerMipFilter where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"notmipmapped\"; })"
+        js_WebGPUSamplerMipFilterNotmipmapped :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"nearest\"; })"
+        js_WebGPUSamplerMipFilterNearest :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"linear\"; })"
+        js_WebGPUSamplerMipFilterLinear :: JSVal
+ 
+data WebGPUCullMode = WebGPUCullModeNone
+                    | WebGPUCullModeFront
+                    | WebGPUCullModeBack
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUCullMode where
+        pToJSVal WebGPUCullModeNone = js_WebGPUCullModeNone
+        pToJSVal WebGPUCullModeFront = js_WebGPUCullModeFront
+        pToJSVal WebGPUCullModeBack = js_WebGPUCullModeBack
+ 
+instance ToJSVal WebGPUCullMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUCullMode where
+        pFromJSVal x | x `js_eq` js_WebGPUCullModeNone = WebGPUCullModeNone
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCullModeFront = WebGPUCullModeFront
+        pFromJSVal x | x `js_eq` js_WebGPUCullModeBack = WebGPUCullModeBack
+ 
+instance FromJSVal WebGPUCullMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"none\"; })" js_WebGPUCullModeNone
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"front\"; })" js_WebGPUCullModeFront
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"back\"; })" js_WebGPUCullModeBack
+        :: JSVal
+ 
+data WebGPUIndexType = WebGPUIndexTypeUint16
+                     | WebGPUIndexTypeUint32
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUIndexType where
+        pToJSVal WebGPUIndexTypeUint16 = js_WebGPUIndexTypeUint16
+        pToJSVal WebGPUIndexTypeUint32 = js_WebGPUIndexTypeUint32
+ 
+instance ToJSVal WebGPUIndexType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUIndexType where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUIndexTypeUint16 = WebGPUIndexTypeUint16
+        pFromJSVal x
+          | x `js_eq` js_WebGPUIndexTypeUint32 = WebGPUIndexTypeUint32
+ 
+instance FromJSVal WebGPUIndexType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"uint16\"; })"
+        js_WebGPUIndexTypeUint16 :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"uint32\"; })"
+        js_WebGPUIndexTypeUint32 :: JSVal
+ 
+data WebGPUVisibilityResultMode = WebGPUVisibilityResultModeDisabled
+                                | WebGPUVisibilityResultModeBoolean
+                                | WebGPUVisibilityResultModeCounting
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUVisibilityResultMode where
+        pToJSVal WebGPUVisibilityResultModeDisabled
+          = js_WebGPUVisibilityResultModeDisabled
+        pToJSVal WebGPUVisibilityResultModeBoolean
+          = js_WebGPUVisibilityResultModeBoolean
+        pToJSVal WebGPUVisibilityResultModeCounting
+          = js_WebGPUVisibilityResultModeCounting
+ 
+instance ToJSVal WebGPUVisibilityResultMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUVisibilityResultMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUVisibilityResultModeDisabled =
+            WebGPUVisibilityResultModeDisabled
+        pFromJSVal x
+          | x `js_eq` js_WebGPUVisibilityResultModeBoolean =
+            WebGPUVisibilityResultModeBoolean
+        pFromJSVal x
+          | x `js_eq` js_WebGPUVisibilityResultModeCounting =
+            WebGPUVisibilityResultModeCounting
+ 
+instance FromJSVal WebGPUVisibilityResultMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"disabled\"; })"
+        js_WebGPUVisibilityResultModeDisabled :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"boolean\"; })"
+        js_WebGPUVisibilityResultModeBoolean :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"counting\"; })"
+        js_WebGPUVisibilityResultModeCounting :: JSVal
+ 
+data WebGPUWinding = WebGPUWindingClockwise
+                   | WebGPUWindingCounterclockwise
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUWinding where
+        pToJSVal WebGPUWindingClockwise = js_WebGPUWindingClockwise
+        pToJSVal WebGPUWindingCounterclockwise
+          = js_WebGPUWindingCounterclockwise
+ 
+instance ToJSVal WebGPUWinding where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUWinding where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUWindingClockwise = WebGPUWindingClockwise
+        pFromJSVal x
+          | x `js_eq` js_WebGPUWindingCounterclockwise =
+            WebGPUWindingCounterclockwise
+ 
+instance FromJSVal WebGPUWinding where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"clockwise\"; })"
+        js_WebGPUWindingClockwise :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"counterclockwise\"; })"
+        js_WebGPUWindingCounterclockwise :: JSVal
+ 
+data WebGPUDepthClipMode = WebGPUDepthClipModeClip
+                         | WebGPUDepthClipModeClamp
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUDepthClipMode where
+        pToJSVal WebGPUDepthClipModeClip = js_WebGPUDepthClipModeClip
+        pToJSVal WebGPUDepthClipModeClamp = js_WebGPUDepthClipModeClamp
+ 
+instance ToJSVal WebGPUDepthClipMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUDepthClipMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUDepthClipModeClip = WebGPUDepthClipModeClip
+        pFromJSVal x
+          | x `js_eq` js_WebGPUDepthClipModeClamp = WebGPUDepthClipModeClamp
+ 
+instance FromJSVal WebGPUDepthClipMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"clip\"; })"
+        js_WebGPUDepthClipModeClip :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"clamp\"; })"
+        js_WebGPUDepthClipModeClamp :: JSVal
+ 
+data WebGPUTriangleFillMode = WebGPUTriangleFillModeFill
+                            | WebGPUTriangleFillModeLines
+                            deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUTriangleFillMode where
+        pToJSVal WebGPUTriangleFillModeFill = js_WebGPUTriangleFillModeFill
+        pToJSVal WebGPUTriangleFillModeLines
+          = js_WebGPUTriangleFillModeLines
+ 
+instance ToJSVal WebGPUTriangleFillMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUTriangleFillMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTriangleFillModeFill =
+            WebGPUTriangleFillModeFill
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTriangleFillModeLines =
+            WebGPUTriangleFillModeLines
+ 
+instance FromJSVal WebGPUTriangleFillMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"fill\"; })"
+        js_WebGPUTriangleFillModeFill :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"lines\"; })"
+        js_WebGPUTriangleFillModeLines :: JSVal
+ 
+data WebGPUCPUCacheMode = WebGPUCPUCacheModeDefaultcache
+                        | WebGPUCPUCacheModeWritecombined
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUCPUCacheMode where
+        pToJSVal WebGPUCPUCacheModeDefaultcache
+          = js_WebGPUCPUCacheModeDefaultcache
+        pToJSVal WebGPUCPUCacheModeWritecombined
+          = js_WebGPUCPUCacheModeWritecombined
+ 
+instance ToJSVal WebGPUCPUCacheMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUCPUCacheMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCPUCacheModeDefaultcache =
+            WebGPUCPUCacheModeDefaultcache
+        pFromJSVal x
+          | x `js_eq` js_WebGPUCPUCacheModeWritecombined =
+            WebGPUCPUCacheModeWritecombined
+ 
+instance FromJSVal WebGPUCPUCacheMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"defaultcache\"; })"
+        js_WebGPUCPUCacheModeDefaultcache :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"writecombined\"; })"
+        js_WebGPUCPUCacheModeWritecombined :: JSVal
+ 
+data WebGPUStorageMode = WebGPUStorageModeShared
+                       | WebGPUStorageModeManaged
+                       | WebGPUStorageModePrivate
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUStorageMode where
+        pToJSVal WebGPUStorageModeShared = js_WebGPUStorageModeShared
+        pToJSVal WebGPUStorageModeManaged = js_WebGPUStorageModeManaged
+        pToJSVal WebGPUStorageModePrivate = js_WebGPUStorageModePrivate
+ 
+instance ToJSVal WebGPUStorageMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUStorageMode where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStorageModeShared = WebGPUStorageModeShared
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStorageModeManaged = WebGPUStorageModeManaged
+        pFromJSVal x
+          | x `js_eq` js_WebGPUStorageModePrivate = WebGPUStorageModePrivate
+ 
+instance FromJSVal WebGPUStorageMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"shared\"; })"
+        js_WebGPUStorageModeShared :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"managed\"; })"
+        js_WebGPUStorageModeManaged :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"private\"; })"
+        js_WebGPUStorageModePrivate :: JSVal
+ 
+data WebGPUResourceOptions = WebGPUResourceOptionsCpucachemodedefaultcache
+                           | WebGPUResourceOptionsCpucachemodewritecombined
+                           | WebGPUResourceOptionsStoragemodeshared
+                           | WebGPUResourceOptionsStoragemodemanaged
+                           | WebGPUResourceOptionsStoragemodeprivate
+                           | WebGPUResourceOptionsOptioncpucachemodedefaultcache
+                           | WebGPUResourceOptionsOptioncpucachemodewritecombined
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUResourceOptions where
+        pToJSVal WebGPUResourceOptionsCpucachemodedefaultcache
+          = js_WebGPUResourceOptionsCpucachemodedefaultcache
+        pToJSVal WebGPUResourceOptionsCpucachemodewritecombined
+          = js_WebGPUResourceOptionsCpucachemodewritecombined
+        pToJSVal WebGPUResourceOptionsStoragemodeshared
+          = js_WebGPUResourceOptionsStoragemodeshared
+        pToJSVal WebGPUResourceOptionsStoragemodemanaged
+          = js_WebGPUResourceOptionsStoragemodemanaged
+        pToJSVal WebGPUResourceOptionsStoragemodeprivate
+          = js_WebGPUResourceOptionsStoragemodeprivate
+        pToJSVal WebGPUResourceOptionsOptioncpucachemodedefaultcache
+          = js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
+        pToJSVal WebGPUResourceOptionsOptioncpucachemodewritecombined
+          = js_WebGPUResourceOptionsOptioncpucachemodewritecombined
+ 
+instance ToJSVal WebGPUResourceOptions where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUResourceOptions where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsCpucachemodedefaultcache =
+            WebGPUResourceOptionsCpucachemodedefaultcache
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsCpucachemodewritecombined =
+            WebGPUResourceOptionsCpucachemodewritecombined
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsStoragemodeshared =
+            WebGPUResourceOptionsStoragemodeshared
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsStoragemodemanaged =
+            WebGPUResourceOptionsStoragemodemanaged
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsStoragemodeprivate =
+            WebGPUResourceOptionsStoragemodeprivate
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsOptioncpucachemodedefaultcache
+            = WebGPUResourceOptionsOptioncpucachemodedefaultcache
+        pFromJSVal x
+          | x `js_eq` js_WebGPUResourceOptionsOptioncpucachemodewritecombined
+            = WebGPUResourceOptionsOptioncpucachemodewritecombined
+ 
+instance FromJSVal WebGPUResourceOptions where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"cpucachemodedefaultcache\"; })"
+        js_WebGPUResourceOptionsCpucachemodedefaultcache :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"cpucachemodewritecombined\"; })"
+        js_WebGPUResourceOptionsCpucachemodewritecombined :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"storagemodeshared\"; })"
+        js_WebGPUResourceOptionsStoragemodeshared :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"storagemodemanaged\"; })"
+        js_WebGPUResourceOptionsStoragemodemanaged :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"storagemodeprivate\"; })"
+        js_WebGPUResourceOptionsStoragemodeprivate :: JSVal
+ 
+foreign import javascript unsafe
+        "(() => { return \"optioncpucachemodedefaultcache\"; })"
+        js_WebGPUResourceOptionsOptioncpucachemodedefaultcache :: JSVal
+ 
+foreign import javascript unsafe
+        "(() => { return \"optioncpucachemodewritecombined\"; })"
+        js_WebGPUResourceOptionsOptioncpucachemodewritecombined :: JSVal
+ 
+data WebGPUTextureUsage = WebGPUTextureUsageUnknown
+                        | WebGPUTextureUsageShaderread
+                        | WebGPUTextureUsageShaderwrite
+                        | WebGPUTextureUsageRendertarget
+                        | WebGPUTextureUsagePixelformatview
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUTextureUsage where
+        pToJSVal WebGPUTextureUsageUnknown = js_WebGPUTextureUsageUnknown
+        pToJSVal WebGPUTextureUsageShaderread
+          = js_WebGPUTextureUsageShaderread
+        pToJSVal WebGPUTextureUsageShaderwrite
+          = js_WebGPUTextureUsageShaderwrite
+        pToJSVal WebGPUTextureUsageRendertarget
+          = js_WebGPUTextureUsageRendertarget
+        pToJSVal WebGPUTextureUsagePixelformatview
+          = js_WebGPUTextureUsagePixelformatview
+ 
+instance ToJSVal WebGPUTextureUsage where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUTextureUsage where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTextureUsageUnknown =
+            WebGPUTextureUsageUnknown
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTextureUsageShaderread =
+            WebGPUTextureUsageShaderread
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTextureUsageShaderwrite =
+            WebGPUTextureUsageShaderwrite
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTextureUsageRendertarget =
+            WebGPUTextureUsageRendertarget
+        pFromJSVal x
+          | x `js_eq` js_WebGPUTextureUsagePixelformatview =
+            WebGPUTextureUsagePixelformatview
+ 
+instance FromJSVal WebGPUTextureUsage where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"unknown\"; })"
+        js_WebGPUTextureUsageUnknown :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"shaderread\"; })"
+        js_WebGPUTextureUsageShaderread :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"shaderwrite\"; })"
+        js_WebGPUTextureUsageShaderwrite :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"rendertarget\"; })"
+        js_WebGPUTextureUsageRendertarget :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"pixelformatview\"; })"
+        js_WebGPUTextureUsagePixelformatview :: JSVal
+ 
+data WebGPUBlendOperation = WebGPUBlendOperationAdd
+                          | WebGPUBlendOperationSubtract
+                          | WebGPUBlendOperationReversesubtract
+                          | WebGPUBlendOperationMin
+                          | WebGPUBlendOperationMax
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUBlendOperation where
+        pToJSVal WebGPUBlendOperationAdd = js_WebGPUBlendOperationAdd
+        pToJSVal WebGPUBlendOperationSubtract
+          = js_WebGPUBlendOperationSubtract
+        pToJSVal WebGPUBlendOperationReversesubtract
+          = js_WebGPUBlendOperationReversesubtract
+        pToJSVal WebGPUBlendOperationMin = js_WebGPUBlendOperationMin
+        pToJSVal WebGPUBlendOperationMax = js_WebGPUBlendOperationMax
+ 
+instance ToJSVal WebGPUBlendOperation where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUBlendOperation where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendOperationAdd = WebGPUBlendOperationAdd
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendOperationSubtract =
+            WebGPUBlendOperationSubtract
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendOperationReversesubtract =
+            WebGPUBlendOperationReversesubtract
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendOperationMin = WebGPUBlendOperationMin
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendOperationMax = WebGPUBlendOperationMax
+ 
+instance FromJSVal WebGPUBlendOperation where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"add\"; })"
+        js_WebGPUBlendOperationAdd :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"subtract\"; })"
+        js_WebGPUBlendOperationSubtract :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"reversesubtract\"; })"
+        js_WebGPUBlendOperationReversesubtract :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"min\"; })"
+        js_WebGPUBlendOperationMin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"max\"; })"
+        js_WebGPUBlendOperationMax :: JSVal
+ 
+data WebGPUBlendFactor = WebGPUBlendFactorZero
+                       | WebGPUBlendFactorOne
+                       | WebGPUBlendFactorSourcecolor
+                       | WebGPUBlendFactorOneminussourcecolor
+                       | WebGPUBlendFactorSourcealpha
+                       | WebGPUBlendFactorOneminussourcealpha
+                       | WebGPUBlendFactorDestinationcolor
+                       | WebGPUBlendFactorOneminusdestinationcolor
+                       | WebGPUBlendFactorDestinationalpha
+                       | WebGPUBlendFactorOneminusdestinationalpha
+                       | WebGPUBlendFactorSourcealphasaturated
+                       | WebGPUBlendFactorBlendcolor
+                       | WebGPUBlendFactorOneminusblendcolor
+                       | WebGPUBlendFactorBlendalpha
+                       | WebGPUBlendFactorOneminusblendalpha
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUBlendFactor where
+        pToJSVal WebGPUBlendFactorZero = js_WebGPUBlendFactorZero
+        pToJSVal WebGPUBlendFactorOne = js_WebGPUBlendFactorOne
+        pToJSVal WebGPUBlendFactorSourcecolor
+          = js_WebGPUBlendFactorSourcecolor
+        pToJSVal WebGPUBlendFactorOneminussourcecolor
+          = js_WebGPUBlendFactorOneminussourcecolor
+        pToJSVal WebGPUBlendFactorSourcealpha
+          = js_WebGPUBlendFactorSourcealpha
+        pToJSVal WebGPUBlendFactorOneminussourcealpha
+          = js_WebGPUBlendFactorOneminussourcealpha
+        pToJSVal WebGPUBlendFactorDestinationcolor
+          = js_WebGPUBlendFactorDestinationcolor
+        pToJSVal WebGPUBlendFactorOneminusdestinationcolor
+          = js_WebGPUBlendFactorOneminusdestinationcolor
+        pToJSVal WebGPUBlendFactorDestinationalpha
+          = js_WebGPUBlendFactorDestinationalpha
+        pToJSVal WebGPUBlendFactorOneminusdestinationalpha
+          = js_WebGPUBlendFactorOneminusdestinationalpha
+        pToJSVal WebGPUBlendFactorSourcealphasaturated
+          = js_WebGPUBlendFactorSourcealphasaturated
+        pToJSVal WebGPUBlendFactorBlendcolor
+          = js_WebGPUBlendFactorBlendcolor
+        pToJSVal WebGPUBlendFactorOneminusblendcolor
+          = js_WebGPUBlendFactorOneminusblendcolor
+        pToJSVal WebGPUBlendFactorBlendalpha
+          = js_WebGPUBlendFactorBlendalpha
+        pToJSVal WebGPUBlendFactorOneminusblendalpha
+          = js_WebGPUBlendFactorOneminusblendalpha
+ 
+instance ToJSVal WebGPUBlendFactor where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUBlendFactor where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorZero = WebGPUBlendFactorZero
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOne = WebGPUBlendFactorOne
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorSourcecolor =
+            WebGPUBlendFactorSourcecolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminussourcecolor =
+            WebGPUBlendFactorOneminussourcecolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorSourcealpha =
+            WebGPUBlendFactorSourcealpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminussourcealpha =
+            WebGPUBlendFactorOneminussourcealpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorDestinationcolor =
+            WebGPUBlendFactorDestinationcolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminusdestinationcolor =
+            WebGPUBlendFactorOneminusdestinationcolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorDestinationalpha =
+            WebGPUBlendFactorDestinationalpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminusdestinationalpha =
+            WebGPUBlendFactorOneminusdestinationalpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorSourcealphasaturated =
+            WebGPUBlendFactorSourcealphasaturated
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorBlendcolor =
+            WebGPUBlendFactorBlendcolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminusblendcolor =
+            WebGPUBlendFactorOneminusblendcolor
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorBlendalpha =
+            WebGPUBlendFactorBlendalpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUBlendFactorOneminusblendalpha =
+            WebGPUBlendFactorOneminusblendalpha
+ 
+instance FromJSVal WebGPUBlendFactor where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"zero\"; })"
+        js_WebGPUBlendFactorZero :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"one\"; })" js_WebGPUBlendFactorOne
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sourcecolor\"; })"
+        js_WebGPUBlendFactorSourcecolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminussourcecolor\"; })"
+        js_WebGPUBlendFactorOneminussourcecolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sourcealpha\"; })"
+        js_WebGPUBlendFactorSourcealpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminussourcealpha\"; })"
+        js_WebGPUBlendFactorOneminussourcealpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"destinationcolor\"; })"
+        js_WebGPUBlendFactorDestinationcolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminusdestinationcolor\"; })"
+        js_WebGPUBlendFactorOneminusdestinationcolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"destinationalpha\"; })"
+        js_WebGPUBlendFactorDestinationalpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminusdestinationalpha\"; })"
+        js_WebGPUBlendFactorOneminusdestinationalpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sourcealphasaturated\"; })"
+        js_WebGPUBlendFactorSourcealphasaturated :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"blendcolor\"; })"
+        js_WebGPUBlendFactorBlendcolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminusblendcolor\"; })"
+        js_WebGPUBlendFactorOneminusblendcolor :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"blendalpha\"; })"
+        js_WebGPUBlendFactorBlendalpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"oneminusblendalpha\"; })"
+        js_WebGPUBlendFactorOneminusblendalpha :: JSVal
+ 
+data WebGPUColorWriteMask = WebGPUColorWriteMaskNone
+                          | WebGPUColorWriteMaskRed
+                          | WebGPUColorWriteMaskGreen
+                          | WebGPUColorWriteMaskBlue
+                          | WebGPUColorWriteMaskAlpha
+                          | WebGPUColorWriteMaskAll
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUColorWriteMask where
+        pToJSVal WebGPUColorWriteMaskNone = js_WebGPUColorWriteMaskNone
+        pToJSVal WebGPUColorWriteMaskRed = js_WebGPUColorWriteMaskRed
+        pToJSVal WebGPUColorWriteMaskGreen = js_WebGPUColorWriteMaskGreen
+        pToJSVal WebGPUColorWriteMaskBlue = js_WebGPUColorWriteMaskBlue
+        pToJSVal WebGPUColorWriteMaskAlpha = js_WebGPUColorWriteMaskAlpha
+        pToJSVal WebGPUColorWriteMaskAll = js_WebGPUColorWriteMaskAll
+ 
+instance ToJSVal WebGPUColorWriteMask where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUColorWriteMask where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskNone = WebGPUColorWriteMaskNone
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskRed = WebGPUColorWriteMaskRed
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskGreen =
+            WebGPUColorWriteMaskGreen
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskBlue = WebGPUColorWriteMaskBlue
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskAlpha =
+            WebGPUColorWriteMaskAlpha
+        pFromJSVal x
+          | x `js_eq` js_WebGPUColorWriteMaskAll = WebGPUColorWriteMaskAll
+ 
+instance FromJSVal WebGPUColorWriteMask where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"none\"; })"
+        js_WebGPUColorWriteMaskNone :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"red\"; })"
+        js_WebGPUColorWriteMaskRed :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"green\"; })"
+        js_WebGPUColorWriteMaskGreen :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"blue\"; })"
+        js_WebGPUColorWriteMaskBlue :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"alpha\"; })"
+        js_WebGPUColorWriteMaskAlpha :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"all\"; })"
+        js_WebGPUColorWriteMaskAll :: JSVal
+ 
+data WebGPUMultisampleDepthResolveFilter = WebGPUMultisampleDepthResolveFilterSample0
+                                         | WebGPUMultisampleDepthResolveFilterMin
+                                         | WebGPUMultisampleDepthResolveFilterMax
+                                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUMultisampleDepthResolveFilter where
+        pToJSVal WebGPUMultisampleDepthResolveFilterSample0
+          = js_WebGPUMultisampleDepthResolveFilterSample0
+        pToJSVal WebGPUMultisampleDepthResolveFilterMin
+          = js_WebGPUMultisampleDepthResolveFilterMin
+        pToJSVal WebGPUMultisampleDepthResolveFilterMax
+          = js_WebGPUMultisampleDepthResolveFilterMax
+ 
+instance ToJSVal WebGPUMultisampleDepthResolveFilter where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUMultisampleDepthResolveFilter where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterSample0 =
+            WebGPUMultisampleDepthResolveFilterSample0
+        pFromJSVal x
+          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterMin =
+            WebGPUMultisampleDepthResolveFilterMin
+        pFromJSVal x
+          | x `js_eq` js_WebGPUMultisampleDepthResolveFilterMax =
+            WebGPUMultisampleDepthResolveFilterMax
+ 
+instance FromJSVal WebGPUMultisampleDepthResolveFilter where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"sample0\"; })"
+        js_WebGPUMultisampleDepthResolveFilterSample0 :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"min\"; })"
+        js_WebGPUMultisampleDepthResolveFilterMin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"max\"; })"
+        js_WebGPUMultisampleDepthResolveFilterMax :: JSVal
+ 
+data WebGPUFeatureSet = WebGPUFeatureSetLevel1
+                      | WebGPUFeatureSetLevel2
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal WebGPUFeatureSet where
+        pToJSVal WebGPUFeatureSetLevel1 = js_WebGPUFeatureSetLevel1
+        pToJSVal WebGPUFeatureSetLevel2 = js_WebGPUFeatureSetLevel2
+ 
+instance ToJSVal WebGPUFeatureSet where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal WebGPUFeatureSet where
+        pFromJSVal x
+          | x `js_eq` js_WebGPUFeatureSetLevel1 = WebGPUFeatureSetLevel1
+        pFromJSVal x
+          | x `js_eq` js_WebGPUFeatureSetLevel2 = WebGPUFeatureSetLevel2
+ 
+instance FromJSVal WebGPUFeatureSet where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"level1\"; })"
+        js_WebGPUFeatureSetLevel1 :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"level2\"; })"
+        js_WebGPUFeatureSetLevel2 :: JSVal
+ 
+data VideoPresentationMode = VideoPresentationModeFullscreen
+                           | VideoPresentationModePictureInPicture
+                           | VideoPresentationModeInline
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal VideoPresentationMode where
+        pToJSVal VideoPresentationModeFullscreen
+          = js_VideoPresentationModeFullscreen
+        pToJSVal VideoPresentationModePictureInPicture
+          = js_VideoPresentationModePictureInPicture
+        pToJSVal VideoPresentationModeInline
+          = js_VideoPresentationModeInline
+ 
+instance ToJSVal VideoPresentationMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal VideoPresentationMode where
+        pFromJSVal x
+          | x `js_eq` js_VideoPresentationModeFullscreen =
+            VideoPresentationModeFullscreen
+        pFromJSVal x
+          | x `js_eq` js_VideoPresentationModePictureInPicture =
+            VideoPresentationModePictureInPicture
+        pFromJSVal x
+          | x `js_eq` js_VideoPresentationModeInline =
+            VideoPresentationModeInline
+ 
+instance FromJSVal VideoPresentationMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"fullscreen\"; })"
+        js_VideoPresentationModeFullscreen :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"picture-in-picture\"; })"
+        js_VideoPresentationModePictureInPicture :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"inline\"; })"
+        js_VideoPresentationModeInline :: JSVal
+ 
+data TextTrackMode = TextTrackModeDisabled
+                   | TextTrackModeHidden
+                   | TextTrackModeShowing
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal TextTrackMode where
+        pToJSVal TextTrackModeDisabled = js_TextTrackModeDisabled
+        pToJSVal TextTrackModeHidden = js_TextTrackModeHidden
+        pToJSVal TextTrackModeShowing = js_TextTrackModeShowing
+ 
+instance ToJSVal TextTrackMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal TextTrackMode where
+        pFromJSVal x
+          | x `js_eq` js_TextTrackModeDisabled = TextTrackModeDisabled
+        pFromJSVal x
+          | x `js_eq` js_TextTrackModeHidden = TextTrackModeHidden
+        pFromJSVal x
+          | x `js_eq` js_TextTrackModeShowing = TextTrackModeShowing
+ 
+instance FromJSVal TextTrackMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"disabled\"; })"
+        js_TextTrackModeDisabled :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"hidden\"; })"
+        js_TextTrackModeHidden :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"showing\"; })"
+        js_TextTrackModeShowing :: JSVal
+ 
+data TextTrackKind = TextTrackKindSubtitles
+                   | TextTrackKindCaptions
+                   | TextTrackKindDescriptions
+                   | TextTrackKindChapters
+                   | TextTrackKindMetadata
+                   | TextTrackKindForced
+                   deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal TextTrackKind where
+        pToJSVal TextTrackKindSubtitles = js_TextTrackKindSubtitles
+        pToJSVal TextTrackKindCaptions = js_TextTrackKindCaptions
+        pToJSVal TextTrackKindDescriptions = js_TextTrackKindDescriptions
+        pToJSVal TextTrackKindChapters = js_TextTrackKindChapters
+        pToJSVal TextTrackKindMetadata = js_TextTrackKindMetadata
+        pToJSVal TextTrackKindForced = js_TextTrackKindForced
+ 
+instance ToJSVal TextTrackKind where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal TextTrackKind where
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindSubtitles = TextTrackKindSubtitles
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindCaptions = TextTrackKindCaptions
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindDescriptions =
+            TextTrackKindDescriptions
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindChapters = TextTrackKindChapters
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindMetadata = TextTrackKindMetadata
+        pFromJSVal x
+          | x `js_eq` js_TextTrackKindForced = TextTrackKindForced
+ 
+instance FromJSVal TextTrackKind where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"subtitles\"; })"
+        js_TextTrackKindSubtitles :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"captions\"; })"
+        js_TextTrackKindCaptions :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"descriptions\"; })"
+        js_TextTrackKindDescriptions :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"chapters\"; })"
+        js_TextTrackKindChapters :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"metadata\"; })"
+        js_TextTrackKindMetadata :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"forced\"; })"
+        js_TextTrackKindForced :: JSVal
+ 
+data ApplePayErrorCode = ApplePayErrorCodeUnknown
+                       | ApplePayErrorCodeShippingContactInvalid
+                       | ApplePayErrorCodeBillingContactInvalid
+                       | ApplePayErrorCodeAddressUnservicable
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayErrorCode where
+        pToJSVal ApplePayErrorCodeUnknown = js_ApplePayErrorCodeUnknown
+        pToJSVal ApplePayErrorCodeShippingContactInvalid
+          = js_ApplePayErrorCodeShippingContactInvalid
+        pToJSVal ApplePayErrorCodeBillingContactInvalid
+          = js_ApplePayErrorCodeBillingContactInvalid
+        pToJSVal ApplePayErrorCodeAddressUnservicable
+          = js_ApplePayErrorCodeAddressUnservicable
+ 
+instance ToJSVal ApplePayErrorCode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayErrorCode where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorCodeUnknown = ApplePayErrorCodeUnknown
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorCodeShippingContactInvalid =
+            ApplePayErrorCodeShippingContactInvalid
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorCodeBillingContactInvalid =
+            ApplePayErrorCodeBillingContactInvalid
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorCodeAddressUnservicable =
+            ApplePayErrorCodeAddressUnservicable
+ 
+instance FromJSVal ApplePayErrorCode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"unknown\"; })"
+        js_ApplePayErrorCodeUnknown :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"shippingContactInvalid\"; })"
+        js_ApplePayErrorCodeShippingContactInvalid :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"billingContactInvalid\"; })"
+        js_ApplePayErrorCodeBillingContactInvalid :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"addressUnservicable\"; })"
+        js_ApplePayErrorCodeAddressUnservicable :: JSVal
+ 
+data ApplePayErrorContactField = ApplePayErrorContactFieldPhoneNumber
+                               | ApplePayErrorContactFieldEmailAddress
+                               | ApplePayErrorContactFieldName
+                               | ApplePayErrorContactFieldPostalAddress
+                               | ApplePayErrorContactFieldAddressLines
+                               | ApplePayErrorContactFieldLocality
+                               | ApplePayErrorContactFieldPostalCode
+                               | ApplePayErrorContactFieldAdministrativeArea
+                               | ApplePayErrorContactFieldCountry
+                               deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayErrorContactField where
+        pToJSVal ApplePayErrorContactFieldPhoneNumber
+          = js_ApplePayErrorContactFieldPhoneNumber
+        pToJSVal ApplePayErrorContactFieldEmailAddress
+          = js_ApplePayErrorContactFieldEmailAddress
+        pToJSVal ApplePayErrorContactFieldName
+          = js_ApplePayErrorContactFieldName
+        pToJSVal ApplePayErrorContactFieldPostalAddress
+          = js_ApplePayErrorContactFieldPostalAddress
+        pToJSVal ApplePayErrorContactFieldAddressLines
+          = js_ApplePayErrorContactFieldAddressLines
+        pToJSVal ApplePayErrorContactFieldLocality
+          = js_ApplePayErrorContactFieldLocality
+        pToJSVal ApplePayErrorContactFieldPostalCode
+          = js_ApplePayErrorContactFieldPostalCode
+        pToJSVal ApplePayErrorContactFieldAdministrativeArea
+          = js_ApplePayErrorContactFieldAdministrativeArea
+        pToJSVal ApplePayErrorContactFieldCountry
+          = js_ApplePayErrorContactFieldCountry
+ 
+instance ToJSVal ApplePayErrorContactField where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayErrorContactField where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldPhoneNumber =
+            ApplePayErrorContactFieldPhoneNumber
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldEmailAddress =
+            ApplePayErrorContactFieldEmailAddress
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldName =
+            ApplePayErrorContactFieldName
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldPostalAddress =
+            ApplePayErrorContactFieldPostalAddress
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldAddressLines =
+            ApplePayErrorContactFieldAddressLines
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldLocality =
+            ApplePayErrorContactFieldLocality
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldPostalCode =
+            ApplePayErrorContactFieldPostalCode
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldAdministrativeArea =
+            ApplePayErrorContactFieldAdministrativeArea
+        pFromJSVal x
+          | x `js_eq` js_ApplePayErrorContactFieldCountry =
+            ApplePayErrorContactFieldCountry
+ 
+instance FromJSVal ApplePayErrorContactField where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"phoneNumber\"; })"
+        js_ApplePayErrorContactFieldPhoneNumber :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"emailAddress\"; })"
+        js_ApplePayErrorContactFieldEmailAddress :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"name\"; })"
+        js_ApplePayErrorContactFieldName :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"postalAddress\"; })"
+        js_ApplePayErrorContactFieldPostalAddress :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"addressLines\"; })"
+        js_ApplePayErrorContactFieldAddressLines :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"locality\"; })"
+        js_ApplePayErrorContactFieldLocality :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"postalCode\"; })"
+        js_ApplePayErrorContactFieldPostalCode :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"administrativeArea\"; })"
+        js_ApplePayErrorContactFieldAdministrativeArea :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"country\"; })"
+        js_ApplePayErrorContactFieldCountry :: JSVal
+ 
+data ApplePayLineItemType = ApplePayLineItemTypePending
+                          | ApplePayLineItemTypeFinal
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayLineItemType where
+        pToJSVal ApplePayLineItemTypePending
+          = js_ApplePayLineItemTypePending
+        pToJSVal ApplePayLineItemTypeFinal = js_ApplePayLineItemTypeFinal
+ 
+instance ToJSVal ApplePayLineItemType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayLineItemType where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayLineItemTypePending =
+            ApplePayLineItemTypePending
+        pFromJSVal x
+          | x `js_eq` js_ApplePayLineItemTypeFinal =
+            ApplePayLineItemTypeFinal
+ 
+instance FromJSVal ApplePayLineItemType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"pending\"; })"
+        js_ApplePayLineItemTypePending :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"final\"; })"
+        js_ApplePayLineItemTypeFinal :: JSVal
+ 
+data ApplePayPaymentMethodType = ApplePayPaymentMethodTypeDebit
+                               | ApplePayPaymentMethodTypeCredit
+                               | ApplePayPaymentMethodTypePrepaid
+                               | ApplePayPaymentMethodTypeStore
+                               deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayPaymentMethodType where
+        pToJSVal ApplePayPaymentMethodTypeDebit
+          = js_ApplePayPaymentMethodTypeDebit
+        pToJSVal ApplePayPaymentMethodTypeCredit
+          = js_ApplePayPaymentMethodTypeCredit
+        pToJSVal ApplePayPaymentMethodTypePrepaid
+          = js_ApplePayPaymentMethodTypePrepaid
+        pToJSVal ApplePayPaymentMethodTypeStore
+          = js_ApplePayPaymentMethodTypeStore
+ 
+instance ToJSVal ApplePayPaymentMethodType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayPaymentMethodType where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentMethodTypeDebit =
+            ApplePayPaymentMethodTypeDebit
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentMethodTypeCredit =
+            ApplePayPaymentMethodTypeCredit
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentMethodTypePrepaid =
+            ApplePayPaymentMethodTypePrepaid
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentMethodTypeStore =
+            ApplePayPaymentMethodTypeStore
+ 
+instance FromJSVal ApplePayPaymentMethodType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"debit\"; })"
+        js_ApplePayPaymentMethodTypeDebit :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"credit\"; })"
+        js_ApplePayPaymentMethodTypeCredit :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"prepaid\"; })"
+        js_ApplePayPaymentMethodTypePrepaid :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"store\"; })"
+        js_ApplePayPaymentMethodTypeStore :: JSVal
+ 
+data ApplePayPaymentPassActivationState = ApplePayPaymentPassActivationStateActivated
+                                        | ApplePayPaymentPassActivationStateRequiresActivation
+                                        | ApplePayPaymentPassActivationStateActivating
+                                        | ApplePayPaymentPassActivationStateSuspended
+                                        | ApplePayPaymentPassActivationStateDeactivated
+                                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayPaymentPassActivationState where
+        pToJSVal ApplePayPaymentPassActivationStateActivated
+          = js_ApplePayPaymentPassActivationStateActivated
+        pToJSVal ApplePayPaymentPassActivationStateRequiresActivation
+          = js_ApplePayPaymentPassActivationStateRequiresActivation
+        pToJSVal ApplePayPaymentPassActivationStateActivating
+          = js_ApplePayPaymentPassActivationStateActivating
+        pToJSVal ApplePayPaymentPassActivationStateSuspended
+          = js_ApplePayPaymentPassActivationStateSuspended
+        pToJSVal ApplePayPaymentPassActivationStateDeactivated
+          = js_ApplePayPaymentPassActivationStateDeactivated
+ 
+instance ToJSVal ApplePayPaymentPassActivationState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayPaymentPassActivationState where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentPassActivationStateActivated =
+            ApplePayPaymentPassActivationStateActivated
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentPassActivationStateRequiresActivation
+            = ApplePayPaymentPassActivationStateRequiresActivation
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentPassActivationStateActivating =
+            ApplePayPaymentPassActivationStateActivating
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentPassActivationStateSuspended =
+            ApplePayPaymentPassActivationStateSuspended
+        pFromJSVal x
+          | x `js_eq` js_ApplePayPaymentPassActivationStateDeactivated =
+            ApplePayPaymentPassActivationStateDeactivated
+ 
+instance FromJSVal ApplePayPaymentPassActivationState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"activated\"; })"
+        js_ApplePayPaymentPassActivationStateActivated :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"requiresActivation\"; })"
+        js_ApplePayPaymentPassActivationStateRequiresActivation :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"activating\"; })"
+        js_ApplePayPaymentPassActivationStateActivating :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"suspended\"; })"
+        js_ApplePayPaymentPassActivationStateSuspended :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"deactivated\"; })"
+        js_ApplePayPaymentPassActivationStateDeactivated :: JSVal
+ 
+data ApplePayMerchantCapability = ApplePayMerchantCapabilitySupports3DS
+                                | ApplePayMerchantCapabilitySupportsEMV
+                                | ApplePayMerchantCapabilitySupportsCredit
+                                | ApplePayMerchantCapabilitySupportsDebit
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayMerchantCapability where
+        pToJSVal ApplePayMerchantCapabilitySupports3DS
+          = js_ApplePayMerchantCapabilitySupports3DS
+        pToJSVal ApplePayMerchantCapabilitySupportsEMV
+          = js_ApplePayMerchantCapabilitySupportsEMV
+        pToJSVal ApplePayMerchantCapabilitySupportsCredit
+          = js_ApplePayMerchantCapabilitySupportsCredit
+        pToJSVal ApplePayMerchantCapabilitySupportsDebit
+          = js_ApplePayMerchantCapabilitySupportsDebit
+ 
+instance ToJSVal ApplePayMerchantCapability where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayMerchantCapability where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayMerchantCapabilitySupports3DS =
+            ApplePayMerchantCapabilitySupports3DS
+        pFromJSVal x
+          | x `js_eq` js_ApplePayMerchantCapabilitySupportsEMV =
+            ApplePayMerchantCapabilitySupportsEMV
+        pFromJSVal x
+          | x `js_eq` js_ApplePayMerchantCapabilitySupportsCredit =
+            ApplePayMerchantCapabilitySupportsCredit
+        pFromJSVal x
+          | x `js_eq` js_ApplePayMerchantCapabilitySupportsDebit =
+            ApplePayMerchantCapabilitySupportsDebit
+ 
+instance FromJSVal ApplePayMerchantCapability where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"supports3DS\"; })"
+        js_ApplePayMerchantCapabilitySupports3DS :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"supportsEMV\"; })"
+        js_ApplePayMerchantCapabilitySupportsEMV :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"supportsCredit\"; })"
+        js_ApplePayMerchantCapabilitySupportsCredit :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"supportsDebit\"; })"
+        js_ApplePayMerchantCapabilitySupportsDebit :: JSVal
+ 
+data ApplePayContactField = ApplePayContactFieldEmail
+                          | ApplePayContactFieldName
+                          | ApplePayContactFieldPhone
+                          | ApplePayContactFieldPostalAddress
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayContactField where
+        pToJSVal ApplePayContactFieldEmail = js_ApplePayContactFieldEmail
+        pToJSVal ApplePayContactFieldName = js_ApplePayContactFieldName
+        pToJSVal ApplePayContactFieldPhone = js_ApplePayContactFieldPhone
+        pToJSVal ApplePayContactFieldPostalAddress
+          = js_ApplePayContactFieldPostalAddress
+ 
+instance ToJSVal ApplePayContactField where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayContactField where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayContactFieldEmail =
+            ApplePayContactFieldEmail
+        pFromJSVal x
+          | x `js_eq` js_ApplePayContactFieldName = ApplePayContactFieldName
+        pFromJSVal x
+          | x `js_eq` js_ApplePayContactFieldPhone =
+            ApplePayContactFieldPhone
+        pFromJSVal x
+          | x `js_eq` js_ApplePayContactFieldPostalAddress =
+            ApplePayContactFieldPostalAddress
+ 
+instance FromJSVal ApplePayContactField where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"email\"; })"
+        js_ApplePayContactFieldEmail :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"name\"; })"
+        js_ApplePayContactFieldName :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"phone\"; })"
+        js_ApplePayContactFieldPhone :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"postalAddress\"; })"
+        js_ApplePayContactFieldPostalAddress :: JSVal
+ 
+data ApplePayShippingType = ApplePayShippingTypeShipping
+                          | ApplePayShippingTypeDelivery
+                          | ApplePayShippingTypeStorePickup
+                          | ApplePayShippingTypeServicePickup
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ApplePayShippingType where
+        pToJSVal ApplePayShippingTypeShipping
+          = js_ApplePayShippingTypeShipping
+        pToJSVal ApplePayShippingTypeDelivery
+          = js_ApplePayShippingTypeDelivery
+        pToJSVal ApplePayShippingTypeStorePickup
+          = js_ApplePayShippingTypeStorePickup
+        pToJSVal ApplePayShippingTypeServicePickup
+          = js_ApplePayShippingTypeServicePickup
+ 
+instance ToJSVal ApplePayShippingType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ApplePayShippingType where
+        pFromJSVal x
+          | x `js_eq` js_ApplePayShippingTypeShipping =
+            ApplePayShippingTypeShipping
+        pFromJSVal x
+          | x `js_eq` js_ApplePayShippingTypeDelivery =
+            ApplePayShippingTypeDelivery
+        pFromJSVal x
+          | x `js_eq` js_ApplePayShippingTypeStorePickup =
+            ApplePayShippingTypeStorePickup
+        pFromJSVal x
+          | x `js_eq` js_ApplePayShippingTypeServicePickup =
+            ApplePayShippingTypeServicePickup
+ 
+instance FromJSVal ApplePayShippingType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"shipping\"; })"
+        js_ApplePayShippingTypeShipping :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"delivery\"; })"
+        js_ApplePayShippingTypeDelivery :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"storePickup\"; })"
+        js_ApplePayShippingTypeStorePickup :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"servicePickup\"; })"
+        js_ApplePayShippingTypeServicePickup :: JSVal
+ 
+data MediaKeyMessageType = MediaKeyMessageTypeLicenseRequest
+                         | MediaKeyMessageTypeLicenseRenewal
+                         | MediaKeyMessageTypeLicenseRelease
+                         | MediaKeyMessageTypeIndividualizationRequest
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaKeyMessageType where
+        pToJSVal MediaKeyMessageTypeLicenseRequest
+          = js_MediaKeyMessageTypeLicenseRequest
+        pToJSVal MediaKeyMessageTypeLicenseRenewal
+          = js_MediaKeyMessageTypeLicenseRenewal
+        pToJSVal MediaKeyMessageTypeLicenseRelease
+          = js_MediaKeyMessageTypeLicenseRelease
+        pToJSVal MediaKeyMessageTypeIndividualizationRequest
+          = js_MediaKeyMessageTypeIndividualizationRequest
+ 
+instance ToJSVal MediaKeyMessageType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaKeyMessageType where
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyMessageTypeLicenseRequest =
+            MediaKeyMessageTypeLicenseRequest
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyMessageTypeLicenseRenewal =
+            MediaKeyMessageTypeLicenseRenewal
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyMessageTypeLicenseRelease =
+            MediaKeyMessageTypeLicenseRelease
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyMessageTypeIndividualizationRequest =
+            MediaKeyMessageTypeIndividualizationRequest
+ 
+instance FromJSVal MediaKeyMessageType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"license-request\"; })"
+        js_MediaKeyMessageTypeLicenseRequest :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"license-renewal\"; })"
+        js_MediaKeyMessageTypeLicenseRenewal :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"license-release\"; })"
+        js_MediaKeyMessageTypeLicenseRelease :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"individualization-request\"; })"
+        js_MediaKeyMessageTypeIndividualizationRequest :: JSVal
+ 
+data MediaKeySessionType = MediaKeySessionTypeTemporary
+                         | MediaKeySessionTypePersistentUsageRecord
+                         | MediaKeySessionTypePersistentLicense
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaKeySessionType where
+        pToJSVal MediaKeySessionTypeTemporary
+          = js_MediaKeySessionTypeTemporary
+        pToJSVal MediaKeySessionTypePersistentUsageRecord
+          = js_MediaKeySessionTypePersistentUsageRecord
+        pToJSVal MediaKeySessionTypePersistentLicense
+          = js_MediaKeySessionTypePersistentLicense
+ 
+instance ToJSVal MediaKeySessionType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaKeySessionType where
+        pFromJSVal x
+          | x `js_eq` js_MediaKeySessionTypeTemporary =
+            MediaKeySessionTypeTemporary
+        pFromJSVal x
+          | x `js_eq` js_MediaKeySessionTypePersistentUsageRecord =
+            MediaKeySessionTypePersistentUsageRecord
+        pFromJSVal x
+          | x `js_eq` js_MediaKeySessionTypePersistentLicense =
+            MediaKeySessionTypePersistentLicense
+ 
+instance FromJSVal MediaKeySessionType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"temporary\"; })"
+        js_MediaKeySessionTypeTemporary :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"persistent-usage-record\"; })"
+        js_MediaKeySessionTypePersistentUsageRecord :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"persistent-license\"; })"
+        js_MediaKeySessionTypePersistentLicense :: JSVal
+ 
+data MediaKeysRequirement = MediaKeysRequirementRequired
+                          | MediaKeysRequirementOptional
+                          | MediaKeysRequirementNotAllowed
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaKeysRequirement where
+        pToJSVal MediaKeysRequirementRequired
+          = js_MediaKeysRequirementRequired
+        pToJSVal MediaKeysRequirementOptional
+          = js_MediaKeysRequirementOptional
+        pToJSVal MediaKeysRequirementNotAllowed
+          = js_MediaKeysRequirementNotAllowed
+ 
+instance ToJSVal MediaKeysRequirement where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaKeysRequirement where
+        pFromJSVal x
+          | x `js_eq` js_MediaKeysRequirementRequired =
+            MediaKeysRequirementRequired
+        pFromJSVal x
+          | x `js_eq` js_MediaKeysRequirementOptional =
+            MediaKeysRequirementOptional
+        pFromJSVal x
+          | x `js_eq` js_MediaKeysRequirementNotAllowed =
+            MediaKeysRequirementNotAllowed
+ 
+instance FromJSVal MediaKeysRequirement where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"required\"; })"
+        js_MediaKeysRequirementRequired :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"optional\"; })"
+        js_MediaKeysRequirementOptional :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"not-allowed\"; })"
+        js_MediaKeysRequirementNotAllowed :: JSVal
+ 
+data MediaKeyStatus = MediaKeyStatusUsable
+                    | MediaKeyStatusExpired
+                    | MediaKeyStatusReleased
+                    | MediaKeyStatusOutputRestricted
+                    | MediaKeyStatusOutputDownscaled
+                    | MediaKeyStatusStatusPending
+                    | MediaKeyStatusInternalError
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaKeyStatus where
+        pToJSVal MediaKeyStatusUsable = js_MediaKeyStatusUsable
+        pToJSVal MediaKeyStatusExpired = js_MediaKeyStatusExpired
+        pToJSVal MediaKeyStatusReleased = js_MediaKeyStatusReleased
+        pToJSVal MediaKeyStatusOutputRestricted
+          = js_MediaKeyStatusOutputRestricted
+        pToJSVal MediaKeyStatusOutputDownscaled
+          = js_MediaKeyStatusOutputDownscaled
+        pToJSVal MediaKeyStatusStatusPending
+          = js_MediaKeyStatusStatusPending
+        pToJSVal MediaKeyStatusInternalError
+          = js_MediaKeyStatusInternalError
+ 
+instance ToJSVal MediaKeyStatus where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaKeyStatus where
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusUsable = MediaKeyStatusUsable
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusExpired = MediaKeyStatusExpired
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusReleased = MediaKeyStatusReleased
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusOutputRestricted =
+            MediaKeyStatusOutputRestricted
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusOutputDownscaled =
+            MediaKeyStatusOutputDownscaled
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusStatusPending =
+            MediaKeyStatusStatusPending
+        pFromJSVal x
+          | x `js_eq` js_MediaKeyStatusInternalError =
+            MediaKeyStatusInternalError
+ 
+instance FromJSVal MediaKeyStatus where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"usable\"; })"
+        js_MediaKeyStatusUsable :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"expired\"; })"
+        js_MediaKeyStatusExpired :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"released\"; })"
+        js_MediaKeyStatusReleased :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"output-restricted\"; })"
+        js_MediaKeyStatusOutputRestricted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"output-downscaled\"; })"
+        js_MediaKeyStatusOutputDownscaled :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"status-pending\"; })"
+        js_MediaKeyStatusStatusPending :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"internal-error\"; })"
+        js_MediaKeyStatusInternalError :: JSVal
+ 
+data RequestType = RequestType
+                 | RequestTypeAudio
+                 | RequestTypeFont
+                 | RequestTypeImage
+                 | RequestTypeScript
+                 | RequestTypeStyle
+                 | RequestTypeTrack
+                 | RequestTypeVideo
+                 deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestType where
+        pToJSVal RequestType = js_RequestType
+        pToJSVal RequestTypeAudio = js_RequestTypeAudio
+        pToJSVal RequestTypeFont = js_RequestTypeFont
+        pToJSVal RequestTypeImage = js_RequestTypeImage
+        pToJSVal RequestTypeScript = js_RequestTypeScript
+        pToJSVal RequestTypeStyle = js_RequestTypeStyle
+        pToJSVal RequestTypeTrack = js_RequestTypeTrack
+        pToJSVal RequestTypeVideo = js_RequestTypeVideo
+ 
+instance ToJSVal RequestType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestType where
+        pFromJSVal x | x `js_eq` js_RequestType = RequestType
+        pFromJSVal x | x `js_eq` js_RequestTypeAudio = RequestTypeAudio
+        pFromJSVal x | x `js_eq` js_RequestTypeFont = RequestTypeFont
+        pFromJSVal x | x `js_eq` js_RequestTypeImage = RequestTypeImage
+        pFromJSVal x | x `js_eq` js_RequestTypeScript = RequestTypeScript
+        pFromJSVal x | x `js_eq` js_RequestTypeStyle = RequestTypeStyle
+        pFromJSVal x | x `js_eq` js_RequestTypeTrack = RequestTypeTrack
+        pFromJSVal x | x `js_eq` js_RequestTypeVideo = RequestTypeVideo
+ 
+instance FromJSVal RequestType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"\"; })" js_RequestType :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"audio\"; })" js_RequestTypeAudio ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"font\"; })" js_RequestTypeFont ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"image\"; })" js_RequestTypeImage ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"script\"; })" js_RequestTypeScript
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"style\"; })" js_RequestTypeStyle ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"track\"; })" js_RequestTypeTrack ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"video\"; })" js_RequestTypeVideo ::
+        JSVal
+ 
+data RequestDestination = RequestDestination
+                        | RequestDestinationDocument
+                        | RequestDestinationSharedworker
+                        | RequestDestinationSubresource
+                        | RequestDestinationUnknown
+                        | RequestDestinationWorker
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestDestination where
+        pToJSVal RequestDestination = js_RequestDestination
+        pToJSVal RequestDestinationDocument = js_RequestDestinationDocument
+        pToJSVal RequestDestinationSharedworker
+          = js_RequestDestinationSharedworker
+        pToJSVal RequestDestinationSubresource
+          = js_RequestDestinationSubresource
+        pToJSVal RequestDestinationUnknown = js_RequestDestinationUnknown
+        pToJSVal RequestDestinationWorker = js_RequestDestinationWorker
+ 
+instance ToJSVal RequestDestination where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestDestination where
+        pFromJSVal x | x `js_eq` js_RequestDestination = RequestDestination
+        pFromJSVal x
+          | x `js_eq` js_RequestDestinationDocument =
+            RequestDestinationDocument
+        pFromJSVal x
+          | x `js_eq` js_RequestDestinationSharedworker =
+            RequestDestinationSharedworker
+        pFromJSVal x
+          | x `js_eq` js_RequestDestinationSubresource =
+            RequestDestinationSubresource
+        pFromJSVal x
+          | x `js_eq` js_RequestDestinationUnknown =
+            RequestDestinationUnknown
+        pFromJSVal x
+          | x `js_eq` js_RequestDestinationWorker = RequestDestinationWorker
+ 
+instance FromJSVal RequestDestination where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"\"; })" js_RequestDestination ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"document\"; })"
+        js_RequestDestinationDocument :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sharedworker\"; })"
+        js_RequestDestinationSharedworker :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"subresource\"; })"
+        js_RequestDestinationSubresource :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"unknown\"; })"
+        js_RequestDestinationUnknown :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"worker\"; })"
+        js_RequestDestinationWorker :: JSVal
+ 
+data RequestMode = RequestModeNavigate
+                 | RequestModeSameOrigin
+                 | RequestModeNoCors
+                 | RequestModeCors
+                 deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestMode where
+        pToJSVal RequestModeNavigate = js_RequestModeNavigate
+        pToJSVal RequestModeSameOrigin = js_RequestModeSameOrigin
+        pToJSVal RequestModeNoCors = js_RequestModeNoCors
+        pToJSVal RequestModeCors = js_RequestModeCors
+ 
+instance ToJSVal RequestMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestMode where
+        pFromJSVal x
+          | x `js_eq` js_RequestModeNavigate = RequestModeNavigate
+        pFromJSVal x
+          | x `js_eq` js_RequestModeSameOrigin = RequestModeSameOrigin
+        pFromJSVal x | x `js_eq` js_RequestModeNoCors = RequestModeNoCors
+        pFromJSVal x | x `js_eq` js_RequestModeCors = RequestModeCors
+ 
+instance FromJSVal RequestMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"navigate\"; })"
+        js_RequestModeNavigate :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"same-origin\"; })"
+        js_RequestModeSameOrigin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"no-cors\"; })" js_RequestModeNoCors
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"cors\"; })" js_RequestModeCors ::
+        JSVal
+ 
+data RequestCredentials = RequestCredentialsOmit
+                        | RequestCredentialsSameOrigin
+                        | RequestCredentialsInclude
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestCredentials where
+        pToJSVal RequestCredentialsOmit = js_RequestCredentialsOmit
+        pToJSVal RequestCredentialsSameOrigin
+          = js_RequestCredentialsSameOrigin
+        pToJSVal RequestCredentialsInclude = js_RequestCredentialsInclude
+ 
+instance ToJSVal RequestCredentials where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestCredentials where
+        pFromJSVal x
+          | x `js_eq` js_RequestCredentialsOmit = RequestCredentialsOmit
+        pFromJSVal x
+          | x `js_eq` js_RequestCredentialsSameOrigin =
+            RequestCredentialsSameOrigin
+        pFromJSVal x
+          | x `js_eq` js_RequestCredentialsInclude =
+            RequestCredentialsInclude
+ 
+instance FromJSVal RequestCredentials where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"omit\"; })"
+        js_RequestCredentialsOmit :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"same-origin\"; })"
+        js_RequestCredentialsSameOrigin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"include\"; })"
+        js_RequestCredentialsInclude :: JSVal
+ 
+data RequestCache = RequestCacheDefault
+                  | RequestCacheNoStore
+                  | RequestCacheReload
+                  | RequestCacheNoCache
+                  | RequestCacheForceCache
+                  | RequestCacheOnlyIfCached
+                  deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestCache where
+        pToJSVal RequestCacheDefault = js_RequestCacheDefault
+        pToJSVal RequestCacheNoStore = js_RequestCacheNoStore
+        pToJSVal RequestCacheReload = js_RequestCacheReload
+        pToJSVal RequestCacheNoCache = js_RequestCacheNoCache
+        pToJSVal RequestCacheForceCache = js_RequestCacheForceCache
+        pToJSVal RequestCacheOnlyIfCached = js_RequestCacheOnlyIfCached
+ 
+instance ToJSVal RequestCache where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestCache where
+        pFromJSVal x
+          | x `js_eq` js_RequestCacheDefault = RequestCacheDefault
+        pFromJSVal x
+          | x `js_eq` js_RequestCacheNoStore = RequestCacheNoStore
+        pFromJSVal x | x `js_eq` js_RequestCacheReload = RequestCacheReload
+        pFromJSVal x
+          | x `js_eq` js_RequestCacheNoCache = RequestCacheNoCache
+        pFromJSVal x
+          | x `js_eq` js_RequestCacheForceCache = RequestCacheForceCache
+        pFromJSVal x
+          | x `js_eq` js_RequestCacheOnlyIfCached = RequestCacheOnlyIfCached
+ 
+instance FromJSVal RequestCache where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"default\"; })"
+        js_RequestCacheDefault :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"no-store\"; })"
+        js_RequestCacheNoStore :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"reload\"; })" js_RequestCacheReload
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"no-cache\"; })"
+        js_RequestCacheNoCache :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"force-cache\"; })"
+        js_RequestCacheForceCache :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"only-if-cached\"; })"
+        js_RequestCacheOnlyIfCached :: JSVal
+ 
+data RequestRedirect = RequestRedirectFollow
+                     | RequestRedirectError
+                     | RequestRedirectManual
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RequestRedirect where
+        pToJSVal RequestRedirectFollow = js_RequestRedirectFollow
+        pToJSVal RequestRedirectError = js_RequestRedirectError
+        pToJSVal RequestRedirectManual = js_RequestRedirectManual
+ 
+instance ToJSVal RequestRedirect where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RequestRedirect where
+        pFromJSVal x
+          | x `js_eq` js_RequestRedirectFollow = RequestRedirectFollow
+        pFromJSVal x
+          | x `js_eq` js_RequestRedirectError = RequestRedirectError
+        pFromJSVal x
+          | x `js_eq` js_RequestRedirectManual = RequestRedirectManual
+ 
+instance FromJSVal RequestRedirect where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"follow\"; })"
+        js_RequestRedirectFollow :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"error\"; })"
+        js_RequestRedirectError :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"manual\"; })"
+        js_RequestRedirectManual :: JSVal
+ 
+data ReferrerPolicy = ReferrerPolicy
+                    | ReferrerPolicyNoReferrer
+                    | ReferrerPolicyNoReferrerWhenDowngrade
+                    | ReferrerPolicyOrigin
+                    | ReferrerPolicyOriginWhenCrossOrigin
+                    | ReferrerPolicyUnsafeUrl
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ReferrerPolicy where
+        pToJSVal ReferrerPolicy = js_ReferrerPolicy
+        pToJSVal ReferrerPolicyNoReferrer = js_ReferrerPolicyNoReferrer
+        pToJSVal ReferrerPolicyNoReferrerWhenDowngrade
+          = js_ReferrerPolicyNoReferrerWhenDowngrade
+        pToJSVal ReferrerPolicyOrigin = js_ReferrerPolicyOrigin
+        pToJSVal ReferrerPolicyOriginWhenCrossOrigin
+          = js_ReferrerPolicyOriginWhenCrossOrigin
+        pToJSVal ReferrerPolicyUnsafeUrl = js_ReferrerPolicyUnsafeUrl
+ 
+instance ToJSVal ReferrerPolicy where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ReferrerPolicy where
+        pFromJSVal x | x `js_eq` js_ReferrerPolicy = ReferrerPolicy
+        pFromJSVal x
+          | x `js_eq` js_ReferrerPolicyNoReferrer = ReferrerPolicyNoReferrer
+        pFromJSVal x
+          | x `js_eq` js_ReferrerPolicyNoReferrerWhenDowngrade =
+            ReferrerPolicyNoReferrerWhenDowngrade
+        pFromJSVal x
+          | x `js_eq` js_ReferrerPolicyOrigin = ReferrerPolicyOrigin
+        pFromJSVal x
+          | x `js_eq` js_ReferrerPolicyOriginWhenCrossOrigin =
+            ReferrerPolicyOriginWhenCrossOrigin
+        pFromJSVal x
+          | x `js_eq` js_ReferrerPolicyUnsafeUrl = ReferrerPolicyUnsafeUrl
+ 
+instance FromJSVal ReferrerPolicy where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"\"; })" js_ReferrerPolicy :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"no-referrer\"; })"
+        js_ReferrerPolicyNoReferrer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"no-referrer-when-downgrade\"; })"
+        js_ReferrerPolicyNoReferrerWhenDowngrade :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"origin\"; })"
+        js_ReferrerPolicyOrigin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"origin-when-cross-origin\"; })"
+        js_ReferrerPolicyOriginWhenCrossOrigin :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"unsafe-url\"; })"
+        js_ReferrerPolicyUnsafeUrl :: JSVal
+ 
+data ResponseType = ResponseTypeBasic
+                  | ResponseTypeCors
+                  | ResponseTypeDefault
+                  | ResponseTypeError
+                  | ResponseTypeOpaque
+                  | ResponseTypeOpaqueredirect
+                  deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ResponseType where
+        pToJSVal ResponseTypeBasic = js_ResponseTypeBasic
+        pToJSVal ResponseTypeCors = js_ResponseTypeCors
+        pToJSVal ResponseTypeDefault = js_ResponseTypeDefault
+        pToJSVal ResponseTypeError = js_ResponseTypeError
+        pToJSVal ResponseTypeOpaque = js_ResponseTypeOpaque
+        pToJSVal ResponseTypeOpaqueredirect = js_ResponseTypeOpaqueredirect
+ 
+instance ToJSVal ResponseType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ResponseType where
+        pFromJSVal x | x `js_eq` js_ResponseTypeBasic = ResponseTypeBasic
+        pFromJSVal x | x `js_eq` js_ResponseTypeCors = ResponseTypeCors
+        pFromJSVal x
+          | x `js_eq` js_ResponseTypeDefault = ResponseTypeDefault
+        pFromJSVal x | x `js_eq` js_ResponseTypeError = ResponseTypeError
+        pFromJSVal x | x `js_eq` js_ResponseTypeOpaque = ResponseTypeOpaque
+        pFromJSVal x
+          | x `js_eq` js_ResponseTypeOpaqueredirect =
+            ResponseTypeOpaqueredirect
+ 
+instance FromJSVal ResponseType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"basic\"; })" js_ResponseTypeBasic
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"cors\"; })" js_ResponseTypeCors ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"default\"; })"
+        js_ResponseTypeDefault :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"error\"; })" js_ResponseTypeError
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"opaque\"; })" js_ResponseTypeOpaque
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"opaqueredirect\"; })"
+        js_ResponseTypeOpaqueredirect :: JSVal
+ 
+data IDBCursorDirection = IDBCursorDirectionNext
+                        | IDBCursorDirectionNextunique
+                        | IDBCursorDirectionPrev
+                        | IDBCursorDirectionPrevunique
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal IDBCursorDirection where
+        pToJSVal IDBCursorDirectionNext = js_IDBCursorDirectionNext
+        pToJSVal IDBCursorDirectionNextunique
+          = js_IDBCursorDirectionNextunique
+        pToJSVal IDBCursorDirectionPrev = js_IDBCursorDirectionPrev
+        pToJSVal IDBCursorDirectionPrevunique
+          = js_IDBCursorDirectionPrevunique
+ 
+instance ToJSVal IDBCursorDirection where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal IDBCursorDirection where
+        pFromJSVal x
+          | x `js_eq` js_IDBCursorDirectionNext = IDBCursorDirectionNext
+        pFromJSVal x
+          | x `js_eq` js_IDBCursorDirectionNextunique =
+            IDBCursorDirectionNextunique
+        pFromJSVal x
+          | x `js_eq` js_IDBCursorDirectionPrev = IDBCursorDirectionPrev
+        pFromJSVal x
+          | x `js_eq` js_IDBCursorDirectionPrevunique =
+            IDBCursorDirectionPrevunique
+ 
+instance FromJSVal IDBCursorDirection where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"next\"; })"
+        js_IDBCursorDirectionNext :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"nextunique\"; })"
+        js_IDBCursorDirectionNextunique :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"prev\"; })"
+        js_IDBCursorDirectionPrev :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"prevunique\"; })"
+        js_IDBCursorDirectionPrevunique :: JSVal
+ 
+data IDBRequestReadyState = IDBRequestReadyStatePending
+                          | IDBRequestReadyStateDone
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal IDBRequestReadyState where
+        pToJSVal IDBRequestReadyStatePending
+          = js_IDBRequestReadyStatePending
+        pToJSVal IDBRequestReadyStateDone = js_IDBRequestReadyStateDone
+ 
+instance ToJSVal IDBRequestReadyState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal IDBRequestReadyState where
+        pFromJSVal x
+          | x `js_eq` js_IDBRequestReadyStatePending =
+            IDBRequestReadyStatePending
+        pFromJSVal x
+          | x `js_eq` js_IDBRequestReadyStateDone = IDBRequestReadyStateDone
+ 
+instance FromJSVal IDBRequestReadyState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"pending\"; })"
+        js_IDBRequestReadyStatePending :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"done\"; })"
+        js_IDBRequestReadyStateDone :: JSVal
+ 
+data IDBTransactionMode = IDBTransactionModeReadonly
+                        | IDBTransactionModeReadwrite
+                        | IDBTransactionModeVersionchange
+                        deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal IDBTransactionMode where
+        pToJSVal IDBTransactionModeReadonly = js_IDBTransactionModeReadonly
+        pToJSVal IDBTransactionModeReadwrite
+          = js_IDBTransactionModeReadwrite
+        pToJSVal IDBTransactionModeVersionchange
+          = js_IDBTransactionModeVersionchange
+ 
+instance ToJSVal IDBTransactionMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal IDBTransactionMode where
+        pFromJSVal x
+          | x `js_eq` js_IDBTransactionModeReadonly =
+            IDBTransactionModeReadonly
+        pFromJSVal x
+          | x `js_eq` js_IDBTransactionModeReadwrite =
+            IDBTransactionModeReadwrite
+        pFromJSVal x
+          | x `js_eq` js_IDBTransactionModeVersionchange =
+            IDBTransactionModeVersionchange
+ 
+instance FromJSVal IDBTransactionMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"readonly\"; })"
+        js_IDBTransactionModeReadonly :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"readwrite\"; })"
+        js_IDBTransactionModeReadwrite :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"versionchange\"; })"
+        js_IDBTransactionModeVersionchange :: JSVal
+ 
+data DeviceType = DeviceTypeNone
+                | DeviceTypeAirplay
+                | DeviceTypeTvout
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal DeviceType where
+        pToJSVal DeviceTypeNone = js_DeviceTypeNone
+        pToJSVal DeviceTypeAirplay = js_DeviceTypeAirplay
+        pToJSVal DeviceTypeTvout = js_DeviceTypeTvout
+ 
+instance ToJSVal DeviceType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal DeviceType where
+        pFromJSVal x | x `js_eq` js_DeviceTypeNone = DeviceTypeNone
+        pFromJSVal x | x `js_eq` js_DeviceTypeAirplay = DeviceTypeAirplay
+        pFromJSVal x | x `js_eq` js_DeviceTypeTvout = DeviceTypeTvout
+ 
+instance FromJSVal DeviceType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"none\"; })" js_DeviceTypeNone ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"airplay\"; })" js_DeviceTypeAirplay
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"tvout\"; })" js_DeviceTypeTvout ::
+        JSVal
+ 
+data MediaSessionKind = MediaSessionKindContent
+                      | MediaSessionKindTransient
+                      | MediaSessionKindTransientSolo
+                      | MediaSessionKindAmbient
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaSessionKind where
+        pToJSVal MediaSessionKindContent = js_MediaSessionKindContent
+        pToJSVal MediaSessionKindTransient = js_MediaSessionKindTransient
+        pToJSVal MediaSessionKindTransientSolo
+          = js_MediaSessionKindTransientSolo
+        pToJSVal MediaSessionKindAmbient = js_MediaSessionKindAmbient
+ 
+instance ToJSVal MediaSessionKind where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaSessionKind where
+        pFromJSVal x
+          | x `js_eq` js_MediaSessionKindContent = MediaSessionKindContent
+        pFromJSVal x
+          | x `js_eq` js_MediaSessionKindTransient =
+            MediaSessionKindTransient
+        pFromJSVal x
+          | x `js_eq` js_MediaSessionKindTransientSolo =
+            MediaSessionKindTransientSolo
+        pFromJSVal x
+          | x `js_eq` js_MediaSessionKindAmbient = MediaSessionKindAmbient
+ 
+instance FromJSVal MediaSessionKind where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"content\"; })"
+        js_MediaSessionKindContent :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"transient\"; })"
+        js_MediaSessionKindTransient :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"transient-solo\"; })"
+        js_MediaSessionKindTransientSolo :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"ambient\"; })"
+        js_MediaSessionKindAmbient :: JSVal
+ 
+data EndOfStreamError = EndOfStreamErrorNetwork
+                      | EndOfStreamErrorDecode
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal EndOfStreamError where
+        pToJSVal EndOfStreamErrorNetwork = js_EndOfStreamErrorNetwork
+        pToJSVal EndOfStreamErrorDecode = js_EndOfStreamErrorDecode
+ 
+instance ToJSVal EndOfStreamError where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal EndOfStreamError where
+        pFromJSVal x
+          | x `js_eq` js_EndOfStreamErrorNetwork = EndOfStreamErrorNetwork
+        pFromJSVal x
+          | x `js_eq` js_EndOfStreamErrorDecode = EndOfStreamErrorDecode
+ 
+instance FromJSVal EndOfStreamError where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"network\"; })"
+        js_EndOfStreamErrorNetwork :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"decode\"; })"
+        js_EndOfStreamErrorDecode :: JSVal
+ 
+data ReadyState = ReadyStateClosed
+                | ReadyStateOpen
+                | ReadyStateEnded
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ReadyState where
+        pToJSVal ReadyStateClosed = js_ReadyStateClosed
+        pToJSVal ReadyStateOpen = js_ReadyStateOpen
+        pToJSVal ReadyStateEnded = js_ReadyStateEnded
+ 
+instance ToJSVal ReadyState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ReadyState where
+        pFromJSVal x | x `js_eq` js_ReadyStateClosed = ReadyStateClosed
+        pFromJSVal x | x `js_eq` js_ReadyStateOpen = ReadyStateOpen
+        pFromJSVal x | x `js_eq` js_ReadyStateEnded = ReadyStateEnded
+ 
+instance FromJSVal ReadyState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })" js_ReadyStateClosed
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"open\"; })" js_ReadyStateOpen ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"ended\"; })" js_ReadyStateEnded ::
+        JSVal
+ 
+data AppendMode = AppendModeSegments
+                | AppendModeSequence
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal AppendMode where
+        pToJSVal AppendModeSegments = js_AppendModeSegments
+        pToJSVal AppendModeSequence = js_AppendModeSequence
+ 
+instance ToJSVal AppendMode where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal AppendMode where
+        pFromJSVal x | x `js_eq` js_AppendModeSegments = AppendModeSegments
+        pFromJSVal x | x `js_eq` js_AppendModeSequence = AppendModeSequence
+ 
+instance FromJSVal AppendMode where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"segments\"; })"
+        js_AppendModeSegments :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sequence\"; })"
+        js_AppendModeSequence :: JSVal
+ 
+data MediaDeviceKind = MediaDeviceKindAudioinput
+                     | MediaDeviceKindAudiooutput
+                     | MediaDeviceKindVideoinput
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaDeviceKind where
+        pToJSVal MediaDeviceKindAudioinput = js_MediaDeviceKindAudioinput
+        pToJSVal MediaDeviceKindAudiooutput = js_MediaDeviceKindAudiooutput
+        pToJSVal MediaDeviceKindVideoinput = js_MediaDeviceKindVideoinput
+ 
+instance ToJSVal MediaDeviceKind where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaDeviceKind where
+        pFromJSVal x
+          | x `js_eq` js_MediaDeviceKindAudioinput =
+            MediaDeviceKindAudioinput
+        pFromJSVal x
+          | x `js_eq` js_MediaDeviceKindAudiooutput =
+            MediaDeviceKindAudiooutput
+        pFromJSVal x
+          | x `js_eq` js_MediaDeviceKindVideoinput =
+            MediaDeviceKindVideoinput
+ 
+instance FromJSVal MediaDeviceKind where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"audioinput\"; })"
+        js_MediaDeviceKindAudioinput :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"audiooutput\"; })"
+        js_MediaDeviceKindAudiooutput :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"videoinput\"; })"
+        js_MediaDeviceKindVideoinput :: JSVal
+ 
+data MediaStreamTrackState = MediaStreamTrackStateLive
+                           | MediaStreamTrackStateEnded
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal MediaStreamTrackState where
+        pToJSVal MediaStreamTrackStateLive = js_MediaStreamTrackStateLive
+        pToJSVal MediaStreamTrackStateEnded = js_MediaStreamTrackStateEnded
+ 
+instance ToJSVal MediaStreamTrackState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal MediaStreamTrackState where
+        pFromJSVal x
+          | x `js_eq` js_MediaStreamTrackStateLive =
+            MediaStreamTrackStateLive
+        pFromJSVal x
+          | x `js_eq` js_MediaStreamTrackStateEnded =
+            MediaStreamTrackStateEnded
+ 
+instance FromJSVal MediaStreamTrackState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"live\"; })"
+        js_MediaStreamTrackStateLive :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"ended\"; })"
+        js_MediaStreamTrackStateEnded :: JSVal
+ 
+data RTCIceTransportPolicy = RTCIceTransportPolicyRelay
+                           | RTCIceTransportPolicyAll
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIceTransportPolicy where
+        pToJSVal RTCIceTransportPolicyRelay = js_RTCIceTransportPolicyRelay
+        pToJSVal RTCIceTransportPolicyAll = js_RTCIceTransportPolicyAll
+ 
+instance ToJSVal RTCIceTransportPolicy where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIceTransportPolicy where
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportPolicyRelay =
+            RTCIceTransportPolicyRelay
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportPolicyAll = RTCIceTransportPolicyAll
+ 
+instance FromJSVal RTCIceTransportPolicy where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"relay\"; })"
+        js_RTCIceTransportPolicyRelay :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"all\"; })"
+        js_RTCIceTransportPolicyAll :: JSVal
+ 
+data RTCBundlePolicy = RTCBundlePolicyBalanced
+                     | RTCBundlePolicyMaxCompat
+                     | RTCBundlePolicyMaxBundle
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCBundlePolicy where
+        pToJSVal RTCBundlePolicyBalanced = js_RTCBundlePolicyBalanced
+        pToJSVal RTCBundlePolicyMaxCompat = js_RTCBundlePolicyMaxCompat
+        pToJSVal RTCBundlePolicyMaxBundle = js_RTCBundlePolicyMaxBundle
+ 
+instance ToJSVal RTCBundlePolicy where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCBundlePolicy where
+        pFromJSVal x
+          | x `js_eq` js_RTCBundlePolicyBalanced = RTCBundlePolicyBalanced
+        pFromJSVal x
+          | x `js_eq` js_RTCBundlePolicyMaxCompat = RTCBundlePolicyMaxCompat
+        pFromJSVal x
+          | x `js_eq` js_RTCBundlePolicyMaxBundle = RTCBundlePolicyMaxBundle
+ 
+instance FromJSVal RTCBundlePolicy where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"balanced\"; })"
+        js_RTCBundlePolicyBalanced :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"max-compat\"; })"
+        js_RTCBundlePolicyMaxCompat :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"max-bundle\"; })"
+        js_RTCBundlePolicyMaxBundle :: JSVal
+ 
+data RTCDataChannelState = RTCDataChannelStateConnecting
+                         | RTCDataChannelStateOpen
+                         | RTCDataChannelStateClosing
+                         | RTCDataChannelStateClosed
+                         deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCDataChannelState where
+        pToJSVal RTCDataChannelStateConnecting
+          = js_RTCDataChannelStateConnecting
+        pToJSVal RTCDataChannelStateOpen = js_RTCDataChannelStateOpen
+        pToJSVal RTCDataChannelStateClosing = js_RTCDataChannelStateClosing
+        pToJSVal RTCDataChannelStateClosed = js_RTCDataChannelStateClosed
+ 
+instance ToJSVal RTCDataChannelState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCDataChannelState where
+        pFromJSVal x
+          | x `js_eq` js_RTCDataChannelStateConnecting =
+            RTCDataChannelStateConnecting
+        pFromJSVal x
+          | x `js_eq` js_RTCDataChannelStateOpen = RTCDataChannelStateOpen
+        pFromJSVal x
+          | x `js_eq` js_RTCDataChannelStateClosing =
+            RTCDataChannelStateClosing
+        pFromJSVal x
+          | x `js_eq` js_RTCDataChannelStateClosed =
+            RTCDataChannelStateClosed
+ 
+instance FromJSVal RTCDataChannelState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"connecting\"; })"
+        js_RTCDataChannelStateConnecting :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"open\"; })"
+        js_RTCDataChannelStateOpen :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closing\"; })"
+        js_RTCDataChannelStateClosing :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_RTCDataChannelStateClosed :: JSVal
+ 
+data RTCIceConnectionState = RTCIceConnectionStateNew
+                           | RTCIceConnectionStateChecking
+                           | RTCIceConnectionStateConnected
+                           | RTCIceConnectionStateCompleted
+                           | RTCIceConnectionStateFailed
+                           | RTCIceConnectionStateDisconnected
+                           | RTCIceConnectionStateClosed
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIceConnectionState where
+        pToJSVal RTCIceConnectionStateNew = js_RTCIceConnectionStateNew
+        pToJSVal RTCIceConnectionStateChecking
+          = js_RTCIceConnectionStateChecking
+        pToJSVal RTCIceConnectionStateConnected
+          = js_RTCIceConnectionStateConnected
+        pToJSVal RTCIceConnectionStateCompleted
+          = js_RTCIceConnectionStateCompleted
+        pToJSVal RTCIceConnectionStateFailed
+          = js_RTCIceConnectionStateFailed
+        pToJSVal RTCIceConnectionStateDisconnected
+          = js_RTCIceConnectionStateDisconnected
+        pToJSVal RTCIceConnectionStateClosed
+          = js_RTCIceConnectionStateClosed
+ 
+instance ToJSVal RTCIceConnectionState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIceConnectionState where
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateNew = RTCIceConnectionStateNew
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateChecking =
+            RTCIceConnectionStateChecking
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateConnected =
+            RTCIceConnectionStateConnected
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateCompleted =
+            RTCIceConnectionStateCompleted
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateFailed =
+            RTCIceConnectionStateFailed
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateDisconnected =
+            RTCIceConnectionStateDisconnected
+        pFromJSVal x
+          | x `js_eq` js_RTCIceConnectionStateClosed =
+            RTCIceConnectionStateClosed
+ 
+instance FromJSVal RTCIceConnectionState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"new\"; })"
+        js_RTCIceConnectionStateNew :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"checking\"; })"
+        js_RTCIceConnectionStateChecking :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"connected\"; })"
+        js_RTCIceConnectionStateConnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"completed\"; })"
+        js_RTCIceConnectionStateCompleted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"failed\"; })"
+        js_RTCIceConnectionStateFailed :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"disconnected\"; })"
+        js_RTCIceConnectionStateDisconnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_RTCIceConnectionStateClosed :: JSVal
+ 
+data RTCIceGatheringState = RTCIceGatheringStateNew
+                          | RTCIceGatheringStateGathering
+                          | RTCIceGatheringStateComplete
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIceGatheringState where
+        pToJSVal RTCIceGatheringStateNew = js_RTCIceGatheringStateNew
+        pToJSVal RTCIceGatheringStateGathering
+          = js_RTCIceGatheringStateGathering
+        pToJSVal RTCIceGatheringStateComplete
+          = js_RTCIceGatheringStateComplete
+ 
+instance ToJSVal RTCIceGatheringState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIceGatheringState where
+        pFromJSVal x
+          | x `js_eq` js_RTCIceGatheringStateNew = RTCIceGatheringStateNew
+        pFromJSVal x
+          | x `js_eq` js_RTCIceGatheringStateGathering =
+            RTCIceGatheringStateGathering
+        pFromJSVal x
+          | x `js_eq` js_RTCIceGatheringStateComplete =
+            RTCIceGatheringStateComplete
+ 
+instance FromJSVal RTCIceGatheringState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"new\"; })"
+        js_RTCIceGatheringStateNew :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"gathering\"; })"
+        js_RTCIceGatheringStateGathering :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"complete\"; })"
+        js_RTCIceGatheringStateComplete :: JSVal
+ 
+data RTCIceTransportState = RTCIceTransportStateNew
+                          | RTCIceTransportStateChecking
+                          | RTCIceTransportStateConnected
+                          | RTCIceTransportStateCompleted
+                          | RTCIceTransportStateFailed
+                          | RTCIceTransportStateDisconnected
+                          | RTCIceTransportStateClosed
+                          deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCIceTransportState where
+        pToJSVal RTCIceTransportStateNew = js_RTCIceTransportStateNew
+        pToJSVal RTCIceTransportStateChecking
+          = js_RTCIceTransportStateChecking
+        pToJSVal RTCIceTransportStateConnected
+          = js_RTCIceTransportStateConnected
+        pToJSVal RTCIceTransportStateCompleted
+          = js_RTCIceTransportStateCompleted
+        pToJSVal RTCIceTransportStateFailed = js_RTCIceTransportStateFailed
+        pToJSVal RTCIceTransportStateDisconnected
+          = js_RTCIceTransportStateDisconnected
+        pToJSVal RTCIceTransportStateClosed = js_RTCIceTransportStateClosed
+ 
+instance ToJSVal RTCIceTransportState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCIceTransportState where
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateNew = RTCIceTransportStateNew
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateChecking =
+            RTCIceTransportStateChecking
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateConnected =
+            RTCIceTransportStateConnected
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateCompleted =
+            RTCIceTransportStateCompleted
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateFailed =
+            RTCIceTransportStateFailed
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateDisconnected =
+            RTCIceTransportStateDisconnected
+        pFromJSVal x
+          | x `js_eq` js_RTCIceTransportStateClosed =
+            RTCIceTransportStateClosed
+ 
+instance FromJSVal RTCIceTransportState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"new\"; })"
+        js_RTCIceTransportStateNew :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"checking\"; })"
+        js_RTCIceTransportStateChecking :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"connected\"; })"
+        js_RTCIceTransportStateConnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"completed\"; })"
+        js_RTCIceTransportStateCompleted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"failed\"; })"
+        js_RTCIceTransportStateFailed :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"disconnected\"; })"
+        js_RTCIceTransportStateDisconnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_RTCIceTransportStateClosed :: JSVal
+ 
+data RTCPeerConnectionState = RTCPeerConnectionStateNew
+                            | RTCPeerConnectionStateConnecting
+                            | RTCPeerConnectionStateConnected
+                            | RTCPeerConnectionStateDisconnected
+                            | RTCPeerConnectionStateFailed
+                            | RTCPeerConnectionStateClosed
+                            deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCPeerConnectionState where
+        pToJSVal RTCPeerConnectionStateNew = js_RTCPeerConnectionStateNew
+        pToJSVal RTCPeerConnectionStateConnecting
+          = js_RTCPeerConnectionStateConnecting
+        pToJSVal RTCPeerConnectionStateConnected
+          = js_RTCPeerConnectionStateConnected
+        pToJSVal RTCPeerConnectionStateDisconnected
+          = js_RTCPeerConnectionStateDisconnected
+        pToJSVal RTCPeerConnectionStateFailed
+          = js_RTCPeerConnectionStateFailed
+        pToJSVal RTCPeerConnectionStateClosed
+          = js_RTCPeerConnectionStateClosed
+ 
+instance ToJSVal RTCPeerConnectionState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCPeerConnectionState where
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateNew =
+            RTCPeerConnectionStateNew
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateConnecting =
+            RTCPeerConnectionStateConnecting
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateConnected =
+            RTCPeerConnectionStateConnected
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateDisconnected =
+            RTCPeerConnectionStateDisconnected
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateFailed =
+            RTCPeerConnectionStateFailed
+        pFromJSVal x
+          | x `js_eq` js_RTCPeerConnectionStateClosed =
+            RTCPeerConnectionStateClosed
+ 
+instance FromJSVal RTCPeerConnectionState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"new\"; })"
+        js_RTCPeerConnectionStateNew :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"connecting\"; })"
+        js_RTCPeerConnectionStateConnecting :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"connected\"; })"
+        js_RTCPeerConnectionStateConnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"disconnected\"; })"
+        js_RTCPeerConnectionStateDisconnected :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"failed\"; })"
+        js_RTCPeerConnectionStateFailed :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_RTCPeerConnectionStateClosed :: JSVal
+ 
+data RTCDegradationPreference = RTCDegradationPreferenceMaintainFramerate
+                              | RTCDegradationPreferenceMaintainResolution
+                              | RTCDegradationPreferenceBalanced
+                              deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCDegradationPreference where
+        pToJSVal RTCDegradationPreferenceMaintainFramerate
+          = js_RTCDegradationPreferenceMaintainFramerate
+        pToJSVal RTCDegradationPreferenceMaintainResolution
+          = js_RTCDegradationPreferenceMaintainResolution
+        pToJSVal RTCDegradationPreferenceBalanced
+          = js_RTCDegradationPreferenceBalanced
+ 
+instance ToJSVal RTCDegradationPreference where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCDegradationPreference where
+        pFromJSVal x
+          | x `js_eq` js_RTCDegradationPreferenceMaintainFramerate =
+            RTCDegradationPreferenceMaintainFramerate
+        pFromJSVal x
+          | x `js_eq` js_RTCDegradationPreferenceMaintainResolution =
+            RTCDegradationPreferenceMaintainResolution
+        pFromJSVal x
+          | x `js_eq` js_RTCDegradationPreferenceBalanced =
+            RTCDegradationPreferenceBalanced
+ 
+instance FromJSVal RTCDegradationPreference where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"maintain-framerate\"; })"
+        js_RTCDegradationPreferenceMaintainFramerate :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"maintain-resolution\"; })"
+        js_RTCDegradationPreferenceMaintainResolution :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"balanced\"; })"
+        js_RTCDegradationPreferenceBalanced :: JSVal
+ 
+data RTCDtxStatus = RTCDtxStatusDisabled
+                  | RTCDtxStatusEnabled
+                  deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCDtxStatus where
+        pToJSVal RTCDtxStatusDisabled = js_RTCDtxStatusDisabled
+        pToJSVal RTCDtxStatusEnabled = js_RTCDtxStatusEnabled
+ 
+instance ToJSVal RTCDtxStatus where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCDtxStatus where
+        pFromJSVal x
+          | x `js_eq` js_RTCDtxStatusDisabled = RTCDtxStatusDisabled
+        pFromJSVal x
+          | x `js_eq` js_RTCDtxStatusEnabled = RTCDtxStatusEnabled
+ 
+instance FromJSVal RTCDtxStatus where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"disabled\"; })"
+        js_RTCDtxStatusDisabled :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"enabled\"; })"
+        js_RTCDtxStatusEnabled :: JSVal
+ 
+data RTCPriorityType = RTCPriorityTypeVeryLow
+                     | RTCPriorityTypeLow
+                     | RTCPriorityTypeMedium
+                     | RTCPriorityTypeHigh
+                     deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCPriorityType where
+        pToJSVal RTCPriorityTypeVeryLow = js_RTCPriorityTypeVeryLow
+        pToJSVal RTCPriorityTypeLow = js_RTCPriorityTypeLow
+        pToJSVal RTCPriorityTypeMedium = js_RTCPriorityTypeMedium
+        pToJSVal RTCPriorityTypeHigh = js_RTCPriorityTypeHigh
+ 
+instance ToJSVal RTCPriorityType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCPriorityType where
+        pFromJSVal x
+          | x `js_eq` js_RTCPriorityTypeVeryLow = RTCPriorityTypeVeryLow
+        pFromJSVal x | x `js_eq` js_RTCPriorityTypeLow = RTCPriorityTypeLow
+        pFromJSVal x
+          | x `js_eq` js_RTCPriorityTypeMedium = RTCPriorityTypeMedium
+        pFromJSVal x
+          | x `js_eq` js_RTCPriorityTypeHigh = RTCPriorityTypeHigh
+ 
+instance FromJSVal RTCPriorityType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"very-low\"; })"
+        js_RTCPriorityTypeVeryLow :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"low\"; })" js_RTCPriorityTypeLow ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"medium\"; })"
+        js_RTCPriorityTypeMedium :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"high\"; })" js_RTCPriorityTypeHigh
+        :: JSVal
+ 
+data RTCRtpTransceiverDirection = RTCRtpTransceiverDirectionSendrecv
+                                | RTCRtpTransceiverDirectionSendonly
+                                | RTCRtpTransceiverDirectionRecvonly
+                                | RTCRtpTransceiverDirectionInactive
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCRtpTransceiverDirection where
+        pToJSVal RTCRtpTransceiverDirectionSendrecv
+          = js_RTCRtpTransceiverDirectionSendrecv
+        pToJSVal RTCRtpTransceiverDirectionSendonly
+          = js_RTCRtpTransceiverDirectionSendonly
+        pToJSVal RTCRtpTransceiverDirectionRecvonly
+          = js_RTCRtpTransceiverDirectionRecvonly
+        pToJSVal RTCRtpTransceiverDirectionInactive
+          = js_RTCRtpTransceiverDirectionInactive
+ 
+instance ToJSVal RTCRtpTransceiverDirection where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCRtpTransceiverDirection where
+        pFromJSVal x
+          | x `js_eq` js_RTCRtpTransceiverDirectionSendrecv =
+            RTCRtpTransceiverDirectionSendrecv
+        pFromJSVal x
+          | x `js_eq` js_RTCRtpTransceiverDirectionSendonly =
+            RTCRtpTransceiverDirectionSendonly
+        pFromJSVal x
+          | x `js_eq` js_RTCRtpTransceiverDirectionRecvonly =
+            RTCRtpTransceiverDirectionRecvonly
+        pFromJSVal x
+          | x `js_eq` js_RTCRtpTransceiverDirectionInactive =
+            RTCRtpTransceiverDirectionInactive
+ 
+instance FromJSVal RTCRtpTransceiverDirection where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"sendrecv\"; })"
+        js_RTCRtpTransceiverDirectionSendrecv :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sendonly\"; })"
+        js_RTCRtpTransceiverDirectionSendonly :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"recvonly\"; })"
+        js_RTCRtpTransceiverDirectionRecvonly :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"inactive\"; })"
+        js_RTCRtpTransceiverDirectionInactive :: JSVal
+ 
+data RTCSdpType = RTCSdpTypeOffer
+                | RTCSdpTypePranswer
+                | RTCSdpTypeAnswer
+                | RTCSdpTypeRollback
+                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCSdpType where
+        pToJSVal RTCSdpTypeOffer = js_RTCSdpTypeOffer
+        pToJSVal RTCSdpTypePranswer = js_RTCSdpTypePranswer
+        pToJSVal RTCSdpTypeAnswer = js_RTCSdpTypeAnswer
+        pToJSVal RTCSdpTypeRollback = js_RTCSdpTypeRollback
+ 
+instance ToJSVal RTCSdpType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCSdpType where
+        pFromJSVal x | x `js_eq` js_RTCSdpTypeOffer = RTCSdpTypeOffer
+        pFromJSVal x | x `js_eq` js_RTCSdpTypePranswer = RTCSdpTypePranswer
+        pFromJSVal x | x `js_eq` js_RTCSdpTypeAnswer = RTCSdpTypeAnswer
+        pFromJSVal x | x `js_eq` js_RTCSdpTypeRollback = RTCSdpTypeRollback
+ 
+instance FromJSVal RTCSdpType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"offer\"; })" js_RTCSdpTypeOffer ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"pranswer\"; })"
+        js_RTCSdpTypePranswer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"answer\"; })" js_RTCSdpTypeAnswer
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"rollback\"; })"
+        js_RTCSdpTypeRollback :: JSVal
+ 
+data RTCSignalingState = RTCSignalingStateStable
+                       | RTCSignalingStateHaveLocalOffer
+                       | RTCSignalingStateHaveRemoteOffer
+                       | RTCSignalingStateHaveLocalPranswer
+                       | RTCSignalingStateHaveRemotePranswer
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCSignalingState where
+        pToJSVal RTCSignalingStateStable = js_RTCSignalingStateStable
+        pToJSVal RTCSignalingStateHaveLocalOffer
+          = js_RTCSignalingStateHaveLocalOffer
+        pToJSVal RTCSignalingStateHaveRemoteOffer
+          = js_RTCSignalingStateHaveRemoteOffer
+        pToJSVal RTCSignalingStateHaveLocalPranswer
+          = js_RTCSignalingStateHaveLocalPranswer
+        pToJSVal RTCSignalingStateHaveRemotePranswer
+          = js_RTCSignalingStateHaveRemotePranswer
+ 
+instance ToJSVal RTCSignalingState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCSignalingState where
+        pFromJSVal x
+          | x `js_eq` js_RTCSignalingStateStable = RTCSignalingStateStable
+        pFromJSVal x
+          | x `js_eq` js_RTCSignalingStateHaveLocalOffer =
+            RTCSignalingStateHaveLocalOffer
+        pFromJSVal x
+          | x `js_eq` js_RTCSignalingStateHaveRemoteOffer =
+            RTCSignalingStateHaveRemoteOffer
+        pFromJSVal x
+          | x `js_eq` js_RTCSignalingStateHaveLocalPranswer =
+            RTCSignalingStateHaveLocalPranswer
+        pFromJSVal x
+          | x `js_eq` js_RTCSignalingStateHaveRemotePranswer =
+            RTCSignalingStateHaveRemotePranswer
+ 
+instance FromJSVal RTCSignalingState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"stable\"; })"
+        js_RTCSignalingStateStable :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"have-local-offer\"; })"
+        js_RTCSignalingStateHaveLocalOffer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"have-remote-offer\"; })"
+        js_RTCSignalingStateHaveRemoteOffer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"have-local-pranswer\"; })"
+        js_RTCSignalingStateHaveLocalPranswer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"have-remote-pranswer\"; })"
+        js_RTCSignalingStateHaveRemotePranswer :: JSVal
+ 
+data RTCStatsType = RTCStatsTypeCodec
+                  | RTCStatsTypeInboundRtp
+                  | RTCStatsTypeOutboundRtp
+                  | RTCStatsTypePeerConnection
+                  | RTCStatsTypeDataChannel
+                  | RTCStatsTypeTrack
+                  | RTCStatsTypeTransport
+                  | RTCStatsTypeCandidatePair
+                  | RTCStatsTypeLocalCandidate
+                  | RTCStatsTypeRemoteCandidate
+                  | RTCStatsTypeCertificate
+                  deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal RTCStatsType where
+        pToJSVal RTCStatsTypeCodec = js_RTCStatsTypeCodec
+        pToJSVal RTCStatsTypeInboundRtp = js_RTCStatsTypeInboundRtp
+        pToJSVal RTCStatsTypeOutboundRtp = js_RTCStatsTypeOutboundRtp
+        pToJSVal RTCStatsTypePeerConnection = js_RTCStatsTypePeerConnection
+        pToJSVal RTCStatsTypeDataChannel = js_RTCStatsTypeDataChannel
+        pToJSVal RTCStatsTypeTrack = js_RTCStatsTypeTrack
+        pToJSVal RTCStatsTypeTransport = js_RTCStatsTypeTransport
+        pToJSVal RTCStatsTypeCandidatePair = js_RTCStatsTypeCandidatePair
+        pToJSVal RTCStatsTypeLocalCandidate = js_RTCStatsTypeLocalCandidate
+        pToJSVal RTCStatsTypeRemoteCandidate
+          = js_RTCStatsTypeRemoteCandidate
+        pToJSVal RTCStatsTypeCertificate = js_RTCStatsTypeCertificate
+ 
+instance ToJSVal RTCStatsType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal RTCStatsType where
+        pFromJSVal x | x `js_eq` js_RTCStatsTypeCodec = RTCStatsTypeCodec
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeInboundRtp = RTCStatsTypeInboundRtp
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeOutboundRtp = RTCStatsTypeOutboundRtp
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypePeerConnection =
+            RTCStatsTypePeerConnection
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeDataChannel = RTCStatsTypeDataChannel
+        pFromJSVal x | x `js_eq` js_RTCStatsTypeTrack = RTCStatsTypeTrack
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeTransport = RTCStatsTypeTransport
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeCandidatePair =
+            RTCStatsTypeCandidatePair
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeLocalCandidate =
+            RTCStatsTypeLocalCandidate
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeRemoteCandidate =
+            RTCStatsTypeRemoteCandidate
+        pFromJSVal x
+          | x `js_eq` js_RTCStatsTypeCertificate = RTCStatsTypeCertificate
+ 
+instance FromJSVal RTCStatsType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"codec\"; })" js_RTCStatsTypeCodec
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"inbound-rtp\"; })"
+        js_RTCStatsTypeInboundRtp :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"outbound-rtp\"; })"
+        js_RTCStatsTypeOutboundRtp :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"peer-connection\"; })"
+        js_RTCStatsTypePeerConnection :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"data-channel\"; })"
+        js_RTCStatsTypeDataChannel :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"track\"; })" js_RTCStatsTypeTrack
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"transport\"; })"
+        js_RTCStatsTypeTransport :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"candidate-pair\"; })"
+        js_RTCStatsTypeCandidatePair :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"local-candidate\"; })"
+        js_RTCStatsTypeLocalCandidate :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"remote-candidate\"; })"
+        js_RTCStatsTypeRemoteCandidate :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"certificate\"; })"
+        js_RTCStatsTypeCertificate :: JSVal
+ 
+data NotificationDirection = NotificationDirectionAuto
+                           | NotificationDirectionLtr
+                           | NotificationDirectionRtl
+                           deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal NotificationDirection where
+        pToJSVal NotificationDirectionAuto = js_NotificationDirectionAuto
+        pToJSVal NotificationDirectionLtr = js_NotificationDirectionLtr
+        pToJSVal NotificationDirectionRtl = js_NotificationDirectionRtl
+ 
+instance ToJSVal NotificationDirection where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal NotificationDirection where
+        pFromJSVal x
+          | x `js_eq` js_NotificationDirectionAuto =
+            NotificationDirectionAuto
+        pFromJSVal x
+          | x `js_eq` js_NotificationDirectionLtr = NotificationDirectionLtr
+        pFromJSVal x
+          | x `js_eq` js_NotificationDirectionRtl = NotificationDirectionRtl
+ 
+instance FromJSVal NotificationDirection where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"auto\"; })"
+        js_NotificationDirectionAuto :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"ltr\"; })"
+        js_NotificationDirectionLtr :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"rtl\"; })"
+        js_NotificationDirectionRtl :: JSVal
+ 
+data AudioContextState = AudioContextStateSuspended
+                       | AudioContextStateRunning
+                       | AudioContextStateInterrupted
+                       | AudioContextStateClosed
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal AudioContextState where
+        pToJSVal AudioContextStateSuspended = js_AudioContextStateSuspended
+        pToJSVal AudioContextStateRunning = js_AudioContextStateRunning
+        pToJSVal AudioContextStateInterrupted
+          = js_AudioContextStateInterrupted
+        pToJSVal AudioContextStateClosed = js_AudioContextStateClosed
+ 
+instance ToJSVal AudioContextState where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal AudioContextState where
+        pFromJSVal x
+          | x `js_eq` js_AudioContextStateSuspended =
+            AudioContextStateSuspended
+        pFromJSVal x
+          | x `js_eq` js_AudioContextStateRunning = AudioContextStateRunning
+        pFromJSVal x
+          | x `js_eq` js_AudioContextStateInterrupted =
+            AudioContextStateInterrupted
+        pFromJSVal x
+          | x `js_eq` js_AudioContextStateClosed = AudioContextStateClosed
+ 
+instance FromJSVal AudioContextState where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"suspended\"; })"
+        js_AudioContextStateSuspended :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"running\"; })"
+        js_AudioContextStateRunning :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"interrupted\"; })"
+        js_AudioContextStateInterrupted :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"closed\"; })"
+        js_AudioContextStateClosed :: JSVal
+ 
+data BiquadFilterType = BiquadFilterTypeLowpass
+                      | BiquadFilterTypeHighpass
+                      | BiquadFilterTypeBandpass
+                      | BiquadFilterTypeLowshelf
+                      | BiquadFilterTypeHighshelf
+                      | BiquadFilterTypePeaking
+                      | BiquadFilterTypeNotch
+                      | BiquadFilterTypeAllpass
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal BiquadFilterType where
+        pToJSVal BiquadFilterTypeLowpass = js_BiquadFilterTypeLowpass
+        pToJSVal BiquadFilterTypeHighpass = js_BiquadFilterTypeHighpass
+        pToJSVal BiquadFilterTypeBandpass = js_BiquadFilterTypeBandpass
+        pToJSVal BiquadFilterTypeLowshelf = js_BiquadFilterTypeLowshelf
+        pToJSVal BiquadFilterTypeHighshelf = js_BiquadFilterTypeHighshelf
+        pToJSVal BiquadFilterTypePeaking = js_BiquadFilterTypePeaking
+        pToJSVal BiquadFilterTypeNotch = js_BiquadFilterTypeNotch
+        pToJSVal BiquadFilterTypeAllpass = js_BiquadFilterTypeAllpass
+ 
+instance ToJSVal BiquadFilterType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal BiquadFilterType where
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeLowpass = BiquadFilterTypeLowpass
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeHighpass = BiquadFilterTypeHighpass
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeBandpass = BiquadFilterTypeBandpass
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeLowshelf = BiquadFilterTypeLowshelf
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeHighshelf =
+            BiquadFilterTypeHighshelf
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypePeaking = BiquadFilterTypePeaking
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeNotch = BiquadFilterTypeNotch
+        pFromJSVal x
+          | x `js_eq` js_BiquadFilterTypeAllpass = BiquadFilterTypeAllpass
+ 
+instance FromJSVal BiquadFilterType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"lowpass\"; })"
+        js_BiquadFilterTypeLowpass :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"highpass\"; })"
+        js_BiquadFilterTypeHighpass :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"bandpass\"; })"
+        js_BiquadFilterTypeBandpass :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"lowshelf\"; })"
+        js_BiquadFilterTypeLowshelf :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"highshelf\"; })"
+        js_BiquadFilterTypeHighshelf :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"peaking\"; })"
+        js_BiquadFilterTypePeaking :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"notch\"; })"
+        js_BiquadFilterTypeNotch :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"allpass\"; })"
+        js_BiquadFilterTypeAllpass :: JSVal
+ 
+data OscillatorType = OscillatorTypeSine
+                    | OscillatorTypeSquare
+                    | OscillatorTypeSawtooth
+                    | OscillatorTypeTriangle
+                    | OscillatorTypeCustom
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal OscillatorType where
+        pToJSVal OscillatorTypeSine = js_OscillatorTypeSine
+        pToJSVal OscillatorTypeSquare = js_OscillatorTypeSquare
+        pToJSVal OscillatorTypeSawtooth = js_OscillatorTypeSawtooth
+        pToJSVal OscillatorTypeTriangle = js_OscillatorTypeTriangle
+        pToJSVal OscillatorTypeCustom = js_OscillatorTypeCustom
+ 
+instance ToJSVal OscillatorType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal OscillatorType where
+        pFromJSVal x | x `js_eq` js_OscillatorTypeSine = OscillatorTypeSine
+        pFromJSVal x
+          | x `js_eq` js_OscillatorTypeSquare = OscillatorTypeSquare
+        pFromJSVal x
+          | x `js_eq` js_OscillatorTypeSawtooth = OscillatorTypeSawtooth
+        pFromJSVal x
+          | x `js_eq` js_OscillatorTypeTriangle = OscillatorTypeTriangle
+        pFromJSVal x
+          | x `js_eq` js_OscillatorTypeCustom = OscillatorTypeCustom
+ 
+instance FromJSVal OscillatorType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"sine\"; })" js_OscillatorTypeSine
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"square\"; })"
+        js_OscillatorTypeSquare :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"sawtooth\"; })"
+        js_OscillatorTypeSawtooth :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"triangle\"; })"
+        js_OscillatorTypeTriangle :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"custom\"; })"
+        js_OscillatorTypeCustom :: JSVal
+ 
+data PanningModelType = PanningModelTypeEqualpower
+                      | PanningModelTypeHRTF
+                      deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal PanningModelType where
+        pToJSVal PanningModelTypeEqualpower = js_PanningModelTypeEqualpower
+        pToJSVal PanningModelTypeHRTF = js_PanningModelTypeHRTF
+ 
+instance ToJSVal PanningModelType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal PanningModelType where
+        pFromJSVal x
+          | x `js_eq` js_PanningModelTypeEqualpower =
+            PanningModelTypeEqualpower
+        pFromJSVal x
+          | x `js_eq` js_PanningModelTypeHRTF = PanningModelTypeHRTF
+ 
+instance FromJSVal PanningModelType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"equalpower\"; })"
+        js_PanningModelTypeEqualpower :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"HRTF\"; })" js_PanningModelTypeHRTF
+        :: JSVal
+ 
+data DistanceModelType = DistanceModelTypeLinear
+                       | DistanceModelTypeInverse
+                       | DistanceModelTypeExponential
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal DistanceModelType where
+        pToJSVal DistanceModelTypeLinear = js_DistanceModelTypeLinear
+        pToJSVal DistanceModelTypeInverse = js_DistanceModelTypeInverse
+        pToJSVal DistanceModelTypeExponential
+          = js_DistanceModelTypeExponential
+ 
+instance ToJSVal DistanceModelType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal DistanceModelType where
+        pFromJSVal x
+          | x `js_eq` js_DistanceModelTypeLinear = DistanceModelTypeLinear
+        pFromJSVal x
+          | x `js_eq` js_DistanceModelTypeInverse = DistanceModelTypeInverse
+        pFromJSVal x
+          | x `js_eq` js_DistanceModelTypeExponential =
+            DistanceModelTypeExponential
+ 
+instance FromJSVal DistanceModelType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"linear\"; })"
+        js_DistanceModelTypeLinear :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"inverse\"; })"
+        js_DistanceModelTypeInverse :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"exponential\"; })"
+        js_DistanceModelTypeExponential :: JSVal
+ 
+data OverSampleType = OverSampleTypeNone
+                    | OverSampleType2x
+                    | OverSampleType4x
+                    deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal OverSampleType where
+        pToJSVal OverSampleTypeNone = js_OverSampleTypeNone
+        pToJSVal OverSampleType2x = js_OverSampleType2x
+        pToJSVal OverSampleType4x = js_OverSampleType4x
+ 
+instance ToJSVal OverSampleType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal OverSampleType where
+        pFromJSVal x | x `js_eq` js_OverSampleTypeNone = OverSampleTypeNone
+        pFromJSVal x | x `js_eq` js_OverSampleType2x = OverSampleType2x
+        pFromJSVal x | x `js_eq` js_OverSampleType4x = OverSampleType4x
+ 
+instance FromJSVal OverSampleType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"none\"; })" js_OverSampleTypeNone
+        :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"2x\"; })" js_OverSampleType2x ::
+        JSVal
+ 
+foreign import javascript unsafe "(() => { return \"4x\"; })" js_OverSampleType4x ::
+        JSVal
+ 
+data ScrollRestoration = ScrollRestorationAuto
+                       | ScrollRestorationManual
+                       deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal ScrollRestoration where
+        pToJSVal ScrollRestorationAuto = js_ScrollRestorationAuto
+        pToJSVal ScrollRestorationManual = js_ScrollRestorationManual
+ 
+instance ToJSVal ScrollRestoration where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal ScrollRestoration where
+        pFromJSVal x
+          | x `js_eq` js_ScrollRestorationAuto = ScrollRestorationAuto
+        pFromJSVal x
+          | x `js_eq` js_ScrollRestorationManual = ScrollRestorationManual
+ 
+instance FromJSVal ScrollRestoration where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"auto\"; })"
+        js_ScrollRestorationAuto :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"manual\"; })"
+        js_ScrollRestorationManual :: JSVal
+ 
+data XMLHttpRequestResponseType = XMLHttpRequestResponseType
+                                | XMLHttpRequestResponseTypeArraybuffer
+                                | XMLHttpRequestResponseTypeBlob
+                                | XMLHttpRequestResponseTypeDocument
+                                | XMLHttpRequestResponseTypeJson
+                                | XMLHttpRequestResponseTypeText
+                                deriving (Show, Read, Eq, Ord, Typeable)
+ 
+instance PToJSVal XMLHttpRequestResponseType where
+        pToJSVal XMLHttpRequestResponseType = js_XMLHttpRequestResponseType
+        pToJSVal XMLHttpRequestResponseTypeArraybuffer
+          = js_XMLHttpRequestResponseTypeArraybuffer
+        pToJSVal XMLHttpRequestResponseTypeBlob
+          = js_XMLHttpRequestResponseTypeBlob
+        pToJSVal XMLHttpRequestResponseTypeDocument
+          = js_XMLHttpRequestResponseTypeDocument
+        pToJSVal XMLHttpRequestResponseTypeJson
+          = js_XMLHttpRequestResponseTypeJson
+        pToJSVal XMLHttpRequestResponseTypeText
+          = js_XMLHttpRequestResponseTypeText
+ 
+instance ToJSVal XMLHttpRequestResponseType where
+        toJSVal = return . pToJSVal
+ 
+instance PFromJSVal XMLHttpRequestResponseType where
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseType =
+            XMLHttpRequestResponseType
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseTypeArraybuffer =
+            XMLHttpRequestResponseTypeArraybuffer
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseTypeBlob =
+            XMLHttpRequestResponseTypeBlob
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseTypeDocument =
+            XMLHttpRequestResponseTypeDocument
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseTypeJson =
+            XMLHttpRequestResponseTypeJson
+        pFromJSVal x
+          | x `js_eq` js_XMLHttpRequestResponseTypeText =
+            XMLHttpRequestResponseTypeText
+ 
+instance FromJSVal XMLHttpRequestResponseType where
+        fromJSValUnchecked = return . pFromJSVal
+        fromJSVal = return . pFromJSVal
+ 
+foreign import javascript unsafe "(() => { return \"\"; })"
+        js_XMLHttpRequestResponseType :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"arraybuffer\"; })"
+        js_XMLHttpRequestResponseTypeArraybuffer :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"blob\"; })"
+        js_XMLHttpRequestResponseTypeBlob :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"document\"; })"
+        js_XMLHttpRequestResponseTypeDocument :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"json\"; })"
+        js_XMLHttpRequestResponseTypeJson :: JSVal
+ 
+foreign import javascript unsafe "(() => { return \"text\"; })"
+        js_XMLHttpRequestResponseTypeText :: JSVal
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ErrorEvent.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ErrorEvent
+       (js_newErrorEvent, newErrorEvent, js_getMessage, getMessage,
+        js_getFilename, getFilename, js_getLineno, getLineno, js_getColno,
+        getColno, js_getError, getError, ErrorEvent(..), gTypeErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"ErrorEvent\"]($1, $2); })" js_newErrorEvent ::
+        JSString -> Optional ErrorEventInit -> IO ErrorEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation> 
+newErrorEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe ErrorEventInit -> m ErrorEvent
+newErrorEvent type' eventInitDict
+  = liftIO
+      (js_newErrorEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        ErrorEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.message Mozilla ErrorEvent.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => ErrorEvent -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })" js_getFilename
+        :: ErrorEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.filename Mozilla ErrorEvent.filename documentation> 
+getFilename ::
+            (MonadIO m, FromJSString result) => ErrorEvent -> m result
+getFilename self = liftIO (fromJSString <$> (js_getFilename self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineno\"]; })" js_getLineno ::
+        ErrorEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.lineno Mozilla ErrorEvent.lineno documentation> 
+getLineno :: (MonadIO m) => ErrorEvent -> m Word
+getLineno self = liftIO (js_getLineno self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"colno\"]; })" js_getColno ::
+        ErrorEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.colno Mozilla ErrorEvent.colno documentation> 
+getColno :: (MonadIO m) => ErrorEvent -> m Word
+getColno self = liftIO (js_getColno self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        ErrorEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent.error Mozilla ErrorEvent.error documentation> 
+getError :: (MonadIO m) => ErrorEvent -> m JSVal
+getError self = liftIO (js_getError self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Event.hs b/src/GHCJS/DOM/JSFFI/Generated/Event.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Event.hs
@@ -0,0 +1,251 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Event
+       (js_newEvent, newEvent, js_composedPath, composedPath,
+        composedPath_, js_stopPropagation, stopPropagation,
+        js_stopImmediatePropagation, stopImmediatePropagation,
+        js_preventDefault, preventDefault, js_initEvent, initEvent,
+        pattern NONE, pattern CAPTURING_PHASE, pattern AT_TARGET,
+        pattern BUBBLING_PHASE, js_getType, getType, js_getTarget,
+        getTarget, getTargetUnsafe, getTargetUnchecked,
+        js_getCurrentTarget, getCurrentTarget, getCurrentTargetUnsafe,
+        getCurrentTargetUnchecked, js_getEventPhase, getEventPhase,
+        js_setCancelBubble, setCancelBubble, js_getCancelBubble,
+        getCancelBubble, js_getBubbles, getBubbles, js_getCancelable,
+        getCancelable, js_getDefaultPrevented, getDefaultPrevented,
+        js_getComposed, getComposed, js_getIsTrusted, getIsTrusted,
+        js_getTimeStamp, getTimeStamp, js_getSrcElement, getSrcElement,
+        js_setReturnValue, setReturnValue, js_getReturnValue,
+        getReturnValue, Event(..), gTypeEvent, IsEvent, toEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return new window[\"Event\"]($1, $2); })"
+        js_newEvent :: JSString -> Optional EventInit -> IO Event
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation> 
+newEvent ::
+         (MonadIO m, ToJSString type', IsEventInit eventInitDict) =>
+           type' -> Maybe eventInitDict -> m Event
+newEvent type' eventInitDict
+  = liftIO
+      (js_newEvent (toJSString type')
+         (maybeToOptional (fmap toEventInit eventInitDict)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"composedPath\"](); })"
+        js_composedPath :: Event -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
+composedPath ::
+             (MonadIO m, IsEvent self) => self -> m [EventTarget]
+composedPath self
+  = liftIO ((js_composedPath (toEvent self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composedPath Mozilla Event.composedPath documentation> 
+composedPath_ :: (MonadIO m, IsEvent self) => self -> m ()
+composedPath_ self = liftIO (void (js_composedPath (toEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stopPropagation\"](); })"
+        js_stopPropagation :: Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopPropagation Mozilla Event.stopPropagation documentation> 
+stopPropagation :: (MonadIO m, IsEvent self) => self -> m ()
+stopPropagation self = liftIO (js_stopPropagation (toEvent self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"stopImmediatePropagation\"](); })" js_stopImmediatePropagation ::
+        Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.stopImmediatePropagation Mozilla Event.stopImmediatePropagation documentation> 
+stopImmediatePropagation ::
+                         (MonadIO m, IsEvent self) => self -> m ()
+stopImmediatePropagation self
+  = liftIO (js_stopImmediatePropagation (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preventDefault\"](); })"
+        js_preventDefault :: Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.preventDefault Mozilla Event.preventDefault documentation> 
+preventDefault :: (MonadIO m, IsEvent self) => self -> m ()
+preventDefault self = liftIO (js_preventDefault (toEvent self))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"initEvent\"]($2, $3, $4); })"
+        js_initEvent :: Event -> JSString -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.initEvent Mozilla Event.initEvent documentation> 
+initEvent ::
+          (MonadIO m, IsEvent self, ToJSString type') =>
+            self -> type' -> Bool -> Bool -> m ()
+initEvent self type' bubbles cancelable
+  = liftIO
+      (js_initEvent (toEvent self) (toJSString type') bubbles cancelable)
+pattern NONE = 0
+pattern CAPTURING_PHASE = 1
+pattern AT_TARGET = 2
+pattern BUBBLING_PHASE = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        Event -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.type Mozilla Event.type documentation> 
+getType ::
+        (MonadIO m, IsEvent self, FromJSString result) => self -> m result
+getType self
+  = liftIO (fromJSString <$> (js_getType (toEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        Event -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
+getTarget ::
+          (MonadIO m, IsEvent self) => self -> m (Maybe EventTarget)
+getTarget self
+  = liftIO (nullableToMaybe <$> (js_getTarget (toEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
+getTargetUnsafe ::
+                (MonadIO m, IsEvent self, HasCallStack) => self -> m EventTarget
+getTargetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTarget (toEvent self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.target Mozilla Event.target documentation> 
+getTargetUnchecked ::
+                   (MonadIO m, IsEvent self) => self -> m EventTarget
+getTargetUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getTarget (toEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentTarget\"]; })"
+        js_getCurrentTarget :: Event -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
+getCurrentTarget ::
+                 (MonadIO m, IsEvent self) => self -> m (Maybe EventTarget)
+getCurrentTarget self
+  = liftIO (nullableToMaybe <$> (js_getCurrentTarget (toEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
+getCurrentTargetUnsafe ::
+                       (MonadIO m, IsEvent self, HasCallStack) => self -> m EventTarget
+getCurrentTargetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCurrentTarget (toEvent self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.currentTarget Mozilla Event.currentTarget documentation> 
+getCurrentTargetUnchecked ::
+                          (MonadIO m, IsEvent self) => self -> m EventTarget
+getCurrentTargetUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getCurrentTarget (toEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"eventPhase\"]; })"
+        js_getEventPhase :: Event -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.eventPhase Mozilla Event.eventPhase documentation> 
+getEventPhase :: (MonadIO m, IsEvent self) => self -> m Word
+getEventPhase self = liftIO (js_getEventPhase (toEvent self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cancelBubble\"] = $2; })"
+        js_setCancelBubble :: Event -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
+setCancelBubble ::
+                (MonadIO m, IsEvent self) => self -> Bool -> m ()
+setCancelBubble self val
+  = liftIO (js_setCancelBubble (toEvent self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"cancelBubble\"] ? 1 : 0); })"
+        js_getCancelBubble :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelBubble Mozilla Event.cancelBubble documentation> 
+getCancelBubble :: (MonadIO m, IsEvent self) => self -> m Bool
+getCancelBubble self = liftIO (js_getCancelBubble (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"bubbles\"] ? 1 : 0); })"
+        js_getBubbles :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.bubbles Mozilla Event.bubbles documentation> 
+getBubbles :: (MonadIO m, IsEvent self) => self -> m Bool
+getBubbles self = liftIO (js_getBubbles (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"cancelable\"] ? 1 : 0); })"
+        js_getCancelable :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.cancelable Mozilla Event.cancelable documentation> 
+getCancelable :: (MonadIO m, IsEvent self) => self -> m Bool
+getCancelable self = liftIO (js_getCancelable (toEvent self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"defaultPrevented\"] ? 1 : 0); })" js_getDefaultPrevented ::
+        Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.defaultPrevented Mozilla Event.defaultPrevented documentation> 
+getDefaultPrevented :: (MonadIO m, IsEvent self) => self -> m Bool
+getDefaultPrevented self
+  = liftIO (js_getDefaultPrevented (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"composed\"] ? 1 : 0); })"
+        js_getComposed :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.composed Mozilla Event.composed documentation> 
+getComposed :: (MonadIO m, IsEvent self) => self -> m Bool
+getComposed self = liftIO (js_getComposed (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isTrusted\"] ? 1 : 0); })"
+        js_getIsTrusted :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.isTrusted Mozilla Event.isTrusted documentation> 
+getIsTrusted :: (MonadIO m, IsEvent self) => self -> m Bool
+getIsTrusted self = liftIO (js_getIsTrusted (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timeStamp\"]; })"
+        js_getTimeStamp :: Event -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.timeStamp Mozilla Event.timeStamp documentation> 
+getTimeStamp :: (MonadIO m, IsEvent self) => self -> m Word
+getTimeStamp self = liftIO (js_getTimeStamp (toEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srcElement\"]; })"
+        js_getSrcElement :: Event -> IO EventTarget
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.srcElement Mozilla Event.srcElement documentation> 
+getSrcElement :: (MonadIO m, IsEvent self) => self -> m EventTarget
+getSrcElement self = liftIO (js_getSrcElement (toEvent self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"returnValue\"] = $2; })"
+        js_setReturnValue :: Event -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
+setReturnValue :: (MonadIO m, IsEvent self) => self -> Bool -> m ()
+setReturnValue self val
+  = liftIO (js_setReturnValue (toEvent self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"returnValue\"] ? 1 : 0); })"
+        js_getReturnValue :: Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Event.returnValue Mozilla Event.returnValue documentation> 
+getReturnValue :: (MonadIO m, IsEvent self) => self -> m Bool
+getReturnValue self = liftIO (js_getReturnValue (toEvent self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs b/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventListener.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EventListener
+       (js_handleEvent, handleEvent, EventListener(..),
+        gTypeEventListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"handleEvent\"]($2); })"
+        js_handleEvent :: EventListener -> Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventListener.handleEvent Mozilla EventListener.handleEvent documentation> 
+handleEvent ::
+            (MonadIO m, IsEvent event) => EventListener -> event -> m ()
+handleEvent self event
+  = liftIO (js_handleEvent self (toEvent event))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventSource.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EventSource
+       (js_newEventSource, newEventSource, js_close, close,
+        pattern CONNECTING, pattern OPEN, pattern CLOSED, js_getUrl,
+        getUrl, js_getWithCredentials, getWithCredentials,
+        js_getReadyState, getReadyState, open, message, error,
+        EventSource(..), gTypeEventSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2) => { return new window[\"EventSource\"]($1,\n$2); })" js_newEventSource ::
+        JSString -> Optional EventSourceInit -> IO EventSource
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation> 
+newEventSource ::
+               (MonadIO m, ToJSString url) =>
+                 url -> Maybe EventSourceInit -> m EventSource
+newEventSource url eventSourceInitDict
+  = liftIO
+      (js_newEventSource (toJSString url)
+         (maybeToOptional eventSourceInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        EventSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.close Mozilla EventSource.close documentation> 
+close :: (MonadIO m) => EventSource -> m ()
+close self = liftIO (js_close self)
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSED = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        EventSource -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.url Mozilla EventSource.url documentation> 
+getUrl ::
+       (MonadIO m, FromJSString result) => EventSource -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"withCredentials\"] ? 1 : 0); })" js_getWithCredentials ::
+        EventSource -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.withCredentials Mozilla EventSource.withCredentials documentation> 
+getWithCredentials :: (MonadIO m) => EventSource -> m Bool
+getWithCredentials self = liftIO (js_getWithCredentials self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: EventSource -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.readyState Mozilla EventSource.readyState documentation> 
+getReadyState :: (MonadIO m) => EventSource -> m Word
+getReadyState self = liftIO (js_getReadyState self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onopen Mozilla EventSource.onopen documentation> 
+open :: EventName EventSource Event
+open = unsafeEventNameAsync (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onmessage Mozilla EventSource.onmessage documentation> 
+message :: EventName EventSource MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventSource.onerror Mozilla EventSource.onerror documentation> 
+error :: EventName EventSource UIEvent
+error = unsafeEventNameAsync (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/EventTarget.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.EventTarget
+       (js_addEventListener, addEventListener, js_removeEventListener,
+        removeEventListener, js_dispatchEvent, dispatchEvent,
+        dispatchEvent_, EventTarget(..), gTypeEventTarget, IsEventTarget,
+        toEventTarget)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"addEventListener\"]($2, $3,\n$4); })" js_addEventListener ::
+        EventTarget ->
+          JSString ->
+            Optional EventListener -> AddEventListenerOptionsOrBool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.addEventListener Mozilla EventTarget.addEventListener documentation> 
+addEventListener ::
+                 (MonadIO m, IsEventTarget self, ToJSString type',
+                  IsAddEventListenerOptionsOrBool options) =>
+                   self -> type' -> Maybe EventListener -> options -> m ()
+addEventListener self type' callback options
+  = liftIO
+      (toJSVal options >>=
+         \ options' ->
+           js_addEventListener (toEventTarget self) (toJSString type')
+             (maybeToOptional callback)
+             (AddEventListenerOptionsOrBool options'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"removeEventListener\"]($2,\n$3, $4); })" js_removeEventListener
+        ::
+        EventTarget ->
+          JSString ->
+            Optional EventListener -> EventListenerOptionsOrBool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.removeEventListener Mozilla EventTarget.removeEventListener documentation> 
+removeEventListener ::
+                    (MonadIO m, IsEventTarget self, ToJSString type',
+                     IsEventListenerOptionsOrBool options) =>
+                      self -> type' -> Maybe EventListener -> options -> m ()
+removeEventListener self type' callback options
+  = liftIO
+      (toJSVal options >>=
+         \ options' ->
+           js_removeEventListener (toEventTarget self) (toJSString type')
+             (maybeToOptional callback)
+             (EventListenerOptionsOrBool options'))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return ($1[\"dispatchEvent\"]($2) ? 1 : 0); })" js_dispatchEvent ::
+        EventTarget -> Event -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
+dispatchEvent ::
+              (MonadIO m, IsEventTarget self, IsEvent event) =>
+                self -> event -> m Bool
+dispatchEvent self event
+  = liftIO (js_dispatchEvent (toEventTarget self) (toEvent event))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget.dispatchEvent Mozilla EventTarget.dispatchEvent documentation> 
+dispatchEvent_ ::
+               (MonadIO m, IsEventTarget self, IsEvent event) =>
+                 self -> event -> m ()
+dispatchEvent_ self event
+  = liftIO
+      (void (js_dispatchEvent (toEventTarget self) (toEvent event)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/File.hs b/src/GHCJS/DOM/JSFFI/Generated/File.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/File.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.File
+       (js_newFile, newFile, js_getName, getName, js_getLastModified,
+        getLastModified, File(..), gTypeFile)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return new window[\"File\"]($1, $2, $3); })"
+        js_newFile ::
+        JSVal -> JSString -> Optional FilePropertyBag -> IO File
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation> 
+newFile ::
+        (MonadIO m, IsBlobPart fileBits, ToJSString fileName) =>
+          [fileBits] -> fileName -> Maybe FilePropertyBag -> m File
+newFile fileBits fileName options
+  = liftIO
+      (toJSVal fileBits >>= \ fileBits' -> js_newFile fileBits'
+         (toJSString fileName)
+         (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        File -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.name Mozilla File.name documentation> 
+getName :: (MonadIO m, FromJSString result) => File -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastModified\"]; })"
+        js_getLastModified :: File -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/File.lastModified Mozilla File.lastModified documentation> 
+getLastModified :: (MonadIO m) => File -> m Int64
+getLastModified self = liftIO (round <$> (js_getLastModified self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileError.hs b/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileError.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FileError
+       (pattern NOT_FOUND_ERR, pattern SECURITY_ERR, pattern ABORT_ERR,
+        pattern NOT_READABLE_ERR, pattern ENCODING_ERR,
+        pattern NO_MODIFICATION_ALLOWED_ERR, pattern INVALID_STATE_ERR,
+        pattern SYNTAX_ERR, pattern INVALID_MODIFICATION_ERR,
+        pattern QUOTA_EXCEEDED_ERR, pattern TYPE_MISMATCH_ERR,
+        pattern PATH_EXISTS_ERR, js_getCode, getCode, FileError(..),
+        gTypeFileError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern NOT_FOUND_ERR = 1
+pattern SECURITY_ERR = 2
+pattern ABORT_ERR = 3
+pattern NOT_READABLE_ERR = 4
+pattern ENCODING_ERR = 5
+pattern NO_MODIFICATION_ALLOWED_ERR = 6
+pattern INVALID_STATE_ERR = 7
+pattern SYNTAX_ERR = 8
+pattern INVALID_MODIFICATION_ERR = 9
+pattern QUOTA_EXCEEDED_ERR = 10
+pattern TYPE_MISMATCH_ERR = 11
+pattern PATH_EXISTS_ERR = 12
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        FileError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileError.code Mozilla FileError.code documentation> 
+getCode :: (MonadIO m) => FileError -> m Word
+getCode self = liftIO (js_getCode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileException.hs b/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileException.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FileException
+       (js_toString, toString, toString_, pattern NOT_FOUND_ERR,
+        pattern SECURITY_ERR, pattern ABORT_ERR, pattern NOT_READABLE_ERR,
+        pattern ENCODING_ERR, pattern NO_MODIFICATION_ALLOWED_ERR,
+        pattern INVALID_STATE_ERR, pattern SYNTAX_ERR,
+        pattern INVALID_MODIFICATION_ERR, pattern QUOTA_EXCEEDED_ERR,
+        pattern TYPE_MISMATCH_ERR, pattern PATH_EXISTS_ERR, js_getCode,
+        getCode, js_getName, getName, js_getMessage, getMessage,
+        FileException(..), gTypeFileException)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: FileException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => FileException -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.toString Mozilla FileException.toString documentation> 
+toString_ :: (MonadIO m) => FileException -> m ()
+toString_ self = liftIO (void (js_toString self))
+pattern NOT_FOUND_ERR = 1
+pattern SECURITY_ERR = 2
+pattern ABORT_ERR = 3
+pattern NOT_READABLE_ERR = 4
+pattern ENCODING_ERR = 5
+pattern NO_MODIFICATION_ALLOWED_ERR = 6
+pattern INVALID_STATE_ERR = 7
+pattern SYNTAX_ERR = 8
+pattern INVALID_MODIFICATION_ERR = 9
+pattern QUOTA_EXCEEDED_ERR = 10
+pattern TYPE_MISMATCH_ERR = 11
+pattern PATH_EXISTS_ERR = 12
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        FileException -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.code Mozilla FileException.code documentation> 
+getCode :: (MonadIO m) => FileException -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        FileException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.name Mozilla FileException.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => FileException -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        FileException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileException.message Mozilla FileException.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => FileException -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileList.hs b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileList.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FileList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getLength,
+        getLength, FileList(..), gTypeFileList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        FileList -> Word -> IO (Nullable File)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+item :: (MonadIO m) => FileList -> Word -> m (Maybe File)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+item_ :: (MonadIO m) => FileList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => FileList -> Word -> m File
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.item Mozilla FileList.item documentation> 
+itemUnchecked :: (MonadIO m) => FileList -> Word -> m File
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        FileList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileList.length Mozilla FileList.length documentation> 
+getLength :: (MonadIO m) => FileList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReader.hs
@@ -0,0 +1,153 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FileReader
+       (js_newFileReader, newFileReader, js_readAsArrayBuffer,
+        readAsArrayBuffer, js_readAsBinaryString, readAsBinaryString,
+        js_readAsText, readAsText, js_readAsDataURL, readAsDataURL,
+        js_abort, abort, pattern EMPTY, pattern LOADING, pattern DONE,
+        js_getReadyState, getReadyState, js_getResult, getResult,
+        getResultUnsafe, getResultUnchecked, js_getError, getError,
+        loadStart, progress, load, abortEvent, error, loadEnd,
+        FileReader(..), gTypeFileReader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"FileReader\"](); })"
+        js_newFileReader :: IO FileReader
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation> 
+newFileReader :: (MonadIO m) => m FileReader
+newFileReader = liftIO (js_newFileReader)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsArrayBuffer\"]($2); })"
+        js_readAsArrayBuffer :: FileReader -> Optional Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsArrayBuffer Mozilla FileReader.readAsArrayBuffer documentation> 
+readAsArrayBuffer ::
+                  (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsArrayBuffer self blob
+  = liftIO
+      (js_readAsArrayBuffer self (maybeToOptional (fmap toBlob blob)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsBinaryString\"]($2); })"
+        js_readAsBinaryString :: FileReader -> Optional Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsBinaryString Mozilla FileReader.readAsBinaryString documentation> 
+readAsBinaryString ::
+                   (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsBinaryString self blob
+  = liftIO
+      (js_readAsBinaryString self (maybeToOptional (fmap toBlob blob)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
+        js_readAsText ::
+        FileReader -> Optional Blob -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsText Mozilla FileReader.readAsText documentation> 
+readAsText ::
+           (MonadIO m, IsBlob blob, ToJSString encoding) =>
+             FileReader -> Maybe blob -> Maybe encoding -> m ()
+readAsText self blob encoding
+  = liftIO
+      (js_readAsText self (maybeToOptional (fmap toBlob blob))
+         (toOptionalJSString encoding))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsDataURL\"]($2); })"
+        js_readAsDataURL :: FileReader -> Optional Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readAsDataURL Mozilla FileReader.readAsDataURL documentation> 
+readAsDataURL ::
+              (MonadIO m, IsBlob blob) => FileReader -> Maybe blob -> m ()
+readAsDataURL self blob
+  = liftIO
+      (js_readAsDataURL self (maybeToOptional (fmap toBlob blob)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        FileReader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.abort Mozilla FileReader.abort documentation> 
+abort :: (MonadIO m) => FileReader -> m ()
+abort self = liftIO (js_abort self)
+pattern EMPTY = 0
+pattern LOADING = 1
+pattern DONE = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: FileReader -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.readyState Mozilla FileReader.readyState documentation> 
+getReadyState :: (MonadIO m) => FileReader -> m Word
+getReadyState self = liftIO (js_getReadyState self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })" js_getResult ::
+        FileReader -> IO (Nullable StringOrArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResult ::
+          (MonadIO m) => FileReader -> m (Maybe StringOrArrayBuffer)
+getResult self = liftIO (nullableToMaybe <$> (js_getResult self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResultUnsafe ::
+                (MonadIO m, HasCallStack) => FileReader -> m StringOrArrayBuffer
+getResultUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getResult self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.result Mozilla FileReader.result documentation> 
+getResultUnchecked ::
+                   (MonadIO m) => FileReader -> m StringOrArrayBuffer
+getResultUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getResult self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        FileReader -> IO FileError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.error Mozilla FileReader.error documentation> 
+getError :: (MonadIO m) => FileReader -> m FileError
+getError self = liftIO (js_getError self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadstart Mozilla FileReader.onloadstart documentation> 
+loadStart :: EventName FileReader ProgressEvent
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onprogress Mozilla FileReader.onprogress documentation> 
+progress :: EventName FileReader ProgressEvent
+progress = unsafeEventNameAsync (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onload Mozilla FileReader.onload documentation> 
+load :: EventName FileReader UIEvent
+load = unsafeEventNameAsync (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onabort Mozilla FileReader.onabort documentation> 
+abortEvent :: EventName FileReader UIEvent
+abortEvent = unsafeEventNameAsync (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onerror Mozilla FileReader.onerror documentation> 
+error :: EventName FileReader UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReader.onloadend Mozilla FileReader.onloadend documentation> 
+loadEnd :: EventName FileReader ProgressEvent
+loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FileReaderSync.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FileReaderSync
+       (js_newFileReaderSync, newFileReaderSync, js_readAsArrayBuffer,
+        readAsArrayBuffer, readAsArrayBuffer_, js_readAsBinaryString,
+        readAsBinaryString, readAsBinaryString_, js_readAsText, readAsText,
+        readAsText_, js_readAsDataURL, readAsDataURL, readAsDataURL_,
+        FileReaderSync(..), gTypeFileReaderSync)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"FileReaderSync\"](); })"
+        js_newFileReaderSync :: IO FileReaderSync
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation> 
+newFileReaderSync :: (MonadIO m) => m FileReaderSync
+newFileReaderSync = liftIO (js_newFileReaderSync)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsArrayBuffer\"]($2); })"
+        js_readAsArrayBuffer :: FileReaderSync -> Blob -> IO ArrayBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
+readAsArrayBuffer ::
+                  (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ArrayBuffer
+readAsArrayBuffer self blob
+  = liftIO (js_readAsArrayBuffer self (toBlob blob))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsArrayBuffer Mozilla FileReaderSync.readAsArrayBuffer documentation> 
+readAsArrayBuffer_ ::
+                   (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsArrayBuffer_ self blob
+  = liftIO (void (js_readAsArrayBuffer self (toBlob blob)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsBinaryString\"]($2); })"
+        js_readAsBinaryString :: FileReaderSync -> Blob -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
+readAsBinaryString ::
+                   (MonadIO m, IsBlob blob, FromJSString result) =>
+                     FileReaderSync -> blob -> m result
+readAsBinaryString self blob
+  = liftIO
+      (fromJSString <$> (js_readAsBinaryString self (toBlob blob)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsBinaryString Mozilla FileReaderSync.readAsBinaryString documentation> 
+readAsBinaryString_ ::
+                    (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsBinaryString_ self blob
+  = liftIO (void (js_readAsBinaryString self (toBlob blob)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"readAsText\"]($2, $3); })"
+        js_readAsText ::
+        FileReaderSync -> Blob -> Optional JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
+readAsText ::
+           (MonadIO m, IsBlob blob, ToJSString encoding,
+            FromJSString result) =>
+             FileReaderSync -> blob -> Maybe encoding -> m result
+readAsText self blob encoding
+  = liftIO
+      (fromJSString <$>
+         (js_readAsText self (toBlob blob) (toOptionalJSString encoding)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsText Mozilla FileReaderSync.readAsText documentation> 
+readAsText_ ::
+            (MonadIO m, IsBlob blob, ToJSString encoding) =>
+              FileReaderSync -> blob -> Maybe encoding -> m ()
+readAsText_ self blob encoding
+  = liftIO
+      (void
+         (js_readAsText self (toBlob blob) (toOptionalJSString encoding)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"readAsDataURL\"]($2); })"
+        js_readAsDataURL :: FileReaderSync -> Blob -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
+readAsDataURL ::
+              (MonadIO m, IsBlob blob, FromJSString result) =>
+                FileReaderSync -> blob -> m result
+readAsDataURL self blob
+  = liftIO (fromJSString <$> (js_readAsDataURL self (toBlob blob)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync.readAsDataURL Mozilla FileReaderSync.readAsDataURL documentation> 
+readAsDataURL_ ::
+               (MonadIO m, IsBlob blob) => FileReaderSync -> blob -> m ()
+readAsDataURL_ self blob
+  = liftIO (void (js_readAsDataURL self (toBlob blob)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FocusEvent.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FocusEvent
+       (js_newFocusEvent, newFocusEvent, js_getRelatedTarget,
+        getRelatedTarget, getRelatedTargetUnsafe,
+        getRelatedTargetUnchecked, FocusEvent(..), gTypeFocusEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"FocusEvent\"]($1, $2); })" js_newFocusEvent ::
+        JSString -> Optional FocusEventInit -> IO FocusEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation> 
+newFocusEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe FocusEventInit -> m FocusEvent
+newFocusEvent type' eventInitDict
+  = liftIO
+      (js_newFocusEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: FocusEvent -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
+getRelatedTarget ::
+                 (MonadIO m) => FocusEvent -> m (Maybe EventTarget)
+getRelatedTarget self
+  = liftIO (nullableToMaybe <$> (js_getRelatedTarget self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
+getRelatedTargetUnsafe ::
+                       (MonadIO m, HasCallStack) => FocusEvent -> m EventTarget
+getRelatedTargetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRelatedTarget self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent.relatedTarget Mozilla FocusEvent.relatedTarget documentation> 
+getRelatedTargetUnchecked ::
+                          (MonadIO m) => FocusEvent -> m EventTarget
+getRelatedTargetUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getRelatedTarget self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFace.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FontFace
+       (js_newFontFace, newFontFace, js_load, load, load_, js_setFamily,
+        setFamily, js_getFamily, getFamily, js_setStyle, setStyle,
+        js_getStyle, getStyle, js_setWeight, setWeight, js_getWeight,
+        getWeight, js_setStretch, setStretch, js_getStretch, getStretch,
+        js_setUnicodeRange, setUnicodeRange, js_getUnicodeRange,
+        getUnicodeRange, js_setVariant, setVariant, js_getVariant,
+        getVariant, js_setFeatureSettings, setFeatureSettings,
+        js_getFeatureSettings, getFeatureSettings, js_getStatus, getStatus,
+        js_getLoaded, getLoaded, FontFace(..), gTypeFontFace)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return new window[\"FontFace\"]($1, $2,\n$3); })" js_newFontFace ::
+        JSString ->
+          StringOrBinaryData -> Optional FontFaceDescriptors -> IO FontFace
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace Mozilla FontFace documentation> 
+newFontFace ::
+            (MonadIO m, ToJSString family', IsStringOrBinaryData source) =>
+              family' -> source -> Maybe FontFaceDescriptors -> m FontFace
+newFontFace family' source descriptors
+  = liftIO
+      (toJSVal source >>=
+         \ source' ->
+           js_newFontFace (toJSString family') (StringOrBinaryData source')
+         (maybeToOptional descriptors))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"load\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_load :: FontFace -> IO (JSVal, FontFace)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
+load :: (MonadIO m) => FontFace -> m FontFace
+load self = liftIO ((js_load self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.load Mozilla FontFace.load documentation> 
+load_ :: (MonadIO m) => FontFace -> m ()
+load_ self = liftIO (void (js_load self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"family\"] = $2; })" js_setFamily
+        :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
+setFamily :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setFamily self val = liftIO (js_setFamily self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"family\"]; })" js_getFamily ::
+        FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.family Mozilla FontFace.family documentation> 
+getFamily ::
+          (MonadIO m, FromJSString result) => FontFace -> m result
+getFamily self = liftIO (fromJSString <$> (js_getFamily self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"style\"] = $2; })" js_setStyle ::
+        FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
+setStyle :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setStyle self val = liftIO (js_setStyle self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.style Mozilla FontFace.style documentation> 
+getStyle ::
+         (MonadIO m, FromJSString result) => FontFace -> m result
+getStyle self = liftIO (fromJSString <$> (js_getStyle self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"weight\"] = $2; })" js_setWeight
+        :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
+setWeight :: (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setWeight self val = liftIO (js_setWeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"weight\"]; })" js_getWeight ::
+        FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.weight Mozilla FontFace.weight documentation> 
+getWeight ::
+          (MonadIO m, FromJSString result) => FontFace -> m result
+getWeight self = liftIO (fromJSString <$> (js_getWeight self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"stretch\"] = $2; })"
+        js_setStretch :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
+setStretch ::
+           (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setStretch self val = liftIO (js_setStretch self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stretch\"]; })" js_getStretch ::
+        FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.stretch Mozilla FontFace.stretch documentation> 
+getStretch ::
+           (MonadIO m, FromJSString result) => FontFace -> m result
+getStretch self = liftIO (fromJSString <$> (js_getStretch self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"unicodeRange\"] = $2; })"
+        js_setUnicodeRange :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
+setUnicodeRange ::
+                (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setUnicodeRange self val
+  = liftIO (js_setUnicodeRange self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unicodeRange\"]; })"
+        js_getUnicodeRange :: FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.unicodeRange Mozilla FontFace.unicodeRange documentation> 
+getUnicodeRange ::
+                (MonadIO m, FromJSString result) => FontFace -> m result
+getUnicodeRange self
+  = liftIO (fromJSString <$> (js_getUnicodeRange self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"variant\"] = $2; })"
+        js_setVariant :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
+setVariant ::
+           (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setVariant self val = liftIO (js_setVariant self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"variant\"]; })" js_getVariant ::
+        FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.variant Mozilla FontFace.variant documentation> 
+getVariant ::
+           (MonadIO m, FromJSString result) => FontFace -> m result
+getVariant self = liftIO (fromJSString <$> (js_getVariant self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"featureSettings\"] = $2; })"
+        js_setFeatureSettings :: FontFace -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
+setFeatureSettings ::
+                   (MonadIO m, ToJSString val) => FontFace -> val -> m ()
+setFeatureSettings self val
+  = liftIO (js_setFeatureSettings self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"featureSettings\"]; })"
+        js_getFeatureSettings :: FontFace -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.featureSettings Mozilla FontFace.featureSettings documentation> 
+getFeatureSettings ::
+                   (MonadIO m, FromJSString result) => FontFace -> m result
+getFeatureSettings self
+  = liftIO (fromJSString <$> (js_getFeatureSettings self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        FontFace -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.status Mozilla FontFace.status documentation> 
+getStatus :: (MonadIO m) => FontFace -> m FontFaceLoadStatus
+getStatus self
+  = liftIO ((js_getStatus self) >>= fromJSValUnchecked)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"loaded\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getLoaded :: FontFace -> IO (JSVal, FontFace)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFace.loaded Mozilla FontFace.loaded documentation> 
+getLoaded :: (MonadIO m) => FontFace -> m FontFace
+getLoaded self
+  = liftIO ((js_getLoaded self) >>= checkPromiseResult)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FontFaceSet.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FontFaceSet
+       (js_newFontFaceSet, newFontFaceSet, js_has, has, has_, js_add, add,
+        add_, js_delete, delete, delete_, js_clear, clear, js_load, load,
+        load_, js_check, check, check_, js_getSize, getSize, loading,
+        loadingDone, loadingerror, js_getReady, getReady, js_getStatus,
+        getStatus, FontFaceSet(..), gTypeFontFaceSet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"FontFaceSet\"]($1); })"
+        js_newFontFaceSet :: JSVal -> IO FontFaceSet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet Mozilla FontFaceSet documentation> 
+newFontFaceSet :: (MonadIO m) => [FontFace] -> m FontFaceSet
+newFontFaceSet initialFaces
+  = liftIO
+      (toJSVal initialFaces >>=
+         \ initialFaces' -> js_newFontFaceSet initialFaces')
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
+        :: FontFaceSet -> FontFace -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
+has :: (MonadIO m) => FontFaceSet -> FontFace -> m Bool
+has self font = liftIO (js_has self font)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.has Mozilla FontFaceSet.has documentation> 
+has_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
+has_ self font = liftIO (void (js_has self font))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"add\"]($2); })" js_add ::
+        FontFaceSet -> FontFace -> IO FontFaceSet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
+add :: (MonadIO m) => FontFaceSet -> FontFace -> m FontFaceSet
+add self font = liftIO (js_add self font)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.add Mozilla FontFaceSet.add documentation> 
+add_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
+add_ self font = liftIO (void (js_add self font))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"delete\"]($2) ? 1 : 0); })"
+        js_delete :: FontFaceSet -> FontFace -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
+delete :: (MonadIO m) => FontFaceSet -> FontFace -> m Bool
+delete self font = liftIO (js_delete self font)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.delete Mozilla FontFaceSet.delete documentation> 
+delete_ :: (MonadIO m) => FontFaceSet -> FontFace -> m ()
+delete_ self font = liftIO (void (js_delete self font))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        FontFaceSet -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.clear Mozilla FontFaceSet.clear documentation> 
+clear :: (MonadIO m) => FontFaceSet -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"load\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_load ::
+        FontFaceSet -> JSString -> Optional JSString -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
+load ::
+     (MonadIO m, ToJSString font, ToJSString text) =>
+       FontFaceSet -> font -> Maybe text -> m [FontFace]
+load self font text
+  = liftIO
+      (((js_load self (toJSString font) (toOptionalJSString text)) >>=
+          checkPromiseResult)
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.load Mozilla FontFaceSet.load documentation> 
+load_ ::
+      (MonadIO m, ToJSString font, ToJSString text) =>
+        FontFaceSet -> font -> Maybe text -> m ()
+load_ self font text
+  = liftIO
+      (void (js_load self (toJSString font) (toOptionalJSString text)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return ($1[\"check\"]($2, $3) ? 1 : 0); })"
+        js_check :: FontFaceSet -> JSString -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
+check ::
+      (MonadIO m, ToJSString font, ToJSString text) =>
+        FontFaceSet -> font -> Maybe text -> m Bool
+check self font text
+  = liftIO
+      (js_check self (toJSString font) (toOptionalJSString text))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.check Mozilla FontFaceSet.check documentation> 
+check_ ::
+       (MonadIO m, ToJSString font, ToJSString text) =>
+         FontFaceSet -> font -> Maybe text -> m ()
+check_ self font text
+  = liftIO
+      (void (js_check self (toJSString font) (toOptionalJSString text)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        FontFaceSet -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.size Mozilla FontFaceSet.size documentation> 
+getSize :: (MonadIO m) => FontFaceSet -> m Int
+getSize self = liftIO (js_getSize self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloading Mozilla FontFaceSet.onloading documentation> 
+loading :: EventName FontFaceSet Event
+loading = unsafeEventName (toJSString "loading")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingdone Mozilla FontFaceSet.onloadingdone documentation> 
+loadingDone :: EventName FontFaceSet Event
+loadingDone = unsafeEventName (toJSString "loadingdone")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.onloadingerror Mozilla FontFaceSet.onloadingerror documentation> 
+loadingerror :: EventName FontFaceSet onloadingerror
+loadingerror = unsafeEventName (toJSString "loadingerror")
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: FontFaceSet -> IO (JSVal, FontFaceSet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.ready Mozilla FontFaceSet.ready documentation> 
+getReady :: (MonadIO m) => FontFaceSet -> m FontFaceSet
+getReady self = liftIO ((js_getReady self) >>= checkPromiseResult)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        FontFaceSet -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet.status Mozilla FontFaceSet.status documentation> 
+getStatus :: (MonadIO m) => FontFaceSet -> m FontFaceSetLoadStatus
+getStatus self
+  = liftIO ((js_getStatus self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/FormData.hs b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/FormData.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.FormData
+       (js_newFormData, newFormData, js_append, append, js_appendBlob,
+        appendBlob, FormData(..), gTypeFormData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"FormData\"]($1); })"
+        js_newFormData :: Optional HTMLFormElement -> IO FormData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation> 
+newFormData :: (MonadIO m) => Maybe HTMLFormElement -> m FormData
+newFormData form = liftIO (js_newFormData (maybeToOptional form))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
+        :: FormData -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
+append ::
+       (MonadIO m, ToJSString name, ToJSString value) =>
+         FormData -> name -> value -> m ()
+append self name value
+  = liftIO (js_append self (toJSString name) (toJSString value))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"append\"]($2, $3, $4); })"
+        js_appendBlob ::
+        FormData -> JSString -> Blob -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/FormData.append Mozilla FormData.append documentation> 
+appendBlob ::
+           (MonadIO m, ToJSString name, IsBlob value, ToJSString filename) =>
+             FormData -> name -> value -> Maybe filename -> m ()
+appendBlob self name value filename
+  = liftIO
+      (js_appendBlob self (toJSString name) (toBlob value)
+         (toOptionalJSString filename))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GainNode.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GainNode
+       (js_getGain, getGain, GainNode(..), gTypeGainNode) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gain\"]; })" js_getGain ::
+        GainNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GainNode.gain Mozilla GainNode.gain documentation> 
+getGain :: (MonadIO m) => GainNode -> m AudioParam
+getGain self = liftIO (js_getGain self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Gamepad.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Gamepad
+       (js_getId, getId, js_getIndex, getIndex, js_getConnected,
+        getConnected, js_getTimestamp, getTimestamp, js_getMapping,
+        getMapping, js_getAxes, getAxes, js_getButtons, getButtons,
+        Gamepad(..), gTypeGamepad)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        Gamepad -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.id Mozilla Gamepad.id documentation> 
+getId :: (MonadIO m, FromJSString result) => Gamepad -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })" js_getIndex ::
+        Gamepad -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.index Mozilla Gamepad.index documentation> 
+getIndex :: (MonadIO m) => Gamepad -> m Word
+getIndex self = liftIO (js_getIndex self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"connected\"] ? 1 : 0); })"
+        js_getConnected :: Gamepad -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.connected Mozilla Gamepad.connected documentation> 
+getConnected :: (MonadIO m) => Gamepad -> m Bool
+getConnected self = liftIO (js_getConnected self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: Gamepad -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.timestamp Mozilla Gamepad.timestamp documentation> 
+getTimestamp :: (MonadIO m) => Gamepad -> m Double
+getTimestamp self = liftIO (js_getTimestamp self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mapping\"]; })" js_getMapping ::
+        Gamepad -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.mapping Mozilla Gamepad.mapping documentation> 
+getMapping ::
+           (MonadIO m, FromJSString result) => Gamepad -> m result
+getMapping self = liftIO (fromJSString <$> (js_getMapping self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"axes\"]; })" js_getAxes ::
+        Gamepad -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.axes Mozilla Gamepad.axes documentation> 
+getAxes :: (MonadIO m) => Gamepad -> m [Double]
+getAxes self = liftIO ((js_getAxes self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"buttons\"]; })" js_getButtons ::
+        Gamepad -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad.buttons Mozilla Gamepad.buttons documentation> 
+getButtons :: (MonadIO m) => Gamepad -> m [GamepadButton]
+getButtons self
+  = liftIO ((js_getButtons self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadButton.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GamepadButton
+       (js_getPressed, getPressed, js_getValue, getValue,
+        GamepadButton(..), gTypeGamepadButton)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"pressed\"] ? 1 : 0); })"
+        js_getPressed :: GamepadButton -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.pressed Mozilla GamepadButton.pressed documentation> 
+getPressed :: (MonadIO m) => GamepadButton -> m Bool
+getPressed self = liftIO (js_getPressed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        GamepadButton -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton.value Mozilla GamepadButton.value documentation> 
+getValue :: (MonadIO m) => GamepadButton -> m Double
+getValue self = liftIO (js_getValue self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GamepadEvent.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GamepadEvent
+       (js_newGamepadEvent, newGamepadEvent, js_getGamepad, getGamepad,
+        getGamepadUnsafe, getGamepadUnchecked, GamepadEvent(..),
+        gTypeGamepadEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"GamepadEvent\"]($1,\n$2); })" js_newGamepadEvent ::
+        JSString -> GamepadEventInit -> IO GamepadEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation> 
+newGamepadEvent ::
+                (MonadIO m, ToJSString type') =>
+                  type' -> GamepadEventInit -> m GamepadEvent
+newGamepadEvent type' eventInitDict
+  = liftIO (js_newGamepadEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gamepad\"]; })" js_getGamepad ::
+        GamepadEvent -> IO (Nullable Gamepad)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
+getGamepad :: (MonadIO m) => GamepadEvent -> m (Maybe Gamepad)
+getGamepad self = liftIO (nullableToMaybe <$> (js_getGamepad self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
+getGamepadUnsafe ::
+                 (MonadIO m, HasCallStack) => GamepadEvent -> m Gamepad
+getGamepadUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getGamepad self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent.gamepad Mozilla GamepadEvent.gamepad documentation> 
+getGamepadUnchecked :: (MonadIO m) => GamepadEvent -> m Gamepad
+getGamepadUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getGamepad self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Geolocation.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Geolocation
+       (js_getCurrentPosition, getCurrentPosition, js_watchPosition,
+        watchPosition, watchPosition_, js_clearWatch, clearWatch,
+        Geolocation(..), gTypeGeolocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getCurrentPosition\"]($2, $3,\n$4); })" js_getCurrentPosition ::
+        Geolocation ->
+          PositionCallback ->
+            Optional PositionErrorCallback -> Optional PositionOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation> 
+getCurrentPosition ::
+                   (MonadIO m) =>
+                     Geolocation ->
+                       PositionCallback ->
+                         Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
+getCurrentPosition self successCallback errorCallback options
+  = liftIO
+      (js_getCurrentPosition self successCallback
+         (maybeToOptional errorCallback)
+         (maybeToOptional options))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"watchPosition\"]($2, $3, $4); })" js_watchPosition ::
+        Geolocation ->
+          PositionCallback ->
+            Optional PositionErrorCallback ->
+              Optional PositionOptions -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
+watchPosition ::
+              (MonadIO m) =>
+                Geolocation ->
+                  PositionCallback ->
+                    Maybe PositionErrorCallback -> Maybe PositionOptions -> m Int
+watchPosition self successCallback errorCallback options
+  = liftIO
+      (js_watchPosition self successCallback
+         (maybeToOptional errorCallback)
+         (maybeToOptional options))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.watchPosition Mozilla Geolocation.watchPosition documentation> 
+watchPosition_ ::
+               (MonadIO m) =>
+                 Geolocation ->
+                   PositionCallback ->
+                     Maybe PositionErrorCallback -> Maybe PositionOptions -> m ()
+watchPosition_ self successCallback errorCallback options
+  = liftIO
+      (void
+         (js_watchPosition self successCallback
+            (maybeToOptional errorCallback)
+            (maybeToOptional options)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearWatch\"]($2); })"
+        js_clearWatch :: Geolocation -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.clearWatch Mozilla Geolocation.clearWatch documentation> 
+clearWatch :: (MonadIO m) => Geolocation -> Int -> m ()
+clearWatch self watchId = liftIO (js_clearWatch self watchId)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs b/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Geoposition.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Geoposition
+       (js_getCoords, getCoords, js_getTimestamp, getTimestamp,
+        Geoposition(..), gTypeGeoposition)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
+        Geoposition -> IO Coordinates
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.coords Mozilla Geoposition.coords documentation> 
+getCoords :: (MonadIO m) => Geoposition -> m Coordinates
+getCoords self = liftIO (js_getCoords self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timestamp\"]; })"
+        js_getTimestamp :: Geoposition -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition.timestamp Mozilla Geoposition.timestamp documentation> 
+getTimestamp :: (MonadIO m) => Geoposition -> m Word
+getTimestamp self = liftIO (js_getTimestamp self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalCrypto.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GlobalCrypto
+       (js_getCrypto, getCrypto, GlobalCrypto(..), gTypeGlobalCrypto,
+        IsGlobalCrypto, toGlobalCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"crypto\"]; })" js_getCrypto ::
+        GlobalCrypto -> IO Crypto
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalCrypto.crypto Mozilla GlobalCrypto.crypto documentation> 
+getCrypto :: (MonadIO m, IsGlobalCrypto self) => self -> m Crypto
+getCrypto self = liftIO (js_getCrypto (toGlobalCrypto self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalEventHandlers.hs
@@ -0,0 +1,528 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GlobalEventHandlers
+       (abort, autocomplete, autocompleteerror, blur, canPlay,
+        canPlayThrough, change, click, contextMenu, cueChange, dblClick,
+        drag, dragEnd, dragEnter, dragLeave, dragOver, dragStart, drop,
+        durationChange, emptied, ended, error, focus, input, invalid,
+        keyDown, keyPress, keyUp, load, loadedData, loadedMetadata,
+        loadStart, mouseDown, mouseEnter, mouseLeave, mouseMove, mouseOut,
+        mouseOver, mouseUp, mouseWheel, pause, play, playing, progress,
+        rateChange, rejectionhandled, reset, resize, scroll, seeked,
+        seeking, select, stalled, submit, suspend, timeUpdate, toggle,
+        unhandledrejection, volumeChange, waiting, transitionEnd,
+        animationEnd, animationIteration, animationStart, search, wheel,
+        touchCancel, touchEnd, touchMove, touchStart, touchForcechange,
+        webKitMouseForcechanged, webKitMouseForcedown,
+        webKitMouseForcewillbegin, webKitMouseForceup,
+        webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop,
+        GlobalEventHandlers(..), gTypeGlobalEventHandlers,
+        IsGlobalEventHandlers, toGlobalEventHandlers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onabort Mozilla GlobalEventHandlers.onabort documentation> 
+abort ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self UIEvent
+abort = unsafeEventNameAsync (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onautocomplete Mozilla GlobalEventHandlers.onautocomplete documentation> 
+autocomplete ::
+             (IsGlobalEventHandlers self, IsEventTarget self) =>
+               EventName self onautocomplete
+autocomplete = unsafeEventName (toJSString "autocomplete")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onautocompleteerror Mozilla GlobalEventHandlers.onautocompleteerror documentation> 
+autocompleteerror ::
+                  (IsGlobalEventHandlers self, IsEventTarget self) =>
+                    EventName self onautocompleteerror
+autocompleteerror
+  = unsafeEventName (toJSString "autocompleteerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onblur Mozilla GlobalEventHandlers.onblur documentation> 
+blur ::
+     (IsGlobalEventHandlers self, IsEventTarget self) =>
+       EventName self FocusEvent
+blur = unsafeEventNameAsync (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncanplay Mozilla GlobalEventHandlers.oncanplay documentation> 
+canPlay ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+canPlay = unsafeEventName (toJSString "canplay")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncanplaythrough Mozilla GlobalEventHandlers.oncanplaythrough documentation> 
+canPlayThrough ::
+               (IsGlobalEventHandlers self, IsEventTarget self) =>
+                 EventName self Event
+canPlayThrough = unsafeEventName (toJSString "canplaythrough")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onchange Mozilla GlobalEventHandlers.onchange documentation> 
+change ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onclick Mozilla GlobalEventHandlers.onclick documentation> 
+click ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncontextmenu Mozilla GlobalEventHandlers.oncontextmenu documentation> 
+contextMenu ::
+            (IsGlobalEventHandlers self, IsEventTarget self) =>
+              EventName self MouseEvent
+contextMenu = unsafeEventName (toJSString "contextmenu")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oncuechange Mozilla GlobalEventHandlers.oncuechange documentation> 
+cueChange ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self Event
+cueChange = unsafeEventName (toJSString "cuechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondblclick Mozilla GlobalEventHandlers.ondblclick documentation> 
+dblClick ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self MouseEvent
+dblClick = unsafeEventName (toJSString "dblclick")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondrag Mozilla GlobalEventHandlers.ondrag documentation> 
+drag ::
+     (IsGlobalEventHandlers self, IsEventTarget self) =>
+       EventName self MouseEvent
+drag = unsafeEventName (toJSString "drag")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragend Mozilla GlobalEventHandlers.ondragend documentation> 
+dragEnd ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self MouseEvent
+dragEnd = unsafeEventName (toJSString "dragend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragenter Mozilla GlobalEventHandlers.ondragenter documentation> 
+dragEnter ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+dragEnter = unsafeEventName (toJSString "dragenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragleave Mozilla GlobalEventHandlers.ondragleave documentation> 
+dragLeave ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+dragLeave = unsafeEventName (toJSString "dragleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragover Mozilla GlobalEventHandlers.ondragover documentation> 
+dragOver ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self MouseEvent
+dragOver = unsafeEventName (toJSString "dragover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondragstart Mozilla GlobalEventHandlers.ondragstart documentation> 
+dragStart ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+dragStart = unsafeEventName (toJSString "dragstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondrop Mozilla GlobalEventHandlers.ondrop documentation> 
+drop ::
+     (IsGlobalEventHandlers self, IsEventTarget self) =>
+       EventName self MouseEvent
+drop = unsafeEventName (toJSString "drop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ondurationchange Mozilla GlobalEventHandlers.ondurationchange documentation> 
+durationChange ::
+               (IsGlobalEventHandlers self, IsEventTarget self) =>
+                 EventName self Event
+durationChange = unsafeEventName (toJSString "durationchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onemptied Mozilla GlobalEventHandlers.onemptied documentation> 
+emptied ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+emptied = unsafeEventName (toJSString "emptied")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onended Mozilla GlobalEventHandlers.onended documentation> 
+ended ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onerror Mozilla GlobalEventHandlers.onerror documentation> 
+error ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onfocus Mozilla GlobalEventHandlers.onfocus documentation> 
+focus ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self FocusEvent
+focus = unsafeEventNameAsync (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninput Mozilla GlobalEventHandlers.oninput documentation> 
+input ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self Event
+input = unsafeEventName (toJSString "input")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.oninvalid Mozilla GlobalEventHandlers.oninvalid documentation> 
+invalid ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+invalid = unsafeEventName (toJSString "invalid")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeydown Mozilla GlobalEventHandlers.onkeydown documentation> 
+keyDown ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self KeyboardEvent
+keyDown = unsafeEventName (toJSString "keydown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeypress Mozilla GlobalEventHandlers.onkeypress documentation> 
+keyPress ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self KeyboardEvent
+keyPress = unsafeEventName (toJSString "keypress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onkeyup Mozilla GlobalEventHandlers.onkeyup documentation> 
+keyUp ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self KeyboardEvent
+keyUp = unsafeEventName (toJSString "keyup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onload Mozilla GlobalEventHandlers.onload documentation> 
+load ::
+     (IsGlobalEventHandlers self, IsEventTarget self) =>
+       EventName self UIEvent
+load = unsafeEventNameAsync (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadeddata Mozilla GlobalEventHandlers.onloadeddata documentation> 
+loadedData ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self Event
+loadedData = unsafeEventName (toJSString "loadeddata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadedmetadata Mozilla GlobalEventHandlers.onloadedmetadata documentation> 
+loadedMetadata ::
+               (IsGlobalEventHandlers self, IsEventTarget self) =>
+                 EventName self Event
+loadedMetadata = unsafeEventName (toJSString "loadedmetadata")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onloadstart Mozilla GlobalEventHandlers.onloadstart documentation> 
+loadStart ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self ProgressEvent
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousedown Mozilla GlobalEventHandlers.onmousedown documentation> 
+mouseDown ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+mouseDown = unsafeEventName (toJSString "mousedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseenter Mozilla GlobalEventHandlers.onmouseenter documentation> 
+mouseEnter ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self MouseEvent
+mouseEnter = unsafeEventName (toJSString "mouseenter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseleave Mozilla GlobalEventHandlers.onmouseleave documentation> 
+mouseLeave ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self MouseEvent
+mouseLeave = unsafeEventName (toJSString "mouseleave")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousemove Mozilla GlobalEventHandlers.onmousemove documentation> 
+mouseMove ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+mouseMove = unsafeEventName (toJSString "mousemove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseout Mozilla GlobalEventHandlers.onmouseout documentation> 
+mouseOut ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self MouseEvent
+mouseOut = unsafeEventName (toJSString "mouseout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseover Mozilla GlobalEventHandlers.onmouseover documentation> 
+mouseOver ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self MouseEvent
+mouseOver = unsafeEventName (toJSString "mouseover")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmouseup Mozilla GlobalEventHandlers.onmouseup documentation> 
+mouseUp ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self MouseEvent
+mouseUp = unsafeEventName (toJSString "mouseup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onmousewheel Mozilla GlobalEventHandlers.onmousewheel documentation> 
+mouseWheel ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self MouseEvent
+mouseWheel = unsafeEventName (toJSString "mousewheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onpause Mozilla GlobalEventHandlers.onpause documentation> 
+pause ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self Event
+pause = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onplay Mozilla GlobalEventHandlers.onplay documentation> 
+play ::
+     (IsGlobalEventHandlers self, IsEventTarget self) =>
+       EventName self Event
+play = unsafeEventName (toJSString "play")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onplaying Mozilla GlobalEventHandlers.onplaying documentation> 
+playing ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+playing = unsafeEventName (toJSString "playing")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onprogress Mozilla GlobalEventHandlers.onprogress documentation> 
+progress ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self ProgressEvent
+progress = unsafeEventNameAsync (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onratechange Mozilla GlobalEventHandlers.onratechange documentation> 
+rateChange ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self Event
+rateChange = unsafeEventName (toJSString "ratechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onrejectionhandled Mozilla GlobalEventHandlers.onrejectionhandled documentation> 
+rejectionhandled ::
+                 (IsGlobalEventHandlers self, IsEventTarget self) =>
+                   EventName self onrejectionhandled
+rejectionhandled = unsafeEventName (toJSString "rejectionhandled")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onreset Mozilla GlobalEventHandlers.onreset documentation> 
+reset ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self Event
+reset = unsafeEventName (toJSString "reset")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onresize Mozilla GlobalEventHandlers.onresize documentation> 
+resize ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onscroll Mozilla GlobalEventHandlers.onscroll documentation> 
+scroll ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onseeked Mozilla GlobalEventHandlers.onseeked documentation> 
+seeked ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self Event
+seeked = unsafeEventName (toJSString "seeked")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onseeking Mozilla GlobalEventHandlers.onseeking documentation> 
+seeking ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+seeking = unsafeEventName (toJSString "seeking")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onselect Mozilla GlobalEventHandlers.onselect documentation> 
+select ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self UIEvent
+select = unsafeEventName (toJSString "select")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onstalled Mozilla GlobalEventHandlers.onstalled documentation> 
+stalled ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+stalled = unsafeEventName (toJSString "stalled")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsubmit Mozilla GlobalEventHandlers.onsubmit documentation> 
+submit ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self Event
+submit = unsafeEventName (toJSString "submit")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsuspend Mozilla GlobalEventHandlers.onsuspend documentation> 
+suspend ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+suspend = unsafeEventName (toJSString "suspend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontimeupdate Mozilla GlobalEventHandlers.ontimeupdate documentation> 
+timeUpdate ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self Event
+timeUpdate = unsafeEventName (toJSString "timeupdate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontoggle Mozilla GlobalEventHandlers.ontoggle documentation> 
+toggle ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self ontoggle
+toggle = unsafeEventName (toJSString "toggle")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onunhandledrejection Mozilla GlobalEventHandlers.onunhandledrejection documentation> 
+unhandledrejection ::
+                   (IsGlobalEventHandlers self, IsEventTarget self) =>
+                     EventName self onunhandledrejection
+unhandledrejection
+  = unsafeEventName (toJSString "unhandledrejection")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onvolumechange Mozilla GlobalEventHandlers.onvolumechange documentation> 
+volumeChange ::
+             (IsGlobalEventHandlers self, IsEventTarget self) =>
+               EventName self Event
+volumeChange = unsafeEventName (toJSString "volumechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwaiting Mozilla GlobalEventHandlers.onwaiting documentation> 
+waiting ::
+        (IsGlobalEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+waiting = unsafeEventName (toJSString "waiting")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontransitionend Mozilla GlobalEventHandlers.ontransitionend documentation> 
+transitionEnd ::
+              (IsGlobalEventHandlers self, IsEventTarget self) =>
+                EventName self TransitionEvent
+transitionEnd = unsafeEventName (toJSString "transitionend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationend Mozilla GlobalEventHandlers.onanimationend documentation> 
+animationEnd ::
+             (IsGlobalEventHandlers self, IsEventTarget self) =>
+               EventName self AnimationEvent
+animationEnd = unsafeEventName (toJSString "animationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationiteration Mozilla GlobalEventHandlers.onanimationiteration documentation> 
+animationIteration ::
+                   (IsGlobalEventHandlers self, IsEventTarget self) =>
+                     EventName self AnimationEvent
+animationIteration
+  = unsafeEventName (toJSString "animationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onanimationstart Mozilla GlobalEventHandlers.onanimationstart documentation> 
+animationStart ::
+               (IsGlobalEventHandlers self, IsEventTarget self) =>
+                 EventName self AnimationEvent
+animationStart = unsafeEventName (toJSString "animationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onsearch Mozilla GlobalEventHandlers.onsearch documentation> 
+search ::
+       (IsGlobalEventHandlers self, IsEventTarget self) =>
+         EventName self Event
+search = unsafeEventName (toJSString "search")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwheel Mozilla GlobalEventHandlers.onwheel documentation> 
+wheel ::
+      (IsGlobalEventHandlers self, IsEventTarget self) =>
+        EventName self WheelEvent
+wheel = unsafeEventName (toJSString "wheel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchcancel Mozilla GlobalEventHandlers.ontouchcancel documentation> 
+touchCancel ::
+            (IsGlobalEventHandlers self, IsEventTarget self) =>
+              EventName self TouchEvent
+touchCancel = unsafeEventName (toJSString "touchcancel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchend Mozilla GlobalEventHandlers.ontouchend documentation> 
+touchEnd ::
+         (IsGlobalEventHandlers self, IsEventTarget self) =>
+           EventName self TouchEvent
+touchEnd = unsafeEventName (toJSString "touchend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchmove Mozilla GlobalEventHandlers.ontouchmove documentation> 
+touchMove ::
+          (IsGlobalEventHandlers self, IsEventTarget self) =>
+            EventName self TouchEvent
+touchMove = unsafeEventName (toJSString "touchmove")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchstart Mozilla GlobalEventHandlers.ontouchstart documentation> 
+touchStart ::
+           (IsGlobalEventHandlers self, IsEventTarget self) =>
+             EventName self TouchEvent
+touchStart = unsafeEventName (toJSString "touchstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.ontouchforcechange Mozilla GlobalEventHandlers.ontouchforcechange documentation> 
+touchForcechange ::
+                 (IsGlobalEventHandlers self, IsEventTarget self) =>
+                   EventName self ontouchforcechange
+touchForcechange = unsafeEventName (toJSString "touchforcechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcechanged Mozilla GlobalEventHandlers.onwebkitmouseforcechanged documentation> 
+webKitMouseForcechanged ::
+                        (IsGlobalEventHandlers self, IsEventTarget self) =>
+                          EventName self onwebkitmouseforcechanged
+webKitMouseForcechanged
+  = unsafeEventName (toJSString "webkitmouseforcechanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcedown Mozilla GlobalEventHandlers.onwebkitmouseforcedown documentation> 
+webKitMouseForcedown ::
+                     (IsGlobalEventHandlers self, IsEventTarget self) =>
+                       EventName self onwebkitmouseforcedown
+webKitMouseForcedown
+  = unsafeEventName (toJSString "webkitmouseforcedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforcewillbegin Mozilla GlobalEventHandlers.onwebkitmouseforcewillbegin documentation> 
+webKitMouseForcewillbegin ::
+                          (IsGlobalEventHandlers self, IsEventTarget self) =>
+                            EventName self onwebkitmouseforcewillbegin
+webKitMouseForcewillbegin
+  = unsafeEventName (toJSString "webkitmouseforcewillbegin")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitmouseforceup Mozilla GlobalEventHandlers.onwebkitmouseforceup documentation> 
+webKitMouseForceup ::
+                   (IsGlobalEventHandlers self, IsEventTarget self) =>
+                     EventName self onwebkitmouseforceup
+webKitMouseForceup
+  = unsafeEventName (toJSString "webkitmouseforceup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealbottom Mozilla GlobalEventHandlers.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom ::
+                       (IsGlobalEventHandlers self, IsEventTarget self) =>
+                         EventName self Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealleft Mozilla GlobalEventHandlers.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft ::
+                     (IsGlobalEventHandlers self, IsEventTarget self) =>
+                       EventName self Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealright Mozilla GlobalEventHandlers.onwebkitwillrevealright documentation> 
+webKitWillRevealRight ::
+                      (IsGlobalEventHandlers self, IsEventTarget self) =>
+                        EventName self Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers.onwebkitwillrevealtop Mozilla GlobalEventHandlers.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop ::
+                    (IsGlobalEventHandlers self, IsEventTarget self) =>
+                      EventName self Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs b/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/GlobalPerformance.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.GlobalPerformance
+       (js_getPerformance, getPerformance, GlobalPerformance(..),
+        gTypeGlobalPerformance, IsGlobalPerformance, toGlobalPerformance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"performance\"]; })"
+        js_getPerformance :: GlobalPerformance -> IO Performance
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/GlobalPerformance.performance Mozilla GlobalPerformance.performance documentation> 
+getPerformance ::
+               (MonadIO m, IsGlobalPerformance self) => self -> m Performance
+getPerformance self
+  = liftIO (js_getPerformance (toGlobalPerformance self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAllCollection.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAllCollection
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_getLength, getLength, HTMLAllCollection(..),
+        gTypeHTMLAllCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        HTMLAllCollection -> Word -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+item ::
+     (MonadIO m) => HTMLAllCollection -> Word -> m (Maybe Element)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+item_ :: (MonadIO m) => HTMLAllCollection -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => HTMLAllCollection -> Word -> m Element
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.item Mozilla HTMLAllCollection.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => HTMLAllCollection -> Word -> m Element
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        HTMLAllCollection ->
+          JSString -> IO (Nullable HTMLCollectionOrElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLAllCollection -> name -> m (Maybe HTMLCollectionOrElement)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) => HTMLAllCollection -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  HTMLAllCollection -> name -> m HTMLCollectionOrElement
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.namedItem Mozilla HTMLAllCollection.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) =>
+                     HTMLAllCollection -> name -> m HTMLCollectionOrElement
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        HTMLAllCollection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection.length Mozilla HTMLAllCollection.length documentation> 
+getLength :: (MonadIO m) => HTMLAllCollection -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAnchorElement.hs
@@ -0,0 +1,237 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAnchorElement
+       (js_setCharset, setCharset, js_getCharset, getCharset,
+        js_setCoords, setCoords, js_getCoords, getCoords, js_setDownload,
+        setDownload, js_getDownload, getDownload, js_setHreflang,
+        setHreflang, js_getHreflang, getHreflang, js_setName, setName,
+        js_getName, getName, js_setPing, setPing, js_getPing, getPing,
+        js_setRel, setRel, js_getRel, getRel, js_setRev, setRev, js_getRev,
+        getRev, js_setShape, setShape, js_getShape, getShape, js_setTarget,
+        setTarget, js_getTarget, getTarget, js_setType, setType,
+        js_getType, getType, js_setText, setText, js_getText, getText,
+        js_getRelList, getRelList, HTMLAnchorElement(..),
+        gTypeHTMLAnchorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
+setCharset ::
+           (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCharset self val = liftIO (js_setCharset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.charset Mozilla HTMLAnchorElement.charset documentation> 
+getCharset ::
+           (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getCharset self = liftIO (fromJSString <$> (js_getCharset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"coords\"] = $2; })"
+        js_setCoords :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
+setCoords ::
+          (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setCoords self val = liftIO (js_setCoords self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.coords Mozilla HTMLAnchorElement.coords documentation> 
+getCoords ::
+          (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getCoords self = liftIO (fromJSString <$> (js_getCoords self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"download\"] = $2; })"
+        js_setDownload :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
+setDownload ::
+            (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setDownload self val
+  = liftIO (js_setDownload self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })" js_getDownload
+        :: HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.download Mozilla HTMLAnchorElement.download documentation> 
+getDownload ::
+            (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getDownload self = liftIO (fromJSString <$> (js_getDownload self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
+        js_setHreflang :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
+setHreflang ::
+            (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setHreflang self val
+  = liftIO (js_setHreflang self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })" js_getHreflang
+        :: HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.hreflang Mozilla HTMLAnchorElement.hreflang documentation> 
+getHreflang ::
+            (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getHreflang self = liftIO (fromJSString <$> (js_getHreflang self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.name Mozilla HTMLAnchorElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ping\"] = $2; })" js_setPing ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
+setPing ::
+        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setPing self val = liftIO (js_setPing self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })" js_getPing ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.ping Mozilla HTMLAnchorElement.ping documentation> 
+getPing ::
+        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getPing self = liftIO (fromJSString <$> (js_getPing self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
+setRel ::
+       (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRel self val = liftIO (js_setRel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rel Mozilla HTMLAnchorElement.rel documentation> 
+getRel ::
+       (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getRel self = liftIO (fromJSString <$> (js_getRel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rev\"] = $2; })" js_setRev ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
+setRev ::
+       (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setRev self val = liftIO (js_setRev self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })" js_getRev ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.rev Mozilla HTMLAnchorElement.rev documentation> 
+getRev ::
+       (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getRev self = liftIO (fromJSString <$> (js_getRev self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shape\"] = $2; })" js_setShape
+        :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
+setShape ::
+         (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setShape self val = liftIO (js_setShape self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })" js_getShape ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.shape Mozilla HTMLAnchorElement.shape documentation> 
+getShape ::
+         (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getShape self = liftIO (fromJSString <$> (js_getShape self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
+setTarget ::
+          (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setTarget self val = liftIO (js_setTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.target Mozilla HTMLAnchorElement.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.type Mozilla HTMLAnchorElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        HTMLAnchorElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) => HTMLAnchorElement -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        HTMLAnchorElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.text Mozilla HTMLAnchorElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) => HTMLAnchorElement -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
+        HTMLAnchorElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement.relList Mozilla HTMLAnchorElement.relList documentation> 
+getRelList :: (MonadIO m) => HTMLAnchorElement -> m DOMTokenList
+getRelList self = liftIO (js_getRelList self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAppletElement.hs
@@ -0,0 +1,208 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAppletElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, js_setAlt, setAlt,
+        js_getAlt, getAlt, js_setArchive, setArchive, js_getArchive,
+        getArchive, js_setCode, setCode, js_getCode, getCode,
+        js_setCodeBase, setCodeBase, js_getCodeBase, getCodeBase,
+        js_setHeight, setHeight, js_getHeight, getHeight, js_setHspace,
+        setHspace, js_getHspace, getHspace, js_setName, setName,
+        js_getName, getName, js_setObject, setObject, js_getObject,
+        getObject, js_setVspace, setVspace, js_getVspace, getVspace,
+        js_setWidth, setWidth, js_getWidth, getWidth,
+        HTMLAppletElement(..), gTypeHTMLAppletElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.align Mozilla HTMLAppletElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
+        HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
+setAlt ::
+       (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setAlt self val = liftIO (js_setAlt self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.alt Mozilla HTMLAppletElement.alt documentation> 
+getAlt ::
+       (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getAlt self = liftIO (fromJSString <$> (js_getAlt self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"archive\"] = $2; })"
+        js_setArchive :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
+setArchive ::
+           (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setArchive self val = liftIO (js_setArchive self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"archive\"]; })" js_getArchive ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.archive Mozilla HTMLAppletElement.archive documentation> 
+getArchive ::
+           (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getArchive self = liftIO (fromJSString <$> (js_getArchive self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
+        HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
+setCode ::
+        (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setCode self val = liftIO (js_setCode self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.code Mozilla HTMLAppletElement.code documentation> 
+getCode ::
+        (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getCode self = liftIO (fromJSString <$> (js_getCode self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"codeBase\"] = $2; })"
+        js_setCodeBase :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
+setCodeBase ::
+            (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setCodeBase self val
+  = liftIO (js_setCodeBase self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"codeBase\"]; })" js_getCodeBase
+        :: HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.codeBase Mozilla HTMLAppletElement.codeBase documentation> 
+getCodeBase ::
+            (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getCodeBase self = liftIO (fromJSString <$> (js_getCodeBase self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.height Mozilla HTMLAppletElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLAppletElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLAppletElement -> Word -> m ()
+setHspace self val = liftIO (js_setHspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
+        HTMLAppletElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.hspace Mozilla HTMLAppletElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLAppletElement -> m Word
+getHspace self = liftIO (js_getHspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.name Mozilla HTMLAppletElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"object\"] = $2; })"
+        js_setObject :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
+setObject ::
+          (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setObject self val = liftIO (js_setObject self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"object\"]; })" js_getObject ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.object Mozilla HTMLAppletElement.object documentation> 
+getObject ::
+          (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getObject self = liftIO (fromJSString <$> (js_getObject self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+        js_setVspace :: HTMLAppletElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLAppletElement -> Word -> m ()
+setVspace self val = liftIO (js_setVspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
+        HTMLAppletElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.vspace Mozilla HTMLAppletElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLAppletElement -> m Word
+getVspace self = liftIO (js_getVspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLAppletElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLAppletElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLAppletElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement.width Mozilla HTMLAppletElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLAppletElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAreaElement.hs
@@ -0,0 +1,167 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAreaElement
+       (js_setAlt, setAlt, js_getAlt, getAlt, js_setCoords, setCoords,
+        js_getCoords, getCoords, js_setNoHref, setNoHref, js_getNoHref,
+        getNoHref, js_setPing, setPing, js_getPing, getPing, js_setRel,
+        setRel, js_getRel, getRel, js_setShape, setShape, js_getShape,
+        getShape, js_setTarget, setTarget, js_getTarget, getTarget,
+        js_setDownload, setDownload, js_getDownload, getDownload,
+        js_getRelList, getRelList, HTMLAreaElement(..),
+        gTypeHTMLAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
+        HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
+setAlt ::
+       (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setAlt self val = liftIO (js_setAlt self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.alt Mozilla HTMLAreaElement.alt documentation> 
+getAlt ::
+       (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getAlt self = liftIO (fromJSString <$> (js_getAlt self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"coords\"] = $2; })"
+        js_setCoords :: HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
+setCoords ::
+          (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setCoords self val = liftIO (js_setCoords self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coords\"]; })" js_getCoords ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.coords Mozilla HTMLAreaElement.coords documentation> 
+getCoords ::
+          (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getCoords self = liftIO (fromJSString <$> (js_getCoords self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noHref\"] = $2; })"
+        js_setNoHref :: HTMLAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
+setNoHref :: (MonadIO m) => HTMLAreaElement -> Bool -> m ()
+setNoHref self val = liftIO (js_setNoHref self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noHref\"] ? 1 : 0); })"
+        js_getNoHref :: HTMLAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.noHref Mozilla HTMLAreaElement.noHref documentation> 
+getNoHref :: (MonadIO m) => HTMLAreaElement -> m Bool
+getNoHref self = liftIO (js_getNoHref self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ping\"] = $2; })" js_setPing ::
+        HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
+setPing ::
+        (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setPing self val = liftIO (js_setPing self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ping\"]; })" js_getPing ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.ping Mozilla HTMLAreaElement.ping documentation> 
+getPing ::
+        (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getPing self = liftIO (fromJSString <$> (js_getPing self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
+        HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
+setRel ::
+       (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setRel self val = liftIO (js_setRel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.rel Mozilla HTMLAreaElement.rel documentation> 
+getRel ::
+       (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getRel self = liftIO (fromJSString <$> (js_getRel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"shape\"] = $2; })" js_setShape
+        :: HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
+setShape ::
+         (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setShape self val = liftIO (js_setShape self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shape\"]; })" js_getShape ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.shape Mozilla HTMLAreaElement.shape documentation> 
+getShape ::
+         (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getShape self = liftIO (fromJSString <$> (js_getShape self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
+setTarget ::
+          (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setTarget self val = liftIO (js_setTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.target Mozilla HTMLAreaElement.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"download\"] = $2; })"
+        js_setDownload :: HTMLAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
+setDownload ::
+            (MonadIO m, ToJSString val) => HTMLAreaElement -> val -> m ()
+setDownload self val
+  = liftIO (js_setDownload self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"download\"]; })" js_getDownload
+        :: HTMLAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.download Mozilla HTMLAreaElement.download documentation> 
+getDownload ::
+            (MonadIO m, FromJSString result) => HTMLAreaElement -> m result
+getDownload self = liftIO (fromJSString <$> (js_getDownload self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
+        HTMLAreaElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement.relList Mozilla HTMLAreaElement.relList documentation> 
+getRelList :: (MonadIO m) => HTMLAreaElement -> m DOMTokenList
+getRelList self = liftIO (js_getRelList self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLAttachmentElement.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLAttachmentElement
+       (js_setFile, setFile, js_getFile, getFile, getFileUnsafe,
+        getFileUnchecked, HTMLAttachmentElement(..),
+        gTypeHTMLAttachmentElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"file\"] = $2; })" js_setFile ::
+        HTMLAttachmentElement -> Optional File -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
+setFile ::
+        (MonadIO m) => HTMLAttachmentElement -> Maybe File -> m ()
+setFile self val = liftIO (js_setFile self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"file\"]; })" js_getFile ::
+        HTMLAttachmentElement -> IO (Nullable File)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
+getFile :: (MonadIO m) => HTMLAttachmentElement -> m (Maybe File)
+getFile self = liftIO (nullableToMaybe <$> (js_getFile self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
+getFileUnsafe ::
+              (MonadIO m, HasCallStack) => HTMLAttachmentElement -> m File
+getFileUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFile self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement.file Mozilla HTMLAttachmentElement.file documentation> 
+getFileUnchecked :: (MonadIO m) => HTMLAttachmentElement -> m File
+getFileUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getFile self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBRElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBRElement
+       (js_setClear, setClear, js_getClear, getClear, HTMLBRElement(..),
+        gTypeHTMLBRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"clear\"] = $2; })" js_setClear
+        :: HTMLBRElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
+setClear ::
+         (MonadIO m, ToJSString val) => HTMLBRElement -> val -> m ()
+setClear self val = liftIO (js_setClear self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clear\"]; })" js_getClear ::
+        HTMLBRElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement.clear Mozilla HTMLBRElement.clear documentation> 
+getClear ::
+         (MonadIO m, FromJSString result) => HTMLBRElement -> m result
+getClear self = liftIO (fromJSString <$> (js_getClear self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBaseElement.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBaseElement
+       (js_setHref, setHref, js_getHref, getHref, js_setTarget, setTarget,
+        js_getTarget, getTarget, HTMLBaseElement(..), gTypeHTMLBaseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
+        HTMLBaseElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+setHref ::
+        (MonadIO m, ToJSString val) => HTMLBaseElement -> val -> m ()
+setHref self val = liftIO (js_setHref self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        HTMLBaseElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.href Mozilla HTMLBaseElement.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) => HTMLBaseElement -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLBaseElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
+setTarget ::
+          (MonadIO m, ToJSString val) => HTMLBaseElement -> val -> m ()
+setTarget self val = liftIO (js_setTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        HTMLBaseElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement.target Mozilla HTMLBaseElement.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) => HTMLBaseElement -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLBodyElement.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLBodyElement
+       (js_setALink, setALink, js_getALink, getALink, js_setBackground,
+        setBackground, js_getBackground, getBackground, js_setBgColor,
+        setBgColor, js_getBgColor, getBgColor, js_setLink, setLink,
+        js_getLink, getLink, js_setText, setText, js_getText, getText,
+        js_setVLink, setVLink, js_getVLink, getVLink, blur, error, focus,
+        focusin, focusout, load, resize, scroll, webKitMouseForcechanged,
+        webKitMouseForcedown, webKitMouseForcewillbegin,
+        webKitMouseForceup, webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop, selectionchange,
+        HTMLBodyElement(..), gTypeHTMLBodyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"aLink\"] = $2; })" js_setALink
+        :: HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
+setALink ::
+         (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setALink self val = liftIO (js_setALink self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"aLink\"]; })" js_getALink ::
+        HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.aLink Mozilla HTMLBodyElement.aLink documentation> 
+getALink ::
+         (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getALink self = liftIO (fromJSString <$> (js_getALink self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"background\"] = $2; })"
+        js_setBackground :: HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
+setBackground ::
+              (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBackground self val
+  = liftIO (js_setBackground self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"background\"]; })"
+        js_getBackground :: HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.background Mozilla HTMLBodyElement.background documentation> 
+getBackground ::
+              (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getBackground self
+  = liftIO (fromJSString <$> (js_getBackground self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.bgColor Mozilla HTMLBodyElement.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"link\"] = $2; })" js_setLink ::
+        HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
+setLink ::
+        (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setLink self val = liftIO (js_setLink self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"link\"]; })" js_getLink ::
+        HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.link Mozilla HTMLBodyElement.link documentation> 
+getLink ::
+        (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getLink self = liftIO (fromJSString <$> (js_getLink self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.text Mozilla HTMLBodyElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vLink\"] = $2; })" js_setVLink
+        :: HTMLBodyElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
+setVLink ::
+         (MonadIO m, ToJSString val) => HTMLBodyElement -> val -> m ()
+setVLink self val = liftIO (js_setVLink self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vLink\"]; })" js_getVLink ::
+        HTMLBodyElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.vLink Mozilla HTMLBodyElement.vLink documentation> 
+getVLink ::
+         (MonadIO m, FromJSString result) => HTMLBodyElement -> m result
+getVLink self = liftIO (fromJSString <$> (js_getVLink self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onblur Mozilla HTMLBodyElement.onblur documentation> 
+blur :: EventName HTMLBodyElement FocusEvent
+blur = unsafeEventNameAsync (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onerror Mozilla HTMLBodyElement.onerror documentation> 
+error :: EventName HTMLBodyElement UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocus Mozilla HTMLBodyElement.onfocus documentation> 
+focus :: EventName HTMLBodyElement FocusEvent
+focus = unsafeEventNameAsync (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocusin Mozilla HTMLBodyElement.onfocusin documentation> 
+focusin :: EventName HTMLBodyElement onfocusin
+focusin = unsafeEventName (toJSString "focusin")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onfocusout Mozilla HTMLBodyElement.onfocusout documentation> 
+focusout :: EventName HTMLBodyElement onfocusout
+focusout = unsafeEventName (toJSString "focusout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onload Mozilla HTMLBodyElement.onload documentation> 
+load :: EventName HTMLBodyElement UIEvent
+load = unsafeEventNameAsync (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onresize Mozilla HTMLBodyElement.onresize documentation> 
+resize :: EventName HTMLBodyElement UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onscroll Mozilla HTMLBodyElement.onscroll documentation> 
+scroll :: EventName HTMLBodyElement UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcechanged Mozilla HTMLBodyElement.onwebkitmouseforcechanged documentation> 
+webKitMouseForcechanged ::
+                          EventName HTMLBodyElement onwebkitmouseforcechanged
+webKitMouseForcechanged
+  = unsafeEventName (toJSString "webkitmouseforcechanged")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcedown Mozilla HTMLBodyElement.onwebkitmouseforcedown documentation> 
+webKitMouseForcedown ::
+                       EventName HTMLBodyElement onwebkitmouseforcedown
+webKitMouseForcedown
+  = unsafeEventName (toJSString "webkitmouseforcedown")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforcewillbegin Mozilla HTMLBodyElement.onwebkitmouseforcewillbegin documentation> 
+webKitMouseForcewillbegin ::
+                            EventName HTMLBodyElement onwebkitmouseforcewillbegin
+webKitMouseForcewillbegin
+  = unsafeEventName (toJSString "webkitmouseforcewillbegin")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitmouseforceup Mozilla HTMLBodyElement.onwebkitmouseforceup documentation> 
+webKitMouseForceup ::
+                     EventName HTMLBodyElement onwebkitmouseforceup
+webKitMouseForceup
+  = unsafeEventName (toJSString "webkitmouseforceup")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealbottom Mozilla HTMLBodyElement.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom :: EventName HTMLBodyElement Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealleft Mozilla HTMLBodyElement.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft :: EventName HTMLBodyElement Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealright Mozilla HTMLBodyElement.onwebkitwillrevealright documentation> 
+webKitWillRevealRight :: EventName HTMLBodyElement Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onwebkitwillrevealtop Mozilla HTMLBodyElement.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop :: EventName HTMLBodyElement Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement.onselectionchange Mozilla HTMLBodyElement.onselectionchange documentation> 
+selectionchange :: EventName HTMLBodyElement onselectionchange
+selectionchange = unsafeEventName (toJSString "selectionchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLButtonElement.hs
@@ -0,0 +1,274 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLButtonElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setDisabled,
+        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
+        js_setFormAction, setFormAction, js_getFormAction, getFormAction,
+        js_setFormEnctype, setFormEnctype, js_getFormEnctype,
+        getFormEnctype, js_setFormMethod, setFormMethod, js_getFormMethod,
+        getFormMethod, js_setType, setType, js_getType, getType,
+        js_setFormNoValidate, setFormNoValidate, js_getFormNoValidate,
+        getFormNoValidate, js_setFormTarget, setFormTarget,
+        js_getFormTarget, getFormTarget, js_setName, setName, js_getName,
+        getName, js_setValue, setValue, js_getValue, getValue,
+        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, HTMLButtonElement(..), gTypeHTMLButtonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLButtonElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.checkValidity Mozilla HTMLButtonElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLButtonElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLButtonElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.reportValidity Mozilla HTMLButtonElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLButtonElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.setCustomValidity Mozilla HTMLButtonElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLButtonElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLButtonElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
+setAutofocus :: (MonadIO m) => HTMLButtonElement -> Bool -> m ()
+setAutofocus self val = liftIO (js_setAutofocus self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
+        js_getAutofocus :: HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.autofocus Mozilla HTMLButtonElement.autofocus documentation> 
+getAutofocus :: (MonadIO m) => HTMLButtonElement -> m Bool
+getAutofocus self = liftIO (js_getAutofocus self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLButtonElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLButtonElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.disabled Mozilla HTMLButtonElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLButtonElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLButtonElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.form Mozilla HTMLButtonElement.form documentation> 
+getForm :: (MonadIO m) => HTMLButtonElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formAction\"] = $2; })"
+        js_setFormAction :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
+setFormAction ::
+              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormAction self val
+  = liftIO (js_setFormAction self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formAction\"]; })"
+        js_getFormAction :: HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formAction Mozilla HTMLButtonElement.formAction documentation> 
+getFormAction ::
+              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getFormAction self
+  = liftIO (fromJSString <$> (js_getFormAction self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
+        js_setFormEnctype :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormEnctype self val
+  = liftIO (js_setFormEnctype self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formEnctype\"]; })"
+        js_getFormEnctype :: HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formEnctype Mozilla HTMLButtonElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getFormEnctype self
+  = liftIO (fromJSString <$> (js_getFormEnctype self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
+        js_setFormMethod :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+setFormMethod ::
+              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormMethod self val
+  = liftIO (js_setFormMethod self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formMethod\"]; })"
+        js_getFormMethod :: HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formMethod Mozilla HTMLButtonElement.formMethod documentation> 
+getFormMethod ::
+              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getFormMethod self
+  = liftIO (fromJSString <$> (js_getFormMethod self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.type Mozilla HTMLButtonElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
+        js_setFormNoValidate :: HTMLButtonElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
+setFormNoValidate ::
+                  (MonadIO m) => HTMLButtonElement -> Bool -> m ()
+setFormNoValidate self val = liftIO (js_setFormNoValidate self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"formNoValidate\"] ? 1 : 0); })"
+        js_getFormNoValidate :: HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formNoValidate Mozilla HTMLButtonElement.formNoValidate documentation> 
+getFormNoValidate :: (MonadIO m) => HTMLButtonElement -> m Bool
+getFormNoValidate self = liftIO (js_getFormNoValidate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
+        js_setFormTarget :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
+setFormTarget ::
+              (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setFormTarget self val
+  = liftIO (js_setFormTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formTarget\"]; })"
+        js_getFormTarget :: HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.formTarget Mozilla HTMLButtonElement.formTarget documentation> 
+getFormTarget ::
+              (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getFormTarget self
+  = liftIO (fromJSString <$> (js_getFormTarget self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.name Mozilla HTMLButtonElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLButtonElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLButtonElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.value Mozilla HTMLButtonElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLButtonElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.willValidate Mozilla HTMLButtonElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLButtonElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLButtonElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validity Mozilla HTMLButtonElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLButtonElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLButtonElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.validationMessage Mozilla HTMLButtonElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLButtonElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLButtonElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement.labels Mozilla HTMLButtonElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLButtonElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCanvasElement.hs
@@ -0,0 +1,163 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLCanvasElement
+       (js_getContext, getContext, getContext_, getContextUnsafe,
+        getContextUnchecked, js_toDataURL, toDataURL, toDataURL_,
+        js_toBlob', toBlob', js_captureStream, captureStream,
+        captureStream_, js_setWidth, setWidth, js_getWidth, getWidth,
+        js_setHeight, setHeight, js_getHeight, getHeight,
+        HTMLCanvasElement(..), gTypeHTMLCanvasElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getContext\"]($2, $3); })"
+        js_getContext ::
+        HTMLCanvasElement ->
+          JSString -> JSVal -> IO (Nullable RenderingContext)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContext ::
+           (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
+             HTMLCanvasElement ->
+               contextId -> [arguments] -> m (Maybe RenderingContext)
+getContext self contextId arguments
+  = liftIO
+      (nullableToMaybe <$>
+         (toJSVal arguments >>=
+            \ arguments' ->
+              js_getContext self (toJSString contextId) arguments'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContext_ ::
+            (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
+              HTMLCanvasElement -> contextId -> [arguments] -> m ()
+getContext_ self contextId arguments
+  = liftIO
+      (void
+         (toJSVal arguments >>=
+            \ arguments' ->
+              js_getContext self (toJSString contextId) arguments'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContextUnsafe ::
+                 (MonadIO m, ToJSString contextId, ToJSVal arguments,
+                  HasCallStack) =>
+                   HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
+getContextUnsafe self contextId arguments
+  = liftIO
+      ((nullableToMaybe <$>
+          (toJSVal arguments >>=
+             \ arguments' ->
+               js_getContext self (toJSString contextId) arguments'))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.getContext Mozilla HTMLCanvasElement.getContext documentation> 
+getContextUnchecked ::
+                    (MonadIO m, ToJSString contextId, ToJSVal arguments) =>
+                      HTMLCanvasElement -> contextId -> [arguments] -> m RenderingContext
+getContextUnchecked self contextId arguments
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (toJSVal arguments >>=
+            \ arguments' ->
+              js_getContext self (toJSString contextId) arguments'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"toDataURL\"]($2); })" js_toDataURL
+        :: HTMLCanvasElement -> Optional JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
+toDataURL ::
+          (MonadIO m, ToJSString type', FromJSString result) =>
+            HTMLCanvasElement -> Maybe type' -> m result
+toDataURL self type'
+  = liftIO
+      (fromJSString <$> (js_toDataURL self (toOptionalJSString type')))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toDataURL Mozilla HTMLCanvasElement.toDataURL documentation> 
+toDataURL_ ::
+           (MonadIO m, ToJSString type') =>
+             HTMLCanvasElement -> Maybe type' -> m ()
+toDataURL_ self type'
+  = liftIO (void (js_toDataURL self (toOptionalJSString type')))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"toBlob\"]($2, $3, $4); })"
+        js_toBlob' ::
+        HTMLCanvasElement ->
+          BlobCallback -> Optional JSString -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.toBlob Mozilla HTMLCanvasElement.toBlob documentation> 
+toBlob' ::
+        (MonadIO m, ToJSString type', ToJSVal quality) =>
+          HTMLCanvasElement ->
+            BlobCallback -> Maybe type' -> Maybe quality -> m ()
+toBlob' self callback type' quality
+  = liftIO
+      (mapM toJSVal quality >>=
+         \ quality' ->
+           js_toBlob' self callback (toOptionalJSString type')
+             (maybeToOptional quality'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"captureStream\"]($2); })"
+        js_captureStream ::
+        HTMLCanvasElement -> Optional Double -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
+captureStream ::
+              (MonadIO m) => HTMLCanvasElement -> Maybe Double -> m MediaStream
+captureStream self frameRequestRate
+  = liftIO (js_captureStream self (maybeToOptional frameRequestRate))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.captureStream Mozilla HTMLCanvasElement.captureStream documentation> 
+captureStream_ ::
+               (MonadIO m) => HTMLCanvasElement -> Maybe Double -> m ()
+captureStream_ self frameRequestRate
+  = liftIO
+      (void (js_captureStream self (maybeToOptional frameRequestRate)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLCanvasElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLCanvasElement -> Word -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLCanvasElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.width Mozilla HTMLCanvasElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLCanvasElement -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLCanvasElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLCanvasElement -> Word -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLCanvasElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement.height Mozilla HTMLCanvasElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLCanvasElement -> m Word
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLCollection.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLCollection
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_getLength, getLength, HTMLCollection(..), gTypeHTMLCollection,
+        IsHTMLCollection, toHTMLCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        HTMLCollection -> Word -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+item ::
+     (MonadIO m, IsHTMLCollection self) =>
+       self -> Word -> m (Maybe Element)
+item self index
+  = liftIO
+      (nullableToMaybe <$> (js_item (toHTMLCollection self) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+item_ :: (MonadIO m, IsHTMLCollection self) => self -> Word -> m ()
+item_ self index
+  = liftIO (void (js_item (toHTMLCollection self) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+itemUnsafe ::
+           (MonadIO m, IsHTMLCollection self, HasCallStack) =>
+             self -> Word -> m Element
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item (toHTMLCollection self) index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.item Mozilla HTMLCollection.item documentation> 
+itemUnchecked ::
+              (MonadIO m, IsHTMLCollection self) => self -> Word -> m Element
+itemUnchecked self index
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_item (toHTMLCollection self) index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        HTMLCollection -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, IsHTMLCollection self, ToJSString name) =>
+            self -> name -> m (Maybe Element)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_namedItem (toHTMLCollection self) (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, IsHTMLCollection self, ToJSString name) =>
+             self -> name -> m ()
+namedItem_ self name
+  = liftIO
+      (void (js_namedItem (toHTMLCollection self) (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, IsHTMLCollection self, ToJSString name,
+                 HasCallStack) =>
+                  self -> name -> m Element
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_namedItem (toHTMLCollection self) (toJSString name)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.namedItem Mozilla HTMLCollection.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, IsHTMLCollection self, ToJSString name) =>
+                     self -> name -> m Element
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem (toHTMLCollection self) (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        HTMLCollection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection.length Mozilla HTMLCollection.length documentation> 
+getLength :: (MonadIO m, IsHTMLCollection self) => self -> m Word
+getLength self = liftIO (js_getLength (toHTMLCollection self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDListElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDListElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLDListElement(..), gTypeHTMLDListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLDListElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+setCompact :: (MonadIO m) => HTMLDListElement -> Bool -> m ()
+setCompact self val = liftIO (js_setCompact self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+        js_getCompact :: HTMLDListElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement.compact Mozilla HTMLDListElement.compact documentation> 
+getCompact :: (MonadIO m) => HTMLDListElement -> m Bool
+getCompact self = liftIO (js_getCompact self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDataElement
+       (js_setValue, setValue, js_getValue, getValue, HTMLDataElement(..),
+        gTypeHTMLDataElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLDataElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLDataElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLDataElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement.value Mozilla HTMLDataElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLDataElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDataListElement.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDataListElement
+       (js_getOptions, getOptions, HTMLDataListElement(..),
+        gTypeHTMLDataListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })" js_getOptions ::
+        HTMLDataListElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement.options Mozilla HTMLDataListElement.options documentation> 
+getOptions ::
+           (MonadIO m) => HTMLDataListElement -> m HTMLCollection
+getOptions self = liftIO (js_getOptions self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDetailsElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDetailsElement
+       (js_setOpen, setOpen, js_getOpen, getOpen, HTMLDetailsElement(..),
+        gTypeHTMLDetailsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"open\"] = $2; })" js_setOpen ::
+        HTMLDetailsElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+setOpen :: (MonadIO m) => HTMLDetailsElement -> Bool -> m ()
+setOpen self val = liftIO (js_setOpen self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"open\"] ? 1 : 0); })"
+        js_getOpen :: HTMLDetailsElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement.open Mozilla HTMLDetailsElement.open documentation> 
+getOpen :: (MonadIO m) => HTMLDetailsElement -> m Bool
+getOpen self = liftIO (js_getOpen self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDirectoryElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDirectoryElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLDirectoryElement(..), gTypeHTMLDirectoryElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLDirectoryElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+setCompact :: (MonadIO m) => HTMLDirectoryElement -> Bool -> m ()
+setCompact self val = liftIO (js_setCompact self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+        js_getCompact :: HTMLDirectoryElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement.compact Mozilla HTMLDirectoryElement.compact documentation> 
+getCompact :: (MonadIO m) => HTMLDirectoryElement -> m Bool
+getCompact self = liftIO (js_getCompact self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDivElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDivElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, HTMLDivElement(..),
+        gTypeHTMLDivElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLDivElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLDivElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLDivElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement.align Mozilla HTMLDivElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLDivElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLDocument.hs
@@ -0,0 +1,179 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLDocument
+       (js_open, open, js_close, close, js_write, write, js_writeln,
+        writeln, js_clear, clear, js_captureEvents, captureEvents,
+        js_releaseEvents, releaseEvents, js_getAll, getAll, js_setBgColor,
+        setBgColor, js_getBgColor, getBgColor, js_setFgColor, setFgColor,
+        js_getFgColor, getFgColor, js_setAlinkColor, setAlinkColor,
+        js_getAlinkColor, getAlinkColor, js_setLinkColor, setLinkColor,
+        js_getLinkColor, getLinkColor, js_setVlinkColor, setVlinkColor,
+        js_getVlinkColor, getVlinkColor, HTMLDocument(..),
+        gTypeHTMLDocument)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"open\"](); })" js_open ::
+        HTMLDocument -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.open Mozilla HTMLDocument.open documentation> 
+open :: (MonadIO m) => HTMLDocument -> m ()
+open self = liftIO (js_open self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        HTMLDocument -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.close Mozilla HTMLDocument.close documentation> 
+close :: (MonadIO m) => HTMLDocument -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"write\"]($2); })" js_write ::
+        HTMLDocument -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.write Mozilla HTMLDocument.write documentation> 
+write ::
+      (MonadIO m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
+write self text = liftIO (js_write self (toOptionalJSString text))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"writeln\"]($2); })" js_writeln
+        :: HTMLDocument -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.writeln Mozilla HTMLDocument.writeln documentation> 
+writeln ::
+        (MonadIO m, ToJSString text) => HTMLDocument -> Maybe text -> m ()
+writeln self text
+  = liftIO (js_writeln self (toOptionalJSString text))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        HTMLDocument -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.clear Mozilla HTMLDocument.clear documentation> 
+clear :: (MonadIO m) => HTMLDocument -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"captureEvents\"](); })"
+        js_captureEvents :: HTMLDocument -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.captureEvents Mozilla HTMLDocument.captureEvents documentation> 
+captureEvents :: (MonadIO m) => HTMLDocument -> m ()
+captureEvents self = liftIO (js_captureEvents self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"releaseEvents\"](); })"
+        js_releaseEvents :: HTMLDocument -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.releaseEvents Mozilla HTMLDocument.releaseEvents documentation> 
+releaseEvents :: (MonadIO m) => HTMLDocument -> m ()
+releaseEvents self = liftIO (js_releaseEvents self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"all\"]; })" js_getAll ::
+        HTMLDocument -> IO HTMLAllCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.all Mozilla HTMLDocument.all documentation> 
+getAll :: (MonadIO m) => HTMLDocument -> m HTMLAllCollection
+getAll self = liftIO (js_getAll self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.bgColor Mozilla HTMLDocument.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"fgColor\"] = $2; })"
+        js_setFgColor :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+setFgColor ::
+           (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
+setFgColor self val = liftIO (js_setFgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fgColor\"]; })" js_getFgColor ::
+        HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.fgColor Mozilla HTMLDocument.fgColor documentation> 
+getFgColor ::
+           (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getFgColor self = liftIO (fromJSString <$> (js_getFgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"alinkColor\"] = $2; })"
+        js_setAlinkColor :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+setAlinkColor ::
+              (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
+setAlinkColor self val
+  = liftIO (js_setAlinkColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alinkColor\"]; })"
+        js_getAlinkColor :: HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.alinkColor Mozilla HTMLDocument.alinkColor documentation> 
+getAlinkColor ::
+              (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getAlinkColor self
+  = liftIO (fromJSString <$> (js_getAlinkColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"linkColor\"] = $2; })"
+        js_setLinkColor :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+setLinkColor ::
+             (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
+setLinkColor self val
+  = liftIO (js_setLinkColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"linkColor\"]; })"
+        js_getLinkColor :: HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.linkColor Mozilla HTMLDocument.linkColor documentation> 
+getLinkColor ::
+             (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getLinkColor self
+  = liftIO (fromJSString <$> (js_getLinkColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vlinkColor\"] = $2; })"
+        js_setVlinkColor :: HTMLDocument -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+setVlinkColor ::
+              (MonadIO m, ToJSString val) => HTMLDocument -> val -> m ()
+setVlinkColor self val
+  = liftIO (js_setVlinkColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vlinkColor\"]; })"
+        js_getVlinkColor :: HTMLDocument -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument.vlinkColor Mozilla HTMLDocument.vlinkColor documentation> 
+getVlinkColor ::
+              (MonadIO m, FromJSString result) => HTMLDocument -> m result
+getVlinkColor self
+  = liftIO (fromJSString <$> (js_getVlinkColor self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLElement.hs
@@ -0,0 +1,434 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLElement
+       (js_newHTMLElement, newHTMLElement, js_click, click, js_focus,
+        focus, js_blur, blur, js_setTitle, setTitle, js_getTitle, getTitle,
+        js_setLang, setLang, js_getLang, getLang, js_setTranslate,
+        setTranslate, js_getTranslate, getTranslate, js_setDir, setDir,
+        js_getDir, getDir, js_getDataset, getDataset, js_setHidden,
+        setHidden, js_getHidden, getHidden, js_setTabIndex, setTabIndex,
+        js_getTabIndex, getTabIndex, js_setAccessKey, setAccessKey,
+        js_getAccessKey, getAccessKey, js_setDraggable, setDraggable,
+        js_getDraggable, getDraggable, js_setSpellcheck, setSpellcheck,
+        js_getSpellcheck, getSpellcheck, js_setInnerText, setInnerText,
+        js_getInnerText, getInnerText, js_setContentEditable,
+        setContentEditable, js_getContentEditable, getContentEditable,
+        js_getIsContentEditable, getIsContentEditable, js_getOffsetParent,
+        getOffsetParent, getOffsetParentUnsafe, getOffsetParentUnchecked,
+        js_getOffsetTop, getOffsetTop, js_getOffsetLeft, getOffsetLeft,
+        js_getOffsetWidth, getOffsetWidth, js_getOffsetHeight,
+        getOffsetHeight, js_setOuterText, setOuterText, js_getOuterText,
+        getOuterText, js_setAutocorrect, setAutocorrect, js_getAutocorrect,
+        getAutocorrect, js_setAutocapitalize, setAutocapitalize,
+        js_getAutocapitalize, getAutocapitalize, js_setWebkitdropzone,
+        setWebkitdropzone, js_getWebkitdropzone, getWebkitdropzone,
+        HTMLElement(..), gTypeHTMLElement, IsHTMLElement, toHTMLElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"HTMLElement\"](); })"
+        js_newHTMLElement :: IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation> 
+newHTMLElement :: (MonadIO m) => m HTMLElement
+newHTMLElement = liftIO (js_newHTMLElement)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"click\"](); })" js_click ::
+        HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.click Mozilla HTMLElement.click documentation> 
+click :: (MonadIO m, IsHTMLElement self) => self -> m ()
+click self = liftIO (js_click (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
+        HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.focus Mozilla HTMLElement.focus documentation> 
+focus :: (MonadIO m, IsHTMLElement self) => self -> m ()
+focus self = liftIO (js_focus (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
+        HTMLElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.blur Mozilla HTMLElement.blur documentation> 
+blur :: (MonadIO m, IsHTMLElement self) => self -> m ()
+blur self = liftIO (js_blur (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
+        :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
+setTitle ::
+         (MonadIO m, IsHTMLElement self, ToJSString val) =>
+           self -> val -> m ()
+setTitle self val
+  = liftIO (js_setTitle (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
+        HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.title Mozilla HTMLElement.title documentation> 
+getTitle ::
+         (MonadIO m, IsHTMLElement self, FromJSString result) =>
+           self -> m result
+getTitle self
+  = liftIO (fromJSString <$> (js_getTitle (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lang\"] = $2; })" js_setLang ::
+        HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
+setLang ::
+        (MonadIO m, IsHTMLElement self, ToJSString val) =>
+          self -> val -> m ()
+setLang self val
+  = liftIO (js_setLang (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
+        HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.lang Mozilla HTMLElement.lang documentation> 
+getLang ::
+        (MonadIO m, IsHTMLElement self, FromJSString result) =>
+          self -> m result
+getLang self
+  = liftIO (fromJSString <$> (js_getLang (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"translate\"] = $2; })"
+        js_setTranslate :: HTMLElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
+setTranslate ::
+             (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
+setTranslate self val
+  = liftIO (js_setTranslate (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"translate\"] ? 1 : 0); })"
+        js_getTranslate :: HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.translate Mozilla HTMLElement.translate documentation> 
+getTranslate :: (MonadIO m, IsHTMLElement self) => self -> m Bool
+getTranslate self = liftIO (js_getTranslate (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dir\"] = $2; })" js_setDir ::
+        HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
+setDir ::
+       (MonadIO m, IsHTMLElement self, ToJSString val) =>
+         self -> val -> m ()
+setDir self val
+  = liftIO (js_setDir (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dir\"]; })" js_getDir ::
+        HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dir Mozilla HTMLElement.dir documentation> 
+getDir ::
+       (MonadIO m, IsHTMLElement self, FromJSString result) =>
+         self -> m result
+getDir self
+  = liftIO (fromJSString <$> (js_getDir (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dataset\"]; })" js_getDataset ::
+        HTMLElement -> IO DOMStringMap
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.dataset Mozilla HTMLElement.dataset documentation> 
+getDataset ::
+           (MonadIO m, IsHTMLElement self) => self -> m DOMStringMap
+getDataset self = liftIO (js_getDataset (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hidden\"] = $2; })"
+        js_setHidden :: HTMLElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
+setHidden ::
+          (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
+setHidden self val = liftIO (js_setHidden (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"hidden\"] ? 1 : 0); })"
+        js_getHidden :: HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.hidden Mozilla HTMLElement.hidden documentation> 
+getHidden :: (MonadIO m, IsHTMLElement self) => self -> m Bool
+getHidden self = liftIO (js_getHidden (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"tabIndex\"] = $2; })"
+        js_setTabIndex :: HTMLElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
+setTabIndex ::
+            (MonadIO m, IsHTMLElement self) => self -> Int -> m ()
+setTabIndex self val
+  = liftIO (js_setTabIndex (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tabIndex\"]; })" js_getTabIndex
+        :: HTMLElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.tabIndex Mozilla HTMLElement.tabIndex documentation> 
+getTabIndex :: (MonadIO m, IsHTMLElement self) => self -> m Int
+getTabIndex self = liftIO (js_getTabIndex (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"accessKey\"] = $2; })"
+        js_setAccessKey :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
+setAccessKey ::
+             (MonadIO m, IsHTMLElement self, ToJSString val) =>
+               self -> val -> m ()
+setAccessKey self val
+  = liftIO (js_setAccessKey (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"accessKey\"]; })"
+        js_getAccessKey :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.accessKey Mozilla HTMLElement.accessKey documentation> 
+getAccessKey ::
+             (MonadIO m, IsHTMLElement self, FromJSString result) =>
+               self -> m result
+getAccessKey self
+  = liftIO (fromJSString <$> (js_getAccessKey (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"draggable\"] = $2; })"
+        js_setDraggable :: HTMLElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
+setDraggable ::
+             (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
+setDraggable self val
+  = liftIO (js_setDraggable (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"draggable\"] ? 1 : 0); })"
+        js_getDraggable :: HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.draggable Mozilla HTMLElement.draggable documentation> 
+getDraggable :: (MonadIO m, IsHTMLElement self) => self -> m Bool
+getDraggable self = liftIO (js_getDraggable (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"spellcheck\"] = $2; })"
+        js_setSpellcheck :: HTMLElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
+setSpellcheck ::
+              (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
+setSpellcheck self val
+  = liftIO (js_setSpellcheck (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"spellcheck\"] ? 1 : 0); })"
+        js_getSpellcheck :: HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.spellcheck Mozilla HTMLElement.spellcheck documentation> 
+getSpellcheck :: (MonadIO m, IsHTMLElement self) => self -> m Bool
+getSpellcheck self = liftIO (js_getSpellcheck (toHTMLElement self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"innerText\"] = $2; })"
+        js_setInnerText :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
+setInnerText ::
+             (MonadIO m, IsHTMLElement self, ToJSString val) =>
+               self -> val -> m ()
+setInnerText self val
+  = liftIO (js_setInnerText (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"innerText\"]; })"
+        js_getInnerText :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.innerText Mozilla HTMLElement.innerText documentation> 
+getInnerText ::
+             (MonadIO m, IsHTMLElement self, FromJSString result) =>
+               self -> m result
+getInnerText self
+  = liftIO (fromJSString <$> (js_getInnerText (toHTMLElement self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"contentEditable\"] = $2; })"
+        js_setContentEditable :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
+setContentEditable ::
+                   (MonadIO m, IsHTMLElement self, ToJSString val) =>
+                     self -> val -> m ()
+setContentEditable self val
+  = liftIO
+      (js_setContentEditable (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentEditable\"]; })"
+        js_getContentEditable :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.contentEditable Mozilla HTMLElement.contentEditable documentation> 
+getContentEditable ::
+                   (MonadIO m, IsHTMLElement self, FromJSString result) =>
+                     self -> m result
+getContentEditable self
+  = liftIO
+      (fromJSString <$> (js_getContentEditable (toHTMLElement self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"isContentEditable\"] ? 1 : 0); })" js_getIsContentEditable ::
+        HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.isContentEditable Mozilla HTMLElement.isContentEditable documentation> 
+getIsContentEditable ::
+                     (MonadIO m, IsHTMLElement self) => self -> m Bool
+getIsContentEditable self
+  = liftIO (js_getIsContentEditable (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetParent\"]; })"
+        js_getOffsetParent :: HTMLElement -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
+getOffsetParent ::
+                (MonadIO m, IsHTMLElement self) => self -> m (Maybe Element)
+getOffsetParent self
+  = liftIO
+      (nullableToMaybe <$> (js_getOffsetParent (toHTMLElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
+getOffsetParentUnsafe ::
+                      (MonadIO m, IsHTMLElement self, HasCallStack) => self -> m Element
+getOffsetParentUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getOffsetParent (toHTMLElement self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetParent Mozilla HTMLElement.offsetParent documentation> 
+getOffsetParentUnchecked ::
+                         (MonadIO m, IsHTMLElement self) => self -> m Element
+getOffsetParentUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getOffsetParent (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetTop\"]; })"
+        js_getOffsetTop :: HTMLElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetTop Mozilla HTMLElement.offsetTop documentation> 
+getOffsetTop :: (MonadIO m, IsHTMLElement self) => self -> m Double
+getOffsetTop self = liftIO (js_getOffsetTop (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetLeft\"]; })"
+        js_getOffsetLeft :: HTMLElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetLeft Mozilla HTMLElement.offsetLeft documentation> 
+getOffsetLeft ::
+              (MonadIO m, IsHTMLElement self) => self -> m Double
+getOffsetLeft self = liftIO (js_getOffsetLeft (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetWidth\"]; })"
+        js_getOffsetWidth :: HTMLElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetWidth Mozilla HTMLElement.offsetWidth documentation> 
+getOffsetWidth ::
+               (MonadIO m, IsHTMLElement self) => self -> m Double
+getOffsetWidth self
+  = liftIO (js_getOffsetWidth (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetHeight\"]; })"
+        js_getOffsetHeight :: HTMLElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.offsetHeight Mozilla HTMLElement.offsetHeight documentation> 
+getOffsetHeight ::
+                (MonadIO m, IsHTMLElement self) => self -> m Double
+getOffsetHeight self
+  = liftIO (js_getOffsetHeight (toHTMLElement self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"outerText\"] = $2; })"
+        js_setOuterText :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
+setOuterText ::
+             (MonadIO m, IsHTMLElement self, ToJSString val) =>
+               self -> val -> m ()
+setOuterText self val
+  = liftIO (js_setOuterText (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"outerText\"]; })"
+        js_getOuterText :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.outerText Mozilla HTMLElement.outerText documentation> 
+getOuterText ::
+             (MonadIO m, IsHTMLElement self, FromJSString result) =>
+               self -> m result
+getOuterText self
+  = liftIO (fromJSString <$> (js_getOuterText (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocorrect\"] = $2; })"
+        js_setAutocorrect :: HTMLElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
+setAutocorrect ::
+               (MonadIO m, IsHTMLElement self) => self -> Bool -> m ()
+setAutocorrect self val
+  = liftIO (js_setAutocorrect (toHTMLElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autocorrect\"] ? 1 : 0); })"
+        js_getAutocorrect :: HTMLElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocorrect Mozilla HTMLElement.autocorrect documentation> 
+getAutocorrect :: (MonadIO m, IsHTMLElement self) => self -> m Bool
+getAutocorrect self
+  = liftIO (js_getAutocorrect (toHTMLElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocapitalize\"] = $2; })"
+        js_setAutocapitalize :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
+setAutocapitalize ::
+                  (MonadIO m, IsHTMLElement self, ToJSString val) =>
+                    self -> val -> m ()
+setAutocapitalize self val
+  = liftIO
+      (js_setAutocapitalize (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"autocapitalize\"]; })"
+        js_getAutocapitalize :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.autocapitalize Mozilla HTMLElement.autocapitalize documentation> 
+getAutocapitalize ::
+                  (MonadIO m, IsHTMLElement self, FromJSString result) =>
+                    self -> m result
+getAutocapitalize self
+  = liftIO
+      (fromJSString <$> (js_getAutocapitalize (toHTMLElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"webkitdropzone\"] = $2; })"
+        js_setWebkitdropzone :: HTMLElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
+setWebkitdropzone ::
+                  (MonadIO m, IsHTMLElement self, ToJSString val) =>
+                    self -> val -> m ()
+setWebkitdropzone self val
+  = liftIO
+      (js_setWebkitdropzone (toHTMLElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitdropzone\"]; })"
+        js_getWebkitdropzone :: HTMLElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement.webkitdropzone Mozilla HTMLElement.webkitdropzone documentation> 
+getWebkitdropzone ::
+                  (MonadIO m, IsHTMLElement self, FromJSString result) =>
+                    self -> m result
+getWebkitdropzone self
+  = liftIO
+      (fromJSString <$> (js_getWebkitdropzone (toHTMLElement self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLEmbedElement.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLEmbedElement
+       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setAlign,
+        setAlign, js_getAlign, getAlign, js_setHeight, setHeight,
+        js_getHeight, getHeight, js_setName, setName, js_getName, getName,
+        js_setSrc, setSrc, js_getSrc, getSrc, js_setType, setType,
+        js_getType, getType, js_setWidth, setWidth, js_getWidth, getWidth,
+        HTMLEmbedElement(..), gTypeHTMLEmbedElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
+        js_getSVGDocument :: HTMLEmbedElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+getSVGDocument :: (MonadIO m) => HTMLEmbedElement -> m Document
+getSVGDocument self = liftIO (js_getSVGDocument self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.getSVGDocument Mozilla HTMLEmbedElement.getSVGDocument documentation> 
+getSVGDocument_ :: (MonadIO m) => HTMLEmbedElement -> m ()
+getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.align Mozilla HTMLEmbedElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.height Mozilla HTMLEmbedElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.name Mozilla HTMLEmbedElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.src Mozilla HTMLEmbedElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.type Mozilla HTMLEmbedElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLEmbedElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLEmbedElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLEmbedElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement.width Mozilla HTMLEmbedElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLEmbedElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFieldSetElement.hs
@@ -0,0 +1,145 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFieldSetElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_setDisabled,
+        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
+        js_setName, setName, js_getName, getName, js_getType, getType,
+        js_getElements, getElements, js_getWillValidate, getWillValidate,
+        js_getValidity, getValidity, js_getValidationMessage,
+        getValidationMessage, HTMLFieldSetElement(..),
+        gTypeHTMLFieldSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLFieldSetElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLFieldSetElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.checkValidity Mozilla HTMLFieldSetElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLFieldSetElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLFieldSetElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLFieldSetElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.reportValidity Mozilla HTMLFieldSetElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLFieldSetElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLFieldSetElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.setCustomValidity Mozilla HTMLFieldSetElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLFieldSetElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLFieldSetElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLFieldSetElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLFieldSetElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.disabled Mozilla HTMLFieldSetElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLFieldSetElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLFieldSetElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.form Mozilla HTMLFieldSetElement.form documentation> 
+getForm :: (MonadIO m) => HTMLFieldSetElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLFieldSetElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLFieldSetElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLFieldSetElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.name Mozilla HTMLFieldSetElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLFieldSetElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.type Mozilla HTMLFieldSetElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })" js_getElements
+        :: HTMLFieldSetElement -> IO HTMLFormControlsCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.elements Mozilla HTMLFieldSetElement.elements documentation> 
+getElements ::
+            (MonadIO m) => HTMLFieldSetElement -> m HTMLFormControlsCollection
+getElements self = liftIO (js_getElements self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLFieldSetElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.willValidate Mozilla HTMLFieldSetElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLFieldSetElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLFieldSetElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validity Mozilla HTMLFieldSetElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLFieldSetElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLFieldSetElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement.validationMessage Mozilla HTMLFieldSetElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLFieldSetElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFontElement.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFontElement
+       (js_setColor, setColor, js_getColor, getColor, js_setFace, setFace,
+        js_getFace, getFace, js_setSize, setSize, js_getSize, getSize,
+        HTMLFontElement(..), gTypeHTMLFontElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"color\"] = $2; })" js_setColor
+        :: HTMLFontElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
+setColor ::
+         (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
+setColor self val = liftIO (js_setColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })" js_getColor ::
+        HTMLFontElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.color Mozilla HTMLFontElement.color documentation> 
+getColor ::
+         (MonadIO m, FromJSString result) => HTMLFontElement -> m result
+getColor self = liftIO (fromJSString <$> (js_getColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"face\"] = $2; })" js_setFace ::
+        HTMLFontElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
+setFace ::
+        (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
+setFace self val = liftIO (js_setFace self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"face\"]; })" js_getFace ::
+        HTMLFontElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.face Mozilla HTMLFontElement.face documentation> 
+getFace ::
+        (MonadIO m, FromJSString result) => HTMLFontElement -> m result
+getFace self = liftIO (fromJSString <$> (js_getFace self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
+        HTMLFontElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
+setSize ::
+        (MonadIO m, ToJSString val) => HTMLFontElement -> val -> m ()
+setSize self val = liftIO (js_setSize self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        HTMLFontElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement.size Mozilla HTMLFontElement.size documentation> 
+getSize ::
+        (MonadIO m, FromJSString result) => HTMLFontElement -> m result
+getSize self = liftIO (fromJSString <$> (js_getSize self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormControlsCollection.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFormControlsCollection
+       (js_get, get, get_, getUnsafe, getUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        HTMLFormControlsCollection(..), gTypeHTMLFormControlsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        HTMLFormControlsCollection -> Word -> IO (Nullable HTMLElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
+get ::
+    (MonadIO m) =>
+      HTMLFormControlsCollection -> Word -> m (Maybe HTMLElement)
+get self index = liftIO (nullableToMaybe <$> (js_get self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
+get_ :: (MonadIO m) => HTMLFormControlsCollection -> Word -> m ()
+get_ self index = liftIO (void (js_get self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
+getUnsafe ::
+          (MonadIO m, HasCallStack) =>
+            HTMLFormControlsCollection -> Word -> m HTMLElement
+getUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_get self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.get Mozilla HTMLFormControlsCollection.get documentation> 
+getUnchecked ::
+             (MonadIO m) => HTMLFormControlsCollection -> Word -> m HTMLElement
+getUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_get self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        HTMLFormControlsCollection ->
+          JSString -> IO (Nullable RadioNodeListOrElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLFormControlsCollection ->
+              name -> m (Maybe RadioNodeListOrElement)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) =>
+             HTMLFormControlsCollection -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection.namedItem Mozilla HTMLFormControlsCollection.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) =>
+                     HTMLFormControlsCollection -> name -> m RadioNodeListOrElement
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFormElement.hs
@@ -0,0 +1,306 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFormElement
+       (js_getAt, getAt, getAt_, getAtUnsafe, getAtUnchecked, js_get, get,
+        get_, getUnsafe, getUnchecked, js_submit, submit, js_reset, reset,
+        js_checkValidity, checkValidity, checkValidity_, js_reportValidity,
+        reportValidity, reportValidity_, js_requestAutocomplete,
+        requestAutocomplete, js_setAcceptCharset, setAcceptCharset,
+        js_getAcceptCharset, getAcceptCharset, js_setAction, setAction,
+        js_getAction, getAction, js_setAutocomplete, setAutocomplete,
+        js_getAutocomplete, getAutocomplete, js_setEnctype, setEnctype,
+        js_getEnctype, getEnctype, js_setEncoding, setEncoding,
+        js_getEncoding, getEncoding, js_setMethod, setMethod, js_getMethod,
+        getMethod, js_setName, setName, js_getName, getName,
+        js_setNoValidate, setNoValidate, js_getNoValidate, getNoValidate,
+        js_setTarget, setTarget, js_getTarget, getTarget, js_getElements,
+        getElements, js_getLength, getLength, HTMLFormElement(..),
+        gTypeHTMLFormElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_getAt ::
+        HTMLFormElement -> Word -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getAt ::
+      (MonadIO m) => HTMLFormElement -> Word -> m (Maybe Element)
+getAt self index
+  = liftIO (nullableToMaybe <$> (js_getAt self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getAt_ :: (MonadIO m) => HTMLFormElement -> Word -> m ()
+getAt_ self index = liftIO (void (js_getAt self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getAtUnsafe ::
+            (MonadIO m, HasCallStack) => HTMLFormElement -> Word -> m Element
+getAtUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_getAt self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getAtUnchecked ::
+               (MonadIO m) => HTMLFormElement -> Word -> m Element
+getAtUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAt self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        HTMLFormElement -> JSString -> IO (Nullable RadioNodeListOrElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+get ::
+    (MonadIO m, ToJSString name) =>
+      HTMLFormElement -> name -> m (Maybe RadioNodeListOrElement)
+get self name
+  = liftIO (nullableToMaybe <$> (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+get_ ::
+     (MonadIO m, ToJSString name) => HTMLFormElement -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getUnsafe ::
+          (MonadIO m, ToJSString name, HasCallStack) =>
+            HTMLFormElement -> name -> m RadioNodeListOrElement
+getUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_get self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.get Mozilla HTMLFormElement.get documentation> 
+getUnchecked ::
+             (MonadIO m, ToJSString name) =>
+               HTMLFormElement -> name -> m RadioNodeListOrElement
+getUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_get self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"submit\"](); })" js_submit ::
+        HTMLFormElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.submit Mozilla HTMLFormElement.submit documentation> 
+submit :: (MonadIO m) => HTMLFormElement -> m ()
+submit self = liftIO (js_submit self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
+        HTMLFormElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reset Mozilla HTMLFormElement.reset documentation> 
+reset :: (MonadIO m) => HTMLFormElement -> m ()
+reset self = liftIO (js_reset self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLFormElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLFormElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.checkValidity Mozilla HTMLFormElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLFormElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLFormElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLFormElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.reportValidity Mozilla HTMLFormElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLFormElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requestAutocomplete\"](); })"
+        js_requestAutocomplete :: HTMLFormElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.requestAutocomplete Mozilla HTMLFormElement.requestAutocomplete documentation> 
+requestAutocomplete :: (MonadIO m) => HTMLFormElement -> m ()
+requestAutocomplete self = liftIO (js_requestAutocomplete self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"acceptCharset\"] = $2; })"
+        js_setAcceptCharset :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
+setAcceptCharset ::
+                 (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAcceptCharset self val
+  = liftIO (js_setAcceptCharset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"acceptCharset\"]; })"
+        js_getAcceptCharset :: HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.acceptCharset Mozilla HTMLFormElement.acceptCharset documentation> 
+getAcceptCharset ::
+                 (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getAcceptCharset self
+  = liftIO (fromJSString <$> (js_getAcceptCharset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"action\"] = $2; })"
+        js_setAction :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
+setAction ::
+          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAction self val = liftIO (js_setAction self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"action\"]; })" js_getAction ::
+        HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.action Mozilla HTMLFormElement.action documentation> 
+getAction ::
+          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getAction self = liftIO (fromJSString <$> (js_getAction self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setAutocomplete self val
+  = liftIO (js_setAutocomplete self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.autocomplete Mozilla HTMLFormElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getAutocomplete self
+  = liftIO (fromJSString <$> (js_getAutocomplete self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"enctype\"] = $2; })"
+        js_setEnctype :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+setEnctype ::
+           (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setEnctype self val = liftIO (js_setEnctype self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"enctype\"]; })" js_getEnctype ::
+        HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.enctype Mozilla HTMLFormElement.enctype documentation> 
+getEnctype ::
+           (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getEnctype self = liftIO (fromJSString <$> (js_getEnctype self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"encoding\"] = $2; })"
+        js_setEncoding :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+setEncoding ::
+            (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setEncoding self val
+  = liftIO (js_setEncoding self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
+        :: HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.encoding Mozilla HTMLFormElement.encoding documentation> 
+getEncoding ::
+            (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"method\"] = $2; })"
+        js_setMethod :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+setMethod ::
+          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setMethod self val = liftIO (js_setMethod self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
+        HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.method Mozilla HTMLFormElement.method documentation> 
+getMethod ::
+          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getMethod self = liftIO (fromJSString <$> (js_getMethod self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.name Mozilla HTMLFormElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noValidate\"] = $2; })"
+        js_setNoValidate :: HTMLFormElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
+setNoValidate :: (MonadIO m) => HTMLFormElement -> Bool -> m ()
+setNoValidate self val = liftIO (js_setNoValidate self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noValidate\"] ? 1 : 0); })"
+        js_getNoValidate :: HTMLFormElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.noValidate Mozilla HTMLFormElement.noValidate documentation> 
+getNoValidate :: (MonadIO m) => HTMLFormElement -> m Bool
+getNoValidate self = liftIO (js_getNoValidate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLFormElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
+setTarget ::
+          (MonadIO m, ToJSString val) => HTMLFormElement -> val -> m ()
+setTarget self val = liftIO (js_setTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        HTMLFormElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.target Mozilla HTMLFormElement.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) => HTMLFormElement -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elements\"]; })" js_getElements
+        :: HTMLFormElement -> IO HTMLFormControlsCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.elements Mozilla HTMLFormElement.elements documentation> 
+getElements ::
+            (MonadIO m) => HTMLFormElement -> m HTMLFormControlsCollection
+getElements self = liftIO (js_getElements self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        HTMLFormElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement.length Mozilla HTMLFormElement.length documentation> 
+getLength :: (MonadIO m) => HTMLFormElement -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameElement.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFrameElement
+       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setName,
+        setName, js_getName, getName, js_setScrolling, setScrolling,
+        js_getScrolling, getScrolling, js_setSrc, setSrc, js_getSrc,
+        getSrc, js_setFrameBorder, setFrameBorder, js_getFrameBorder,
+        getFrameBorder, js_setLongDesc, setLongDesc, js_getLongDesc,
+        getLongDesc, js_setNoResize, setNoResize, js_getNoResize,
+        getNoResize, js_getContentDocument, getContentDocument,
+        js_getContentWindow, getContentWindow, js_setMarginHeight,
+        setMarginHeight, js_getMarginHeight, getMarginHeight,
+        js_setMarginWidth, setMarginWidth, js_getMarginWidth,
+        getMarginWidth, js_getWidth, getWidth, js_getHeight, getHeight,
+        js_setLocation, setLocation, js_getLocation, getLocation,
+        getLocationUnsafe, getLocationUnchecked, HTMLFrameElement(..),
+        gTypeHTMLFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
+        js_getSVGDocument :: HTMLFrameElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
+getSVGDocument :: (MonadIO m) => HTMLFrameElement -> m Document
+getSVGDocument self = liftIO (js_getSVGDocument self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.getSVGDocument Mozilla HTMLFrameElement.getSVGDocument documentation> 
+getSVGDocument_ :: (MonadIO m) => HTMLFrameElement -> m ()
+getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.name Mozilla HTMLFrameElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
+        js_setScrolling :: HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
+setScrolling ::
+             (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setScrolling self val
+  = liftIO (js_setScrolling self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrolling\"]; })"
+        js_getScrolling :: HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.scrolling Mozilla HTMLFrameElement.scrolling documentation> 
+getScrolling ::
+             (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getScrolling self
+  = liftIO (fromJSString <$> (js_getScrolling self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.src Mozilla HTMLFrameElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
+        js_setFrameBorder :: HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
+setFrameBorder ::
+               (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setFrameBorder self val
+  = liftIO (js_setFrameBorder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frameBorder\"]; })"
+        js_getFrameBorder :: HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.frameBorder Mozilla HTMLFrameElement.frameBorder documentation> 
+getFrameBorder ::
+               (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getFrameBorder self
+  = liftIO (fromJSString <$> (js_getFrameBorder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+        js_setLongDesc :: HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
+setLongDesc ::
+            (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setLongDesc self val
+  = liftIO (js_setLongDesc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
+        :: HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.longDesc Mozilla HTMLFrameElement.longDesc documentation> 
+getLongDesc ::
+            (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noResize\"] = $2; })"
+        js_setNoResize :: HTMLFrameElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+setNoResize :: (MonadIO m) => HTMLFrameElement -> Bool -> m ()
+setNoResize self val = liftIO (js_setNoResize self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noResize\"] ? 1 : 0); })"
+        js_getNoResize :: HTMLFrameElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.noResize Mozilla HTMLFrameElement.noResize documentation> 
+getNoResize :: (MonadIO m) => HTMLFrameElement -> m Bool
+getNoResize self = liftIO (js_getNoResize self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
+        js_getContentDocument :: HTMLFrameElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentDocument Mozilla HTMLFrameElement.contentDocument documentation> 
+getContentDocument :: (MonadIO m) => HTMLFrameElement -> m Document
+getContentDocument self = liftIO (js_getContentDocument self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
+        js_getContentWindow :: HTMLFrameElement -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.contentWindow Mozilla HTMLFrameElement.contentWindow documentation> 
+getContentWindow :: (MonadIO m) => HTMLFrameElement -> m Window
+getContentWindow self = liftIO (js_getContentWindow self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
+        js_setMarginHeight :: HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
+setMarginHeight ::
+                (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginHeight self val
+  = liftIO (js_setMarginHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"marginHeight\"]; })"
+        js_getMarginHeight :: HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginHeight Mozilla HTMLFrameElement.marginHeight documentation> 
+getMarginHeight ::
+                (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getMarginHeight self
+  = liftIO (fromJSString <$> (js_getMarginHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
+        js_setMarginWidth :: HTMLFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
+setMarginWidth ::
+               (MonadIO m, ToJSString val) => HTMLFrameElement -> val -> m ()
+setMarginWidth self val
+  = liftIO (js_setMarginWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"marginWidth\"]; })"
+        js_getMarginWidth :: HTMLFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.marginWidth Mozilla HTMLFrameElement.marginWidth documentation> 
+getMarginWidth ::
+               (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getMarginWidth self
+  = liftIO (fromJSString <$> (js_getMarginWidth self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLFrameElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.width Mozilla HTMLFrameElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLFrameElement -> m Int
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLFrameElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.height Mozilla HTMLFrameElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLFrameElement -> m Int
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"location\"] = $2; })"
+        js_setLocation :: HTMLFrameElement -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+setLocation ::
+            (MonadIO m, ToJSString val) =>
+              HTMLFrameElement -> Maybe val -> m ()
+setLocation self val
+  = liftIO (js_setLocation self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
+        :: HTMLFrameElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+getLocation ::
+            (MonadIO m, FromJSString result) =>
+              HTMLFrameElement -> m (Maybe result)
+getLocation self
+  = liftIO (fromMaybeJSString <$> (js_getLocation self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+getLocationUnsafe ::
+                  (MonadIO m, HasCallStack, FromJSString result) =>
+                    HTMLFrameElement -> m result
+getLocationUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getLocation self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement.location Mozilla HTMLFrameElement.location documentation> 
+getLocationUnchecked ::
+                     (MonadIO m, FromJSString result) => HTMLFrameElement -> m result
+getLocationUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getLocation self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLFrameSetElement.hs
@@ -0,0 +1,114 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLFrameSetElement
+       (js_setCols, setCols, js_getCols, getCols, js_setRows, setRows,
+        js_getRows, getRows, blur, error, focus, focusin, focusout, load,
+        resize, scroll, webKitWillRevealBottom, webKitWillRevealLeft,
+        webKitWillRevealRight, webKitWillRevealTop,
+        HTMLFrameSetElement(..), gTypeHTMLFrameSetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cols\"] = $2; })" js_setCols ::
+        HTMLFrameSetElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
+setCols ::
+        (MonadIO m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setCols self val = liftIO (js_setCols self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })" js_getCols ::
+        HTMLFrameSetElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.cols Mozilla HTMLFrameSetElement.cols documentation> 
+getCols ::
+        (MonadIO m, FromJSString result) => HTMLFrameSetElement -> m result
+getCols self = liftIO (fromJSString <$> (js_getCols self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rows\"] = $2; })" js_setRows ::
+        HTMLFrameSetElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
+setRows ::
+        (MonadIO m, ToJSString val) => HTMLFrameSetElement -> val -> m ()
+setRows self val = liftIO (js_setRows self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
+        HTMLFrameSetElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.rows Mozilla HTMLFrameSetElement.rows documentation> 
+getRows ::
+        (MonadIO m, FromJSString result) => HTMLFrameSetElement -> m result
+getRows self = liftIO (fromJSString <$> (js_getRows self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onblur Mozilla HTMLFrameSetElement.onblur documentation> 
+blur :: EventName HTMLFrameSetElement FocusEvent
+blur = unsafeEventNameAsync (toJSString "blur")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onerror Mozilla HTMLFrameSetElement.onerror documentation> 
+error :: EventName HTMLFrameSetElement UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocus Mozilla HTMLFrameSetElement.onfocus documentation> 
+focus :: EventName HTMLFrameSetElement FocusEvent
+focus = unsafeEventNameAsync (toJSString "focus")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocusin Mozilla HTMLFrameSetElement.onfocusin documentation> 
+focusin :: EventName HTMLFrameSetElement onfocusin
+focusin = unsafeEventName (toJSString "focusin")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onfocusout Mozilla HTMLFrameSetElement.onfocusout documentation> 
+focusout :: EventName HTMLFrameSetElement onfocusout
+focusout = unsafeEventName (toJSString "focusout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onload Mozilla HTMLFrameSetElement.onload documentation> 
+load :: EventName HTMLFrameSetElement UIEvent
+load = unsafeEventNameAsync (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onresize Mozilla HTMLFrameSetElement.onresize documentation> 
+resize :: EventName HTMLFrameSetElement UIEvent
+resize = unsafeEventName (toJSString "resize")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onscroll Mozilla HTMLFrameSetElement.onscroll documentation> 
+scroll :: EventName HTMLFrameSetElement UIEvent
+scroll = unsafeEventName (toJSString "scroll")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealbottom Mozilla HTMLFrameSetElement.onwebkitwillrevealbottom documentation> 
+webKitWillRevealBottom :: EventName HTMLFrameSetElement Event
+webKitWillRevealBottom
+  = unsafeEventName (toJSString "webkitwillrevealbottom")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealleft Mozilla HTMLFrameSetElement.onwebkitwillrevealleft documentation> 
+webKitWillRevealLeft :: EventName HTMLFrameSetElement Event
+webKitWillRevealLeft
+  = unsafeEventName (toJSString "webkitwillrevealleft")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealright Mozilla HTMLFrameSetElement.onwebkitwillrevealright documentation> 
+webKitWillRevealRight :: EventName HTMLFrameSetElement Event
+webKitWillRevealRight
+  = unsafeEventName (toJSString "webkitwillrevealright")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement.onwebkitwillrevealtop Mozilla HTMLFrameSetElement.onwebkitwillrevealtop documentation> 
+webKitWillRevealTop :: EventName HTMLFrameSetElement Event
+webKitWillRevealTop
+  = unsafeEventName (toJSString "webkitwillrevealtop")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHRElement.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHRElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, js_setColor,
+        setColor, js_getColor, getColor, js_setNoShade, setNoShade,
+        js_getNoShade, getNoShade, js_setSize, setSize, js_getSize,
+        getSize, js_setWidth, setWidth, js_getWidth, getWidth,
+        HTMLHRElement(..), gTypeHTMLHRElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLHRElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLHRElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.align Mozilla HTMLHRElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"color\"] = $2; })" js_setColor
+        :: HTMLHRElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
+setColor ::
+         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
+setColor self val = liftIO (js_setColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"color\"]; })" js_getColor ::
+        HTMLHRElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.color Mozilla HTMLHRElement.color documentation> 
+getColor ::
+         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
+getColor self = liftIO (fromJSString <$> (js_getColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noShade\"] = $2; })"
+        js_setNoShade :: HTMLHRElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+setNoShade :: (MonadIO m) => HTMLHRElement -> Bool -> m ()
+setNoShade self val = liftIO (js_setNoShade self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noShade\"] ? 1 : 0); })"
+        js_getNoShade :: HTMLHRElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.noShade Mozilla HTMLHRElement.noShade documentation> 
+getNoShade :: (MonadIO m) => HTMLHRElement -> m Bool
+getNoShade self = liftIO (js_getNoShade self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
+        HTMLHRElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
+setSize ::
+        (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
+setSize self val = liftIO (js_setSize self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        HTMLHRElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.size Mozilla HTMLHRElement.size documentation> 
+getSize ::
+        (MonadIO m, FromJSString result) => HTMLHRElement -> m result
+getSize self = liftIO (fromJSString <$> (js_getSize self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLHRElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLHRElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLHRElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement.width Mozilla HTMLHRElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLHRElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHeadElement
+       (js_setProfile, setProfile, js_getProfile, getProfile,
+        HTMLHeadElement(..), gTypeHTMLHeadElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"profile\"] = $2; })"
+        js_setProfile :: HTMLHeadElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
+setProfile ::
+           (MonadIO m, ToJSString val) => HTMLHeadElement -> val -> m ()
+setProfile self val = liftIO (js_setProfile self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"profile\"]; })" js_getProfile ::
+        HTMLHeadElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement.profile Mozilla HTMLHeadElement.profile documentation> 
+getProfile ::
+           (MonadIO m, FromJSString result) => HTMLHeadElement -> m result
+getProfile self = liftIO (fromJSString <$> (js_getProfile self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHeadingElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHeadingElement
+       (js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLHeadingElement(..), gTypeHTMLHeadingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLHeadingElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLHeadingElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLHeadingElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement.align Mozilla HTMLHeadingElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLHeadingElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHtmlElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHtmlElement
+       (js_setVersion, setVersion, js_getVersion, getVersion,
+        js_setManifest, setManifest, js_getManifest, getManifest,
+        HTMLHtmlElement(..), gTypeHTMLHtmlElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"version\"] = $2; })"
+        js_setVersion :: HTMLHtmlElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
+setVersion ::
+           (MonadIO m, ToJSString val) => HTMLHtmlElement -> val -> m ()
+setVersion self val = liftIO (js_setVersion self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
+        HTMLHtmlElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.version Mozilla HTMLHtmlElement.version documentation> 
+getVersion ::
+           (MonadIO m, FromJSString result) => HTMLHtmlElement -> m result
+getVersion self = liftIO (fromJSString <$> (js_getVersion self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"manifest\"] = $2; })"
+        js_setManifest :: HTMLHtmlElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
+setManifest ::
+            (MonadIO m, ToJSString val) => HTMLHtmlElement -> val -> m ()
+setManifest self val
+  = liftIO (js_setManifest self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"manifest\"]; })" js_getManifest
+        :: HTMLHtmlElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement.manifest Mozilla HTMLHtmlElement.manifest documentation> 
+getManifest ::
+            (MonadIO m, FromJSString result) => HTMLHtmlElement -> m result
+getManifest self = liftIO (fromJSString <$> (js_getManifest self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLHyperlinkElementUtils.hs
@@ -0,0 +1,290 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLHyperlinkElementUtils
+       (js_setHref, setHref, js_getHref, getHref, js_getOrigin, getOrigin,
+        js_setProtocol, setProtocol, js_getProtocol, getProtocol,
+        js_setUsername, setUsername, js_getUsername, getUsername,
+        js_setPassword, setPassword, js_getPassword, getPassword,
+        js_setHost, setHost, js_getHost, getHost, js_setHostname,
+        setHostname, js_getHostname, getHostname, js_setPort, setPort,
+        js_getPort, getPort, js_setPathname, setPathname, js_getPathname,
+        getPathname, js_setSearch, setSearch, js_getSearch, getSearch,
+        js_setHash, setHash, js_getHash, getHash,
+        HTMLHyperlinkElementUtils(..), gTypeHTMLHyperlinkElementUtils,
+        IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
+        HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
+setHref ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+          self -> val -> m ()
+setHref self val
+  = liftIO
+      (js_setHref (toHTMLHyperlinkElementUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.href Mozilla HTMLHyperlinkElementUtils.href documentation> 
+getHref ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self,
+         FromJSString result) =>
+          self -> m result
+getHref self
+  = liftIO
+      (fromJSString <$> (js_getHref (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.origin Mozilla HTMLHyperlinkElementUtils.origin documentation> 
+getOrigin ::
+          (MonadIO m, IsHTMLHyperlinkElementUtils self,
+           FromJSString result) =>
+            self -> m result
+getOrigin self
+  = liftIO
+      (fromJSString <$>
+         (js_getOrigin (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
+setProtocol ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+              self -> val -> m ()
+setProtocol self val
+  = liftIO
+      (js_setProtocol (toHTMLHyperlinkElementUtils self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.protocol Mozilla HTMLHyperlinkElementUtils.protocol documentation> 
+getProtocol ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self,
+             FromJSString result) =>
+              self -> m result
+getProtocol self
+  = liftIO
+      (fromJSString <$>
+         (js_getProtocol (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
+setUsername ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+              self -> val -> m ()
+setUsername self val
+  = liftIO
+      (js_setUsername (toHTMLHyperlinkElementUtils self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })" js_getUsername
+        :: HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.username Mozilla HTMLHyperlinkElementUtils.username documentation> 
+getUsername ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self,
+             FromJSString result) =>
+              self -> m result
+getUsername self
+  = liftIO
+      (fromJSString <$>
+         (js_getUsername (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
+setPassword ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+              self -> val -> m ()
+setPassword self val
+  = liftIO
+      (js_setPassword (toHTMLHyperlinkElementUtils self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })" js_getPassword
+        :: HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.password Mozilla HTMLHyperlinkElementUtils.password documentation> 
+getPassword ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self,
+             FromJSString result) =>
+              self -> m result
+getPassword self
+  = liftIO
+      (fromJSString <$>
+         (js_getPassword (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
+        HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
+setHost ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+          self -> val -> m ()
+setHost self val
+  = liftIO
+      (js_setHost (toHTMLHyperlinkElementUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.host Mozilla HTMLHyperlinkElementUtils.host documentation> 
+getHost ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self,
+         FromJSString result) =>
+          self -> m result
+getHost self
+  = liftIO
+      (fromJSString <$> (js_getHost (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
+setHostname ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+              self -> val -> m ()
+setHostname self val
+  = liftIO
+      (js_setHostname (toHTMLHyperlinkElementUtils self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
+        :: HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hostname Mozilla HTMLHyperlinkElementUtils.hostname documentation> 
+getHostname ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self,
+             FromJSString result) =>
+              self -> m result
+getHostname self
+  = liftIO
+      (fromJSString <$>
+         (js_getHostname (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
+        HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
+setPort ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+          self -> val -> m ()
+setPort self val
+  = liftIO
+      (js_setPort (toHTMLHyperlinkElementUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.port Mozilla HTMLHyperlinkElementUtils.port documentation> 
+getPort ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self,
+         FromJSString result) =>
+          self -> m result
+getPort self
+  = liftIO
+      (fromJSString <$> (js_getPort (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
+setPathname ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+              self -> val -> m ()
+setPathname self val
+  = liftIO
+      (js_setPathname (toHTMLHyperlinkElementUtils self)
+         (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
+        :: HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.pathname Mozilla HTMLHyperlinkElementUtils.pathname documentation> 
+getPathname ::
+            (MonadIO m, IsHTMLHyperlinkElementUtils self,
+             FromJSString result) =>
+              self -> m result
+getPathname self
+  = liftIO
+      (fromJSString <$>
+         (js_getPathname (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
+setSearch ::
+          (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+            self -> val -> m ()
+setSearch self val
+  = liftIO
+      (js_setSearch (toHTMLHyperlinkElementUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.search Mozilla HTMLHyperlinkElementUtils.search documentation> 
+getSearch ::
+          (MonadIO m, IsHTMLHyperlinkElementUtils self,
+           FromJSString result) =>
+            self -> m result
+getSearch self
+  = liftIO
+      (fromJSString <$>
+         (js_getSearch (toHTMLHyperlinkElementUtils self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
+        HTMLHyperlinkElementUtils -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
+setHash ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self, ToJSString val) =>
+          self -> val -> m ()
+setHash self val
+  = liftIO
+      (js_setHash (toHTMLHyperlinkElementUtils self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
+        HTMLHyperlinkElementUtils -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils.hash Mozilla HTMLHyperlinkElementUtils.hash documentation> 
+getHash ::
+        (MonadIO m, IsHTMLHyperlinkElementUtils self,
+         FromJSString result) =>
+          self -> m result
+getHash self
+  = liftIO
+      (fromJSString <$> (js_getHash (toHTMLHyperlinkElementUtils self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLIFrameElement.hs
@@ -0,0 +1,275 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLIFrameElement
+       (js_getSVGDocument, getSVGDocument, getSVGDocument_, js_setAlign,
+        setAlign, js_getAlign, getAlign, js_setFrameBorder, setFrameBorder,
+        js_getFrameBorder, getFrameBorder, js_setHeight, setHeight,
+        js_getHeight, getHeight, js_setLongDesc, setLongDesc,
+        js_getLongDesc, getLongDesc, js_setMarginHeight, setMarginHeight,
+        js_getMarginHeight, getMarginHeight, js_setMarginWidth,
+        setMarginWidth, js_getMarginWidth, getMarginWidth, js_setName,
+        setName, js_getName, getName, js_getSandbox, getSandbox,
+        js_setAllowFullscreen, setAllowFullscreen, js_getAllowFullscreen,
+        getAllowFullscreen, js_setScrolling, setScrolling, js_getScrolling,
+        getScrolling, js_setSrc, setSrc, js_getSrc, getSrc, js_setSrcdoc,
+        setSrcdoc, js_getSrcdoc, getSrcdoc, js_setWidth, setWidth,
+        js_getWidth, getWidth, js_getContentDocument, getContentDocument,
+        js_getContentWindow, getContentWindow, HTMLIFrameElement(..),
+        gTypeHTMLIFrameElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
+        js_getSVGDocument :: HTMLIFrameElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+getSVGDocument :: (MonadIO m) => HTMLIFrameElement -> m Document
+getSVGDocument self = liftIO (js_getSVGDocument self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.getSVGDocument Mozilla HTMLIFrameElement.getSVGDocument documentation> 
+getSVGDocument_ :: (MonadIO m) => HTMLIFrameElement -> m ()
+getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.align Mozilla HTMLIFrameElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"frameBorder\"] = $2; })"
+        js_setFrameBorder :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
+setFrameBorder ::
+               (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setFrameBorder self val
+  = liftIO (js_setFrameBorder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frameBorder\"]; })"
+        js_getFrameBorder :: HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.frameBorder Mozilla HTMLIFrameElement.frameBorder documentation> 
+getFrameBorder ::
+               (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getFrameBorder self
+  = liftIO (fromJSString <$> (js_getFrameBorder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.height Mozilla HTMLIFrameElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+        js_setLongDesc :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
+setLongDesc ::
+            (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setLongDesc self val
+  = liftIO (js_setLongDesc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
+        :: HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.longDesc Mozilla HTMLIFrameElement.longDesc documentation> 
+getLongDesc ::
+            (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"marginHeight\"] = $2; })"
+        js_setMarginHeight :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
+setMarginHeight ::
+                (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginHeight self val
+  = liftIO (js_setMarginHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"marginHeight\"]; })"
+        js_getMarginHeight :: HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginHeight Mozilla HTMLIFrameElement.marginHeight documentation> 
+getMarginHeight ::
+                (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginHeight self
+  = liftIO (fromJSString <$> (js_getMarginHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"marginWidth\"] = $2; })"
+        js_setMarginWidth :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
+setMarginWidth ::
+               (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setMarginWidth self val
+  = liftIO (js_setMarginWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"marginWidth\"]; })"
+        js_getMarginWidth :: HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.marginWidth Mozilla HTMLIFrameElement.marginWidth documentation> 
+getMarginWidth ::
+               (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getMarginWidth self
+  = liftIO (fromJSString <$> (js_getMarginWidth self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.name Mozilla HTMLIFrameElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sandbox\"]; })" js_getSandbox ::
+        HTMLIFrameElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.sandbox Mozilla HTMLIFrameElement.sandbox documentation> 
+getSandbox :: (MonadIO m) => HTMLIFrameElement -> m DOMTokenList
+getSandbox self = liftIO (js_getSandbox self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"allowFullscreen\"] = $2; })"
+        js_setAllowFullscreen :: HTMLIFrameElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
+setAllowFullscreen ::
+                   (MonadIO m) => HTMLIFrameElement -> Bool -> m ()
+setAllowFullscreen self val
+  = liftIO (js_setAllowFullscreen self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"allowFullscreen\"] ? 1 : 0); })" js_getAllowFullscreen ::
+        HTMLIFrameElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.allowFullscreen Mozilla HTMLIFrameElement.allowFullscreen documentation> 
+getAllowFullscreen :: (MonadIO m) => HTMLIFrameElement -> m Bool
+getAllowFullscreen self = liftIO (js_getAllowFullscreen self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrolling\"] = $2; })"
+        js_setScrolling :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
+setScrolling ::
+             (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setScrolling self val
+  = liftIO (js_setScrolling self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrolling\"]; })"
+        js_getScrolling :: HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.scrolling Mozilla HTMLIFrameElement.scrolling documentation> 
+getScrolling ::
+             (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getScrolling self
+  = liftIO (fromJSString <$> (js_getScrolling self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.src Mozilla HTMLIFrameElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"srcdoc\"] = $2; })"
+        js_setSrcdoc :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
+setSrcdoc ::
+          (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setSrcdoc self val = liftIO (js_setSrcdoc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srcdoc\"]; })" js_getSrcdoc ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.srcdoc Mozilla HTMLIFrameElement.srcdoc documentation> 
+getSrcdoc ::
+          (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getSrcdoc self = liftIO (fromJSString <$> (js_getSrcdoc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLIFrameElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLIFrameElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLIFrameElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.width Mozilla HTMLIFrameElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLIFrameElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
+        js_getContentDocument :: HTMLIFrameElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentDocument Mozilla HTMLIFrameElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadIO m) => HTMLIFrameElement -> m Document
+getContentDocument self = liftIO (js_getContentDocument self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentWindow\"]; })"
+        js_getContentWindow :: HTMLIFrameElement -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement.contentWindow Mozilla HTMLIFrameElement.contentWindow documentation> 
+getContentWindow :: (MonadIO m) => HTMLIFrameElement -> m Window
+getContentWindow self = liftIO (js_getContentWindow self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLImageElement.hs
@@ -0,0 +1,353 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLImageElement
+       (js_setName, setName, js_getName, getName, js_setAlign, setAlign,
+        js_getAlign, getAlign, js_setAlt, setAlt, js_getAlt, getAlt,
+        js_setBorder, setBorder, js_getBorder, getBorder,
+        js_setCrossOrigin, setCrossOrigin, js_getCrossOrigin,
+        getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked,
+        js_setHeight, setHeight, js_getHeight, getHeight, js_setHspace,
+        setHspace, js_getHspace, getHspace, js_setIsMap, setIsMap,
+        js_getIsMap, getIsMap, js_setLongDesc, setLongDesc, js_getLongDesc,
+        getLongDesc, js_setSrc, setSrc, js_getSrc, getSrc, js_setSrcset,
+        setSrcset, js_getSrcset, getSrcset, js_setSizes, setSizes,
+        js_getSizes, getSizes, js_getCurrentSrc, getCurrentSrc,
+        js_setUseMap, setUseMap, js_getUseMap, getUseMap, js_setVspace,
+        setVspace, js_getVspace, getVspace, js_setWidth, setWidth,
+        js_getWidth, getWidth, js_getComplete, getComplete, js_setLowsrc,
+        setLowsrc, js_getLowsrc, getLowsrc, js_getNaturalHeight,
+        getNaturalHeight, js_getNaturalWidth, getNaturalWidth, js_getX,
+        getX, js_getY, getY, HTMLImageElement(..), gTypeHTMLImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.name Mozilla HTMLImageElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.align Mozilla HTMLImageElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
+        HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
+setAlt ::
+       (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setAlt self val = liftIO (js_setAlt self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.alt Mozilla HTMLImageElement.alt documentation> 
+getAlt ::
+       (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getAlt self = liftIO (fromJSString <$> (js_getAlt self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
+        js_setBorder :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
+setBorder ::
+          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setBorder self val = liftIO (js_setBorder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.border Mozilla HTMLImageElement.border documentation> 
+getBorder ::
+          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getBorder self = liftIO (fromJSString <$> (js_getBorder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLImageElement -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, ToJSString val) =>
+                 HTMLImageElement -> Maybe val -> m ()
+setCrossOrigin self val
+  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLImageElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, FromJSString result) =>
+                 HTMLImageElement -> m (Maybe result)
+getCrossOrigin self
+  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+getCrossOriginUnsafe ::
+                     (MonadIO m, HasCallStack, FromJSString result) =>
+                       HTMLImageElement -> m result
+getCrossOriginUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.crossOrigin Mozilla HTMLImageElement.crossOrigin documentation> 
+getCrossOriginUnchecked ::
+                        (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getCrossOriginUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLImageElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLImageElement -> Word -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLImageElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.height Mozilla HTMLImageElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLImageElement -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLImageElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLImageElement -> Word -> m ()
+setHspace self val = liftIO (js_setHspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
+        HTMLImageElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.hspace Mozilla HTMLImageElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLImageElement -> m Word
+getHspace self = liftIO (js_getHspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"isMap\"] = $2; })" js_setIsMap
+        :: HTMLImageElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
+setIsMap :: (MonadIO m) => HTMLImageElement -> Bool -> m ()
+setIsMap self val = liftIO (js_setIsMap self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isMap\"] ? 1 : 0); })"
+        js_getIsMap :: HTMLImageElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.isMap Mozilla HTMLImageElement.isMap documentation> 
+getIsMap :: (MonadIO m) => HTMLImageElement -> m Bool
+getIsMap self = liftIO (js_getIsMap self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"longDesc\"] = $2; })"
+        js_setLongDesc :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
+setLongDesc ::
+            (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLongDesc self val
+  = liftIO (js_setLongDesc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"longDesc\"]; })" js_getLongDesc
+        :: HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.longDesc Mozilla HTMLImageElement.longDesc documentation> 
+getLongDesc ::
+            (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getLongDesc self = liftIO (fromJSString <$> (js_getLongDesc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.src Mozilla HTMLImageElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"srcset\"] = $2; })"
+        js_setSrcset :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
+setSrcset ::
+          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSrcset self val = liftIO (js_setSrcset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })" js_getSrcset ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.srcset Mozilla HTMLImageElement.srcset documentation> 
+getSrcset ::
+          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getSrcset self = liftIO (fromJSString <$> (js_getSrcset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"sizes\"] = $2; })" js_setSizes
+        :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
+setSizes ::
+         (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setSizes self val = liftIO (js_setSizes self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.sizes Mozilla HTMLImageElement.sizes documentation> 
+getSizes ::
+         (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getSizes self = liftIO (fromJSString <$> (js_getSizes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentSrc\"]; })"
+        js_getCurrentSrc :: HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.currentSrc Mozilla HTMLImageElement.currentSrc documentation> 
+getCurrentSrc ::
+              (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getCurrentSrc self
+  = liftIO (fromJSString <$> (js_getCurrentSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
+setUseMap ::
+          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setUseMap self val = liftIO (js_setUseMap self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.useMap Mozilla HTMLImageElement.useMap documentation> 
+getUseMap ::
+          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+        js_setVspace :: HTMLImageElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLImageElement -> Word -> m ()
+setVspace self val = liftIO (js_setVspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
+        HTMLImageElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.vspace Mozilla HTMLImageElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLImageElement -> m Word
+getVspace self = liftIO (js_getVspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLImageElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLImageElement -> Word -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLImageElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.width Mozilla HTMLImageElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLImageElement -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"complete\"] ? 1 : 0); })"
+        js_getComplete :: HTMLImageElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.complete Mozilla HTMLImageElement.complete documentation> 
+getComplete :: (MonadIO m) => HTMLImageElement -> m Bool
+getComplete self = liftIO (js_getComplete self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lowsrc\"] = $2; })"
+        js_setLowsrc :: HTMLImageElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
+setLowsrc ::
+          (MonadIO m, ToJSString val) => HTMLImageElement -> val -> m ()
+setLowsrc self val = liftIO (js_setLowsrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lowsrc\"]; })" js_getLowsrc ::
+        HTMLImageElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.lowsrc Mozilla HTMLImageElement.lowsrc documentation> 
+getLowsrc ::
+          (MonadIO m, FromJSString result) => HTMLImageElement -> m result
+getLowsrc self = liftIO (fromJSString <$> (js_getLowsrc self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"naturalHeight\"]; })"
+        js_getNaturalHeight :: HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalHeight Mozilla HTMLImageElement.naturalHeight documentation> 
+getNaturalHeight :: (MonadIO m) => HTMLImageElement -> m Int
+getNaturalHeight self = liftIO (js_getNaturalHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"naturalWidth\"]; })"
+        js_getNaturalWidth :: HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.naturalWidth Mozilla HTMLImageElement.naturalWidth documentation> 
+getNaturalWidth :: (MonadIO m) => HTMLImageElement -> m Int
+getNaturalWidth self = liftIO (js_getNaturalWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.x Mozilla HTMLImageElement.x documentation> 
+getX :: (MonadIO m) => HTMLImageElement -> m Int
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        HTMLImageElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement.y Mozilla HTMLImageElement.y documentation> 
+getY :: (MonadIO m) => HTMLImageElement -> m Int
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLInputElement.hs
@@ -0,0 +1,896 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLInputElement
+       (js_stepUp, stepUp, js_stepDown, stepDown, js_checkValidity,
+        checkValidity, checkValidity_, js_reportValidity, reportValidity,
+        reportValidity_, js_setCustomValidity, setCustomValidity,
+        js_select, select, js_setRangeText, setRangeText, js_setRangeText4,
+        setRangeText4, js_setSelectionRange, setSelectionRange,
+        js_setAccept, setAccept, js_getAccept, getAccept, js_setAlt,
+        setAlt, js_getAlt, getAlt, js_setAutocomplete, setAutocomplete,
+        js_getAutocomplete, getAutocomplete, js_setAutofocus, setAutofocus,
+        js_getAutofocus, getAutofocus, js_setDefaultChecked,
+        setDefaultChecked, js_getDefaultChecked, getDefaultChecked,
+        js_setChecked, setChecked, js_getChecked, getChecked,
+        js_setDirName, setDirName, js_getDirName, getDirName,
+        js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_getForm, getForm, js_setFiles, setFiles, js_getFiles, getFiles,
+        getFilesUnsafe, getFilesUnchecked, js_setFormAction, setFormAction,
+        js_getFormAction, getFormAction, js_setFormEnctype, setFormEnctype,
+        js_getFormEnctype, getFormEnctype, js_setFormMethod, setFormMethod,
+        js_getFormMethod, getFormMethod, js_setFormNoValidate,
+        setFormNoValidate, js_getFormNoValidate, getFormNoValidate,
+        js_setFormTarget, setFormTarget, js_getFormTarget, getFormTarget,
+        js_setHeight, setHeight, js_getHeight, getHeight,
+        js_setIndeterminate, setIndeterminate, js_getIndeterminate,
+        getIndeterminate, js_getList, getList, js_setMax, setMax,
+        js_getMax, getMax, js_setMinLength, setMinLength, js_getMinLength,
+        getMinLength, js_setMaxLength, setMaxLength, js_getMaxLength,
+        getMaxLength, js_setMin, setMin, js_getMin, getMin, js_setMultiple,
+        setMultiple, js_getMultiple, getMultiple, js_setName, setName,
+        js_getName, getName, js_setPattern, setPattern, js_getPattern,
+        getPattern, js_setPlaceholder, setPlaceholder, js_getPlaceholder,
+        getPlaceholder, js_setReadOnly, setReadOnly, js_getReadOnly,
+        getReadOnly, js_setRequired, setRequired, js_getRequired,
+        getRequired, js_setSize, setSize, js_getSize, getSize, js_setSrc,
+        setSrc, js_getSrc, getSrc, js_setStep, setStep, js_getStep,
+        getStep, js_setType, setType, js_getType, getType,
+        js_setDefaultValue, setDefaultValue, js_getDefaultValue,
+        getDefaultValue, js_setValue, setValue, js_getValue, getValue,
+        js_setValueAsDate, setValueAsDate, js_getValueAsDate,
+        getValueAsDate, getValueAsDateUnsafe, getValueAsDateUnchecked,
+        js_setValueAsNumber, setValueAsNumber, js_getValueAsNumber,
+        getValueAsNumber, js_setWidth, setWidth, js_getWidth, getWidth,
+        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, js_setSelectionStart, setSelectionStart,
+        js_getSelectionStart, getSelectionStart, js_setSelectionEnd,
+        setSelectionEnd, js_getSelectionEnd, getSelectionEnd,
+        js_setSelectionDirection, setSelectionDirection,
+        js_getSelectionDirection, getSelectionDirection, js_setAlign,
+        setAlign, js_getAlign, getAlign, js_setUseMap, setUseMap,
+        js_getUseMap, getUseMap, js_setIncremental, setIncremental,
+        js_getIncremental, getIncremental, js_setCapture, setCapture,
+        js_getCapture, getCapture, HTMLInputElement(..),
+        gTypeHTMLInputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"stepUp\"]($2); })" js_stepUp ::
+        HTMLInputElement -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepUp Mozilla HTMLInputElement.stepUp documentation> 
+stepUp :: (MonadIO m) => HTMLInputElement -> Maybe Int -> m ()
+stepUp self n = liftIO (js_stepUp self (maybeToOptional n))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"stepDown\"]($2); })" js_stepDown
+        :: HTMLInputElement -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.stepDown Mozilla HTMLInputElement.stepDown documentation> 
+stepDown :: (MonadIO m) => HTMLInputElement -> Maybe Int -> m ()
+stepDown self n = liftIO (js_stepDown self (maybeToOptional n))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLInputElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checkValidity Mozilla HTMLInputElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLInputElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLInputElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.reportValidity Mozilla HTMLInputElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLInputElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setCustomValidity Mozilla HTMLInputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLInputElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"select\"](); })" js_select ::
+        HTMLInputElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.select Mozilla HTMLInputElement.select documentation> 
+select :: (MonadIO m) => HTMLInputElement -> m ()
+select self = liftIO (js_select self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setRangeText\"]($2); })"
+        js_setRangeText :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
+setRangeText ::
+             (MonadIO m, ToJSString replacement) =>
+               HTMLInputElement -> replacement -> m ()
+setRangeText self replacement
+  = liftIO (js_setRangeText self (toJSString replacement))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4,\n$5); })" js_setRangeText4 ::
+        HTMLInputElement ->
+          JSString -> Word -> Word -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setRangeText Mozilla HTMLInputElement.setRangeText documentation> 
+setRangeText4 ::
+              (MonadIO m, ToJSString replacement, ToJSString selectionMode) =>
+                HTMLInputElement ->
+                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftIO
+      (js_setRangeText4 self (toJSString replacement) start end
+         (toOptionalJSString selectionMode))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3,\n$4); })" js_setSelectionRange ::
+        HTMLInputElement -> Int -> Int -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.setSelectionRange Mozilla HTMLInputElement.setSelectionRange documentation> 
+setSelectionRange ::
+                  (MonadIO m, ToJSString direction) =>
+                    HTMLInputElement -> Int -> Int -> Maybe direction -> m ()
+setSelectionRange self start end direction
+  = liftIO
+      (js_setSelectionRange self start end
+         (toOptionalJSString direction))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"accept\"] = $2; })"
+        js_setAccept :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
+setAccept ::
+          (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAccept self val = liftIO (js_setAccept self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"accept\"]; })" js_getAccept ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.accept Mozilla HTMLInputElement.accept documentation> 
+getAccept ::
+          (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getAccept self = liftIO (fromJSString <$> (js_getAccept self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"alt\"] = $2; })" js_setAlt ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
+setAlt ::
+       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlt self val = liftIO (js_setAlt self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alt\"]; })" js_getAlt ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.alt Mozilla HTMLInputElement.alt documentation> 
+getAlt ::
+       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getAlt self = liftIO (fromJSString <$> (js_getAlt self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAutocomplete self val
+  = liftIO (js_setAutocomplete self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autocomplete Mozilla HTMLInputElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getAutocomplete self
+  = liftIO (fromJSString <$> (js_getAutocomplete self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
+setAutofocus :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setAutofocus self val = liftIO (js_setAutofocus self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
+        js_getAutofocus :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.autofocus Mozilla HTMLInputElement.autofocus documentation> 
+getAutofocus :: (MonadIO m) => HTMLInputElement -> m Bool
+getAutofocus self = liftIO (js_getAutofocus self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultChecked\"] = $2; })"
+        js_setDefaultChecked :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
+setDefaultChecked ::
+                  (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setDefaultChecked self val = liftIO (js_setDefaultChecked self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"defaultChecked\"] ? 1 : 0); })"
+        js_getDefaultChecked :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultChecked Mozilla HTMLInputElement.defaultChecked documentation> 
+getDefaultChecked :: (MonadIO m) => HTMLInputElement -> m Bool
+getDefaultChecked self = liftIO (js_getDefaultChecked self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"checked\"] = $2; })"
+        js_setChecked :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+setChecked :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setChecked self val = liftIO (js_setChecked self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"checked\"] ? 1 : 0); })"
+        js_getChecked :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.checked Mozilla HTMLInputElement.checked documentation> 
+getChecked :: (MonadIO m) => HTMLInputElement -> m Bool
+getChecked self = liftIO (js_getChecked self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dirName\"] = $2; })"
+        js_setDirName :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
+setDirName ::
+           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setDirName self val = liftIO (js_setDirName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })" js_getDirName ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.dirName Mozilla HTMLInputElement.dirName documentation> 
+getDirName ::
+           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getDirName self = liftIO (fromJSString <$> (js_getDirName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.disabled Mozilla HTMLInputElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLInputElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLInputElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.form Mozilla HTMLInputElement.form documentation> 
+getForm :: (MonadIO m) => HTMLInputElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"files\"] = $2; })" js_setFiles
+        :: HTMLInputElement -> Optional FileList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+setFiles ::
+         (MonadIO m) => HTMLInputElement -> Maybe FileList -> m ()
+setFiles self val = liftIO (js_setFiles self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"files\"]; })" js_getFiles ::
+        HTMLInputElement -> IO (Nullable FileList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+getFiles :: (MonadIO m) => HTMLInputElement -> m (Maybe FileList)
+getFiles self = liftIO (nullableToMaybe <$> (js_getFiles self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+getFilesUnsafe ::
+               (MonadIO m, HasCallStack) => HTMLInputElement -> m FileList
+getFilesUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFiles self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.files Mozilla HTMLInputElement.files documentation> 
+getFilesUnchecked :: (MonadIO m) => HTMLInputElement -> m FileList
+getFilesUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getFiles self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formAction\"] = $2; })"
+        js_setFormAction :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
+setFormAction ::
+              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormAction self val
+  = liftIO (js_setFormAction self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formAction\"]; })"
+        js_getFormAction :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formAction Mozilla HTMLInputElement.formAction documentation> 
+getFormAction ::
+              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getFormAction self
+  = liftIO (fromJSString <$> (js_getFormAction self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formEnctype\"] = $2; })"
+        js_setFormEnctype :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+setFormEnctype ::
+               (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormEnctype self val
+  = liftIO (js_setFormEnctype self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formEnctype\"]; })"
+        js_getFormEnctype :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formEnctype Mozilla HTMLInputElement.formEnctype documentation> 
+getFormEnctype ::
+               (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getFormEnctype self
+  = liftIO (fromJSString <$> (js_getFormEnctype self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formMethod\"] = $2; })"
+        js_setFormMethod :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+setFormMethod ::
+              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormMethod self val
+  = liftIO (js_setFormMethod self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formMethod\"]; })"
+        js_getFormMethod :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formMethod Mozilla HTMLInputElement.formMethod documentation> 
+getFormMethod ::
+              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getFormMethod self
+  = liftIO (fromJSString <$> (js_getFormMethod self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formNoValidate\"] = $2; })"
+        js_setFormNoValidate :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
+setFormNoValidate ::
+                  (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setFormNoValidate self val = liftIO (js_setFormNoValidate self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"formNoValidate\"] ? 1 : 0); })"
+        js_getFormNoValidate :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formNoValidate Mozilla HTMLInputElement.formNoValidate documentation> 
+getFormNoValidate :: (MonadIO m) => HTMLInputElement -> m Bool
+getFormNoValidate self = liftIO (js_getFormNoValidate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"formTarget\"] = $2; })"
+        js_setFormTarget :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
+setFormTarget ::
+              (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setFormTarget self val
+  = liftIO (js_setFormTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"formTarget\"]; })"
+        js_getFormTarget :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.formTarget Mozilla HTMLInputElement.formTarget documentation> 
+getFormTarget ::
+              (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getFormTarget self
+  = liftIO (fromJSString <$> (js_getFormTarget self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLInputElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLInputElement -> Word -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLInputElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.height Mozilla HTMLInputElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLInputElement -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"indeterminate\"] = $2; })"
+        js_setIndeterminate :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
+setIndeterminate :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setIndeterminate self val = liftIO (js_setIndeterminate self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"indeterminate\"] ? 1 : 0); })"
+        js_getIndeterminate :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.indeterminate Mozilla HTMLInputElement.indeterminate documentation> 
+getIndeterminate :: (MonadIO m) => HTMLInputElement -> m Bool
+getIndeterminate self = liftIO (js_getIndeterminate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"list\"]; })" js_getList ::
+        HTMLInputElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.list Mozilla HTMLInputElement.list documentation> 
+getList :: (MonadIO m) => HTMLInputElement -> m HTMLElement
+getList self = liftIO (js_getList self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
+setMax ::
+       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMax self val = liftIO (js_setMax self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.max Mozilla HTMLInputElement.max documentation> 
+getMax ::
+       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getMax self = liftIO (fromJSString <$> (js_getMax self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
+        js_setMinLength :: HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
+setMinLength :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+setMinLength self val = liftIO (js_setMinLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
+        js_getMinLength :: HTMLInputElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.minLength Mozilla HTMLInputElement.minLength documentation> 
+getMinLength :: (MonadIO m) => HTMLInputElement -> m Int
+getMinLength self = liftIO (js_getMinLength self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"maxLength\"] = $2; })"
+        js_setMaxLength :: HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+setMaxLength :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+setMaxLength self val = liftIO (js_setMaxLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxLength\"]; })"
+        js_getMaxLength :: HTMLInputElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.maxLength Mozilla HTMLInputElement.maxLength documentation> 
+getMaxLength :: (MonadIO m) => HTMLInputElement -> m Int
+getMaxLength self = liftIO (js_getMaxLength self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"min\"] = $2; })" js_setMin ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
+setMin ::
+       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setMin self val = liftIO (js_setMin self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.min Mozilla HTMLInputElement.min documentation> 
+getMin ::
+       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getMin self = liftIO (fromJSString <$> (js_getMin self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"multiple\"] = $2; })"
+        js_setMultiple :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+setMultiple :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setMultiple self val = liftIO (js_setMultiple self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"multiple\"] ? 1 : 0); })"
+        js_getMultiple :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.multiple Mozilla HTMLInputElement.multiple documentation> 
+getMultiple :: (MonadIO m) => HTMLInputElement -> m Bool
+getMultiple self = liftIO (js_getMultiple self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.name Mozilla HTMLInputElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pattern\"] = $2; })"
+        js_setPattern :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
+setPattern ::
+           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPattern self val = liftIO (js_setPattern self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pattern\"]; })" js_getPattern ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.pattern Mozilla HTMLInputElement.pattern documentation> 
+getPattern ::
+           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getPattern self = liftIO (fromJSString <$> (js_getPattern self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
+        js_setPlaceholder :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
+setPlaceholder ::
+               (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setPlaceholder self val
+  = liftIO (js_setPlaceholder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"placeholder\"]; })"
+        js_getPlaceholder :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.placeholder Mozilla HTMLInputElement.placeholder documentation> 
+getPlaceholder ::
+               (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getPlaceholder self
+  = liftIO (fromJSString <$> (js_getPlaceholder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
+        js_setReadOnly :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+setReadOnly :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setReadOnly self val = liftIO (js_setReadOnly self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"readOnly\"] ? 1 : 0); })"
+        js_getReadOnly :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.readOnly Mozilla HTMLInputElement.readOnly documentation> 
+getReadOnly :: (MonadIO m) => HTMLInputElement -> m Bool
+getReadOnly self = liftIO (js_getReadOnly self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
+        js_setRequired :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+setRequired :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setRequired self val = liftIO (js_setRequired self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
+        js_getRequired :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.required Mozilla HTMLInputElement.required documentation> 
+getRequired :: (MonadIO m) => HTMLInputElement -> m Bool
+getRequired self = liftIO (js_getRequired self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
+        HTMLInputElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+setSize :: (MonadIO m) => HTMLInputElement -> Word -> m ()
+setSize self val = liftIO (js_setSize self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        HTMLInputElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.size Mozilla HTMLInputElement.size documentation> 
+getSize :: (MonadIO m) => HTMLInputElement -> m Word
+getSize self = liftIO (js_getSize self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.src Mozilla HTMLInputElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"step\"] = $2; })" js_setStep ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
+setStep ::
+        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setStep self val = liftIO (js_setStep self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"step\"]; })" js_getStep ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.step Mozilla HTMLInputElement.step documentation> 
+getStep ::
+        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getStep self = liftIO (fromJSString <$> (js_getStep self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.type Mozilla HTMLInputElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+        js_setDefaultValue :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
+        js_getDefaultValue :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.defaultValue Mozilla HTMLInputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getDefaultValue self
+  = liftIO (fromJSString <$> (js_getDefaultValue self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
+        HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.value Mozilla HTMLInputElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsDate\"] = $2; })"
+        js_setValueAsDate :: HTMLInputElement -> Optional Date -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+setValueAsDate ::
+               (MonadIO m, IsDate val) => HTMLInputElement -> Maybe val -> m ()
+setValueAsDate self val
+  = liftIO
+      (js_setValueAsDate self (maybeToOptional (fmap toDate val)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsDate\"]; })"
+        js_getValueAsDate :: HTMLInputElement -> IO (Nullable Date)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+getValueAsDate :: (MonadIO m) => HTMLInputElement -> m (Maybe Date)
+getValueAsDate self
+  = liftIO (nullableToMaybe <$> (js_getValueAsDate self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+getValueAsDateUnsafe ::
+                     (MonadIO m, HasCallStack) => HTMLInputElement -> m Date
+getValueAsDateUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getValueAsDate self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsDate Mozilla HTMLInputElement.valueAsDate documentation> 
+getValueAsDateUnchecked ::
+                        (MonadIO m) => HTMLInputElement -> m Date
+getValueAsDateUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getValueAsDate self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsNumber\"] = $2; })"
+        js_setValueAsNumber :: HTMLInputElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
+setValueAsNumber ::
+                 (MonadIO m) => HTMLInputElement -> Double -> m ()
+setValueAsNumber self val = liftIO (js_setValueAsNumber self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsNumber\"]; })"
+        js_getValueAsNumber :: HTMLInputElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.valueAsNumber Mozilla HTMLInputElement.valueAsNumber documentation> 
+getValueAsNumber :: (MonadIO m) => HTMLInputElement -> m Double
+getValueAsNumber self = liftIO (js_getValueAsNumber self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLInputElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLInputElement -> Word -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLInputElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.width Mozilla HTMLInputElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLInputElement -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.willValidate Mozilla HTMLInputElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLInputElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLInputElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validity Mozilla HTMLInputElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLInputElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.validationMessage Mozilla HTMLInputElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLInputElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.labels Mozilla HTMLInputElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLInputElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
+        js_setSelectionStart :: HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
+setSelectionStart :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+setSelectionStart self val = liftIO (js_setSelectionStart self val)
+ 
+foreign import javascript safe "(($1) => { return $1[\"selectionStart\"]; })"
+        js_getSelectionStart :: HTMLInputElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionStart Mozilla HTMLInputElement.selectionStart documentation> 
+getSelectionStart :: (MonadIO m) => HTMLInputElement -> m Int
+getSelectionStart self = liftIO (js_getSelectionStart self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
+        js_setSelectionEnd :: HTMLInputElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
+setSelectionEnd :: (MonadIO m) => HTMLInputElement -> Int -> m ()
+setSelectionEnd self val = liftIO (js_setSelectionEnd self val)
+ 
+foreign import javascript safe "(($1) => { return $1[\"selectionEnd\"]; })"
+        js_getSelectionEnd :: HTMLInputElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionEnd Mozilla HTMLInputElement.selectionEnd documentation> 
+getSelectionEnd :: (MonadIO m) => HTMLInputElement -> m Int
+getSelectionEnd self = liftIO (js_getSelectionEnd self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
+        js_setSelectionDirection :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
+setSelectionDirection ::
+                      (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setSelectionDirection self val
+  = liftIO (js_setSelectionDirection self (toJSString val))
+ 
+foreign import javascript safe "(($1) => { return $1[\"selectionDirection\"]; })"
+        js_getSelectionDirection :: HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.selectionDirection Mozilla HTMLInputElement.selectionDirection documentation> 
+getSelectionDirection ::
+                      (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getSelectionDirection self
+  = liftIO (fromJSString <$> (js_getSelectionDirection self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.align Mozilla HTMLInputElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
+setUseMap ::
+          (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setUseMap self val = liftIO (js_setUseMap self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.useMap Mozilla HTMLInputElement.useMap documentation> 
+getUseMap ::
+          (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"incremental\"] = $2; })"
+        js_setIncremental :: HTMLInputElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
+setIncremental :: (MonadIO m) => HTMLInputElement -> Bool -> m ()
+setIncremental self val = liftIO (js_setIncremental self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"incremental\"] ? 1 : 0); })"
+        js_getIncremental :: HTMLInputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.incremental Mozilla HTMLInputElement.incremental documentation> 
+getIncremental :: (MonadIO m) => HTMLInputElement -> m Bool
+getIncremental self = liftIO (js_getIncremental self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"capture\"] = $2; })"
+        js_setCapture :: HTMLInputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+setCapture ::
+           (MonadIO m, ToJSString val) => HTMLInputElement -> val -> m ()
+setCapture self val = liftIO (js_setCapture self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"capture\"]; })" js_getCapture ::
+        HTMLInputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement.capture Mozilla HTMLInputElement.capture documentation> 
+getCapture ::
+           (MonadIO m, FromJSString result) => HTMLInputElement -> m result
+getCapture self = liftIO (fromJSString <$> (js_getCapture self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLKeygenElement.hs
@@ -0,0 +1,192 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLKeygenElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setChallenge,
+        setChallenge, js_getChallenge, getChallenge, js_setDisabled,
+        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
+        js_setKeytype, setKeytype, js_getKeytype, getKeytype, js_setName,
+        setName, js_getName, getName, js_getType, getType,
+        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, HTMLKeygenElement(..), gTypeHTMLKeygenElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLKeygenElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLKeygenElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.checkValidity Mozilla HTMLKeygenElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLKeygenElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLKeygenElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLKeygenElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.reportValidity Mozilla HTMLKeygenElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLKeygenElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLKeygenElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.setCustomValidity Mozilla HTMLKeygenElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLKeygenElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLKeygenElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
+setAutofocus :: (MonadIO m) => HTMLKeygenElement -> Bool -> m ()
+setAutofocus self val = liftIO (js_setAutofocus self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
+        js_getAutofocus :: HTMLKeygenElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.autofocus Mozilla HTMLKeygenElement.autofocus documentation> 
+getAutofocus :: (MonadIO m) => HTMLKeygenElement -> m Bool
+getAutofocus self = liftIO (js_getAutofocus self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"challenge\"] = $2; })"
+        js_setChallenge :: HTMLKeygenElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
+setChallenge ::
+             (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setChallenge self val
+  = liftIO (js_setChallenge self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"challenge\"]; })"
+        js_getChallenge :: HTMLKeygenElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.challenge Mozilla HTMLKeygenElement.challenge documentation> 
+getChallenge ::
+             (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
+getChallenge self
+  = liftIO (fromJSString <$> (js_getChallenge self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLKeygenElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLKeygenElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLKeygenElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.disabled Mozilla HTMLKeygenElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLKeygenElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLKeygenElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.form Mozilla HTMLKeygenElement.form documentation> 
+getForm :: (MonadIO m) => HTMLKeygenElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"keytype\"] = $2; })"
+        js_setKeytype :: HTMLKeygenElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
+setKeytype ::
+           (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setKeytype self val = liftIO (js_setKeytype self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keytype\"]; })" js_getKeytype ::
+        HTMLKeygenElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.keytype Mozilla HTMLKeygenElement.keytype documentation> 
+getKeytype ::
+           (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
+getKeytype self = liftIO (fromJSString <$> (js_getKeytype self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLKeygenElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLKeygenElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLKeygenElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.name Mozilla HTMLKeygenElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLKeygenElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.type Mozilla HTMLKeygenElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLKeygenElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.willValidate Mozilla HTMLKeygenElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLKeygenElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLKeygenElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validity Mozilla HTMLKeygenElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLKeygenElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLKeygenElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.validationMessage Mozilla HTMLKeygenElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLKeygenElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLKeygenElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement.labels Mozilla HTMLKeygenElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLKeygenElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLIElement.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLIElement
+       (js_setType, setType, js_getType, getType, js_setValue, setValue,
+        js_getValue, getValue, HTMLLIElement(..), gTypeHTMLLIElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLLIElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLLIElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLLIElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.type Mozilla HTMLLIElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLLIElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLLIElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+setValue :: (MonadIO m) => HTMLLIElement -> Int -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLLIElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement.value Mozilla HTMLLIElement.value documentation> 
+getValue :: (MonadIO m) => HTMLLIElement -> m Int
+getValue self = liftIO (js_getValue self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLabelElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLabelElement
+       (js_getForm, getForm, js_setHtmlFor, setHtmlFor, js_getHtmlFor,
+        getHtmlFor, js_getControl, getControl, HTMLLabelElement(..),
+        gTypeHTMLLabelElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLLabelElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.form Mozilla HTMLLabelElement.form documentation> 
+getForm :: (MonadIO m) => HTMLLabelElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
+        js_setHtmlFor :: HTMLLabelElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
+setHtmlFor ::
+           (MonadIO m, ToJSString val) => HTMLLabelElement -> val -> m ()
+setHtmlFor self val = liftIO (js_setHtmlFor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
+        HTMLLabelElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.htmlFor Mozilla HTMLLabelElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadIO m, FromJSString result) => HTMLLabelElement -> m result
+getHtmlFor self = liftIO (fromJSString <$> (js_getHtmlFor self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"control\"]; })" js_getControl ::
+        HTMLLabelElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement.control Mozilla HTMLLabelElement.control documentation> 
+getControl :: (MonadIO m) => HTMLLabelElement -> m HTMLElement
+getControl self = liftIO (js_getControl self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLegendElement.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLegendElement
+       (js_getForm, getForm, js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLLegendElement(..), gTypeHTMLLegendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLLegendElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.form Mozilla HTMLLegendElement.form documentation> 
+getForm :: (MonadIO m) => HTMLLegendElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLLegendElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLLegendElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLLegendElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement.align Mozilla HTMLLegendElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLLegendElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLLinkElement.hs
@@ -0,0 +1,288 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLLinkElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_setCharset, setCharset, js_getCharset, getCharset, js_setHref,
+        setHref, js_getHref, getHref, js_setHreflang, setHreflang,
+        js_getHreflang, getHreflang, js_setMedia, setMedia, js_getMedia,
+        getMedia, js_setRel, setRel, js_getRel, getRel, js_setRev, setRev,
+        js_getRev, getRev, js_getSizes, getSizes, js_setTarget, setTarget,
+        js_getTarget, getTarget, js_setType, setType, js_getType, getType,
+        js_setAs, setAs, js_getAs, getAs, js_setCrossOrigin,
+        setCrossOrigin, js_getCrossOrigin, getCrossOrigin,
+        getCrossOriginUnsafe, getCrossOriginUnchecked, js_getSheet,
+        getSheet, js_getRelList, getRelList, js_setNonce, setNonce,
+        js_getNonce, getNonce, js_setIntegrity, setIntegrity,
+        js_getIntegrity, getIntegrity, HTMLLinkElement(..),
+        gTypeHTMLLinkElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLLinkElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLLinkElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLLinkElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.disabled Mozilla HTMLLinkElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLLinkElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
+setCharset ::
+           (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setCharset self val = liftIO (js_setCharset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.charset Mozilla HTMLLinkElement.charset documentation> 
+getCharset ::
+           (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getCharset self = liftIO (fromJSString <$> (js_getCharset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
+        HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
+setHref ::
+        (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHref self val = liftIO (js_setHref self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.href Mozilla HTMLLinkElement.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hreflang\"] = $2; })"
+        js_setHreflang :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
+setHreflang ::
+            (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setHreflang self val
+  = liftIO (js_setHreflang self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hreflang\"]; })" js_getHreflang
+        :: HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.hreflang Mozilla HTMLLinkElement.hreflang documentation> 
+getHreflang ::
+            (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getHreflang self = liftIO (fromJSString <$> (js_getHreflang self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
+        :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
+setMedia ::
+         (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setMedia self val = liftIO (js_setMedia self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.media Mozilla HTMLLinkElement.media documentation> 
+getMedia ::
+         (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getMedia self = liftIO (fromJSString <$> (js_getMedia self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rel\"] = $2; })" js_setRel ::
+        HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
+setRel ::
+       (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRel self val = liftIO (js_setRel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rel\"]; })" js_getRel ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rel Mozilla HTMLLinkElement.rel documentation> 
+getRel ::
+       (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getRel self = liftIO (fromJSString <$> (js_getRel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rev\"] = $2; })" js_setRev ::
+        HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
+setRev ::
+       (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setRev self val = liftIO (js_setRev self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rev\"]; })" js_getRev ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.rev Mozilla HTMLLinkElement.rev documentation> 
+getRev ::
+       (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getRev self = liftIO (fromJSString <$> (js_getRev self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
+        HTMLLinkElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sizes Mozilla HTMLLinkElement.sizes documentation> 
+getSizes :: (MonadIO m) => HTMLLinkElement -> m DOMTokenList
+getSizes self = liftIO (js_getSizes self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"target\"] = $2; })"
+        js_setTarget :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
+setTarget ::
+          (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setTarget self val = liftIO (js_setTarget self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.target Mozilla HTMLLinkElement.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.type Mozilla HTMLLinkElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"as\"] = $2; })" js_setAs ::
+        HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
+setAs ::
+      (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setAs self val = liftIO (js_setAs self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"as\"]; })" js_getAs ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.as Mozilla HTMLLinkElement.as documentation> 
+getAs ::
+      (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getAs self = liftIO (fromJSString <$> (js_getAs self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLLinkElement -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, ToJSString val) => HTMLLinkElement -> Maybe val -> m ()
+setCrossOrigin self val
+  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLLinkElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, FromJSString result) =>
+                 HTMLLinkElement -> m (Maybe result)
+getCrossOrigin self
+  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
+getCrossOriginUnsafe ::
+                     (MonadIO m, HasCallStack, FromJSString result) =>
+                       HTMLLinkElement -> m result
+getCrossOriginUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.crossOrigin Mozilla HTMLLinkElement.crossOrigin documentation> 
+getCrossOriginUnchecked ::
+                        (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getCrossOriginUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
+        HTMLLinkElement -> IO StyleSheet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.sheet Mozilla HTMLLinkElement.sheet documentation> 
+getSheet :: (MonadIO m) => HTMLLinkElement -> m StyleSheet
+getSheet self = liftIO (js_getSheet self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relList\"]; })" js_getRelList ::
+        HTMLLinkElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.relList Mozilla HTMLLinkElement.relList documentation> 
+getRelList :: (MonadIO m) => HTMLLinkElement -> m DOMTokenList
+getRelList self = liftIO (js_getRelList self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
+        :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
+setNonce ::
+         (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setNonce self val = liftIO (js_setNonce self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
+        HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.nonce Mozilla HTMLLinkElement.nonce documentation> 
+getNonce ::
+         (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getNonce self = liftIO (fromJSString <$> (js_getNonce self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"integrity\"] = $2; })"
+        js_setIntegrity :: HTMLLinkElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
+setIntegrity ::
+             (MonadIO m, ToJSString val) => HTMLLinkElement -> val -> m ()
+setIntegrity self val
+  = liftIO (js_setIntegrity self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: HTMLLinkElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement.integrity Mozilla HTMLLinkElement.integrity documentation> 
+getIntegrity ::
+             (MonadIO m, FromJSString result) => HTMLLinkElement -> m result
+getIntegrity self
+  = liftIO (fromJSString <$> (js_getIntegrity self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMapElement.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMapElement
+       (js_getAreas, getAreas, js_setName, setName, js_getName, getName,
+        HTMLMapElement(..), gTypeHTMLMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"areas\"]; })" js_getAreas ::
+        HTMLMapElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.areas Mozilla HTMLMapElement.areas documentation> 
+getAreas :: (MonadIO m) => HTMLMapElement -> m HTMLCollection
+getAreas self = liftIO (js_getAreas self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLMapElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLMapElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLMapElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement.name Mozilla HTMLMapElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLMapElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMarqueeElement.hs
@@ -0,0 +1,219 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMarqueeElement
+       (js_start, start, js_stop, stop, js_setBehavior, setBehavior,
+        js_getBehavior, getBehavior, js_setBgColor, setBgColor,
+        js_getBgColor, getBgColor, js_setDirection, setDirection,
+        js_getDirection, getDirection, js_setHeight, setHeight,
+        js_getHeight, getHeight, js_setHspace, setHspace, js_getHspace,
+        getHspace, js_setLoop, setLoop, js_getLoop, getLoop,
+        js_setScrollAmount, setScrollAmount, js_getScrollAmount,
+        getScrollAmount, js_setScrollDelay, setScrollDelay,
+        js_getScrollDelay, getScrollDelay, js_setTrueSpeed, setTrueSpeed,
+        js_getTrueSpeed, getTrueSpeed, js_setVspace, setVspace,
+        js_getVspace, getVspace, js_setWidth, setWidth, js_getWidth,
+        getWidth, HTMLMarqueeElement(..), gTypeHTMLMarqueeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"start\"](); })" js_start ::
+        HTMLMarqueeElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.start Mozilla HTMLMarqueeElement.start documentation> 
+start :: (MonadIO m) => HTMLMarqueeElement -> m ()
+start self = liftIO (js_start self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
+        HTMLMarqueeElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.stop Mozilla HTMLMarqueeElement.stop documentation> 
+stop :: (MonadIO m) => HTMLMarqueeElement -> m ()
+stop self = liftIO (js_stop self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"behavior\"] = $2; })"
+        js_setBehavior :: HTMLMarqueeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
+setBehavior ::
+            (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBehavior self val
+  = liftIO (js_setBehavior self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"behavior\"]; })" js_getBehavior
+        :: HTMLMarqueeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.behavior Mozilla HTMLMarqueeElement.behavior documentation> 
+getBehavior ::
+            (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
+getBehavior self = liftIO (fromJSString <$> (js_getBehavior self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLMarqueeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLMarqueeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.bgColor Mozilla HTMLMarqueeElement.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"direction\"] = $2; })"
+        js_setDirection :: HTMLMarqueeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
+setDirection ::
+             (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setDirection self val
+  = liftIO (js_setDirection self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: HTMLMarqueeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.direction Mozilla HTMLMarqueeElement.direction documentation> 
+getDirection ::
+             (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
+getDirection self
+  = liftIO (fromJSString <$> (js_getDirection self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLMarqueeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLMarqueeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.height Mozilla HTMLMarqueeElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLMarqueeElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
+setHspace self val = liftIO (js_setHspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
+        HTMLMarqueeElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.hspace Mozilla HTMLMarqueeElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLMarqueeElement -> m Word
+getHspace self = liftIO (js_getHspace self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
+        HTMLMarqueeElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+setLoop :: (MonadIO m) => HTMLMarqueeElement -> Int -> m ()
+setLoop self val = liftIO (js_setLoop self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loop\"]; })" js_getLoop ::
+        HTMLMarqueeElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.loop Mozilla HTMLMarqueeElement.loop documentation> 
+getLoop :: (MonadIO m) => HTMLMarqueeElement -> m Int
+getLoop self = liftIO (js_getLoop self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrollAmount\"] = $2; })"
+        js_setScrollAmount :: HTMLMarqueeElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+setScrollAmount ::
+                (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
+setScrollAmount self val = liftIO (js_setScrollAmount self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollAmount\"]; })"
+        js_getScrollAmount :: HTMLMarqueeElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollAmount Mozilla HTMLMarqueeElement.scrollAmount documentation> 
+getScrollAmount :: (MonadIO m) => HTMLMarqueeElement -> m Word
+getScrollAmount self = liftIO (js_getScrollAmount self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scrollDelay\"] = $2; })"
+        js_setScrollDelay :: HTMLMarqueeElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+setScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
+setScrollDelay self val = liftIO (js_setScrollDelay self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollDelay\"]; })"
+        js_getScrollDelay :: HTMLMarqueeElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.scrollDelay Mozilla HTMLMarqueeElement.scrollDelay documentation> 
+getScrollDelay :: (MonadIO m) => HTMLMarqueeElement -> m Word
+getScrollDelay self = liftIO (js_getScrollDelay self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"trueSpeed\"] = $2; })"
+        js_setTrueSpeed :: HTMLMarqueeElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+setTrueSpeed :: (MonadIO m) => HTMLMarqueeElement -> Bool -> m ()
+setTrueSpeed self val = liftIO (js_setTrueSpeed self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"trueSpeed\"] ? 1 : 0); })"
+        js_getTrueSpeed :: HTMLMarqueeElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.trueSpeed Mozilla HTMLMarqueeElement.trueSpeed documentation> 
+getTrueSpeed :: (MonadIO m) => HTMLMarqueeElement -> m Bool
+getTrueSpeed self = liftIO (js_getTrueSpeed self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+        js_setVspace :: HTMLMarqueeElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLMarqueeElement -> Word -> m ()
+setVspace self val = liftIO (js_setVspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
+        HTMLMarqueeElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.vspace Mozilla HTMLMarqueeElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLMarqueeElement -> m Word
+getVspace self = liftIO (js_getVspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLMarqueeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLMarqueeElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLMarqueeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement.width Mozilla HTMLMarqueeElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLMarqueeElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMediaElement.hs
@@ -0,0 +1,884 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMediaElement
+       (js_load, load, js_canPlayType, canPlayType, canPlayType_,
+        js_getStartDate, getStartDate, getStartDate_, js_play, play,
+        js_pause, pause, js_fastSeek, fastSeek, js_webkitSetMediaKeys,
+        webkitSetMediaKeys, js_setMediaKeys, setMediaKeys, js_addTextTrack,
+        addTextTrack, addTextTrack_, js_getVideoPlaybackQuality,
+        getVideoPlaybackQuality, getVideoPlaybackQuality_,
+        js_webkitShowPlaybackTargetPicker, webkitShowPlaybackTargetPicker,
+        pattern NETWORK_EMPTY, pattern NETWORK_IDLE,
+        pattern NETWORK_LOADING, pattern NETWORK_NO_SOURCE,
+        pattern HAVE_NOTHING, pattern HAVE_METADATA,
+        pattern HAVE_CURRENT_DATA, pattern HAVE_FUTURE_DATA,
+        pattern HAVE_ENOUGH_DATA, js_getError, getError, js_setSrc, setSrc,
+        js_getSrc, getSrc, js_setSrcObject, setSrcObject, js_getSrcObject,
+        getSrcObject, getSrcObjectUnsafe, getSrcObjectUnchecked,
+        js_getCurrentSrc, getCurrentSrc, js_setCrossOrigin, setCrossOrigin,
+        js_getCrossOrigin, getCrossOrigin, getCrossOriginUnsafe,
+        getCrossOriginUnchecked, js_getNetworkState, getNetworkState,
+        js_setPreload, setPreload, js_getPreload, getPreload,
+        js_getBuffered, getBuffered, js_getReadyState, getReadyState,
+        js_getSeeking, getSeeking, js_setCurrentTime, setCurrentTime,
+        js_getCurrentTime, getCurrentTime, js_getDuration, getDuration,
+        js_getPaused, getPaused, js_setDefaultPlaybackRate,
+        setDefaultPlaybackRate, js_getDefaultPlaybackRate,
+        getDefaultPlaybackRate, js_setPlaybackRate, setPlaybackRate,
+        js_getPlaybackRate, getPlaybackRate, js_getPlayed, getPlayed,
+        js_getSeekable, getSeekable, js_getEnded, getEnded, js_setAutoplay,
+        setAutoplay, js_getAutoplay, getAutoplay, js_setLoop, setLoop,
+        js_getLoop, getLoop, js_setControls, setControls, js_getControls,
+        getControls, js_setVolume, setVolume, js_getVolume, getVolume,
+        js_setMuted, setMuted, js_getMuted, getMuted, js_setDefaultMuted,
+        setDefaultMuted, js_getDefaultMuted, getDefaultMuted,
+        js_setWebkitPreservesPitch, setWebkitPreservesPitch,
+        js_getWebkitPreservesPitch, getWebkitPreservesPitch,
+        js_getWebkitHasClosedCaptions, getWebkitHasClosedCaptions,
+        js_setWebkitClosedCaptionsVisible, setWebkitClosedCaptionsVisible,
+        js_getWebkitClosedCaptionsVisible, getWebkitClosedCaptionsVisible,
+        js_getWebkitAudioDecodedByteCount, getWebkitAudioDecodedByteCount,
+        js_getWebkitVideoDecodedByteCount, getWebkitVideoDecodedByteCount,
+        js_getWebkitKeys, getWebkitKeys, js_getMediaKeys, getMediaKeys,
+        encrypted, waitingforkey, js_getAudioTracks, getAudioTracks,
+        js_getTextTracks, getTextTracks, js_getVideoTracks, getVideoTracks,
+        js_setMediaGroup, setMediaGroup, js_getMediaGroup, getMediaGroup,
+        js_setController, setController, js_getController, getController,
+        getControllerUnsafe, getControllerUnchecked,
+        js_getWebkitCurrentPlaybackTargetIsWireless,
+        getWebkitCurrentPlaybackTargetIsWireless, js_setKind, setKind,
+        js_getKind, getKind, js_setSession, setSession, js_getSession,
+        getSession, getSessionUnsafe, getSessionUnchecked,
+        HTMLMediaElement(..), gTypeHTMLMediaElement, IsHTMLMediaElement,
+        toHTMLMediaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"load\"](); })" js_load ::
+        HTMLMediaElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.load Mozilla HTMLMediaElement.load documentation> 
+load :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+load self = liftIO (js_load (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"canPlayType\"]($2); })"
+        js_canPlayType :: HTMLMediaElement -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
+canPlayType ::
+            (MonadIO m, IsHTMLMediaElement self, ToJSString type',
+             FromJSString result) =>
+              self -> type' -> m result
+canPlayType self type'
+  = liftIO
+      (fromJSString <$>
+         (js_canPlayType (toHTMLMediaElement self) (toJSString type')))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.canPlayType Mozilla HTMLMediaElement.canPlayType documentation> 
+canPlayType_ ::
+             (MonadIO m, IsHTMLMediaElement self, ToJSString type') =>
+               self -> type' -> m ()
+canPlayType_ self type'
+  = liftIO
+      (void
+         (js_canPlayType (toHTMLMediaElement self) (toJSString type')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getStartDate\"](); })"
+        js_getStartDate :: HTMLMediaElement -> IO Date
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
+getStartDate ::
+             (MonadIO m, IsHTMLMediaElement self) => self -> m Date
+getStartDate self
+  = liftIO (js_getStartDate (toHTMLMediaElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getStartDate Mozilla HTMLMediaElement.getStartDate documentation> 
+getStartDate_ ::
+              (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+getStartDate_ self
+  = liftIO (void (js_getStartDate (toHTMLMediaElement self)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"play\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_play :: HTMLMediaElement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.play Mozilla HTMLMediaElement.play documentation> 
+play :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+play self
+  = liftIO
+      ((js_play (toHTMLMediaElement self)) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
+        HTMLMediaElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.pause Mozilla HTMLMediaElement.pause documentation> 
+pause :: (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+pause self = liftIO (js_pause (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"fastSeek\"]($2); })" js_fastSeek
+        :: HTMLMediaElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.fastSeek Mozilla HTMLMediaElement.fastSeek documentation> 
+fastSeek ::
+         (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
+fastSeek self time
+  = liftIO (js_fastSeek (toHTMLMediaElement self) time)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"webkitSetMediaKeys\"]($2); })"
+        js_webkitSetMediaKeys ::
+        HTMLMediaElement -> Optional WebKitMediaKeys -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitSetMediaKeys Mozilla HTMLMediaElement.webkitSetMediaKeys documentation> 
+webkitSetMediaKeys ::
+                   (MonadIO m, IsHTMLMediaElement self) =>
+                     self -> Maybe WebKitMediaKeys -> m ()
+webkitSetMediaKeys self mediaKeys
+  = liftIO
+      (js_webkitSetMediaKeys (toHTMLMediaElement self)
+         (maybeToOptional mediaKeys))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"setMediaKeys\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setMediaKeys ::
+        HTMLMediaElement -> Optional MediaKeys -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.setMediaKeys Mozilla HTMLMediaElement.setMediaKeys documentation> 
+setMediaKeys ::
+             (MonadIO m, IsHTMLMediaElement self) =>
+               self -> Maybe MediaKeys -> m ()
+setMediaKeys self mediaKeys
+  = liftIO
+      ((js_setMediaKeys (toHTMLMediaElement self)
+          (maybeToOptional mediaKeys))
+         >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"addTextTrack\"]($2, $3, $4); })"
+        js_addTextTrack ::
+        HTMLMediaElement ->
+          JSString -> Optional JSString -> Optional JSString -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
+addTextTrack ::
+             (MonadIO m, IsHTMLMediaElement self, ToJSString kind,
+              ToJSString label, ToJSString language) =>
+               self -> kind -> Maybe label -> Maybe language -> m TextTrack
+addTextTrack self kind label language
+  = liftIO
+      (js_addTextTrack (toHTMLMediaElement self) (toJSString kind)
+         (toOptionalJSString label)
+         (toOptionalJSString language))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.addTextTrack Mozilla HTMLMediaElement.addTextTrack documentation> 
+addTextTrack_ ::
+              (MonadIO m, IsHTMLMediaElement self, ToJSString kind,
+               ToJSString label, ToJSString language) =>
+                self -> kind -> Maybe label -> Maybe language -> m ()
+addTextTrack_ self kind label language
+  = liftIO
+      (void
+         (js_addTextTrack (toHTMLMediaElement self) (toJSString kind)
+            (toOptionalJSString label)
+            (toOptionalJSString language)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"getVideoPlaybackQuality\"](); })" js_getVideoPlaybackQuality ::
+        HTMLMediaElement -> IO VideoPlaybackQuality
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
+getVideoPlaybackQuality ::
+                        (MonadIO m, IsHTMLMediaElement self) =>
+                          self -> m VideoPlaybackQuality
+getVideoPlaybackQuality self
+  = liftIO (js_getVideoPlaybackQuality (toHTMLMediaElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.getVideoPlaybackQuality Mozilla HTMLMediaElement.getVideoPlaybackQuality documentation> 
+getVideoPlaybackQuality_ ::
+                         (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+getVideoPlaybackQuality_ self
+  = liftIO
+      (void (js_getVideoPlaybackQuality (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitShowPlaybackTargetPicker\"](); })"
+        js_webkitShowPlaybackTargetPicker :: HTMLMediaElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitShowPlaybackTargetPicker Mozilla HTMLMediaElement.webkitShowPlaybackTargetPicker documentation> 
+webkitShowPlaybackTargetPicker ::
+                               (MonadIO m, IsHTMLMediaElement self) => self -> m ()
+webkitShowPlaybackTargetPicker self
+  = liftIO
+      (js_webkitShowPlaybackTargetPicker (toHTMLMediaElement self))
+pattern NETWORK_EMPTY = 0
+pattern NETWORK_IDLE = 1
+pattern NETWORK_LOADING = 2
+pattern NETWORK_NO_SOURCE = 3
+pattern HAVE_NOTHING = 0
+pattern HAVE_METADATA = 1
+pattern HAVE_CURRENT_DATA = 2
+pattern HAVE_FUTURE_DATA = 3
+pattern HAVE_ENOUGH_DATA = 4
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        HTMLMediaElement -> IO MediaError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.error Mozilla HTMLMediaElement.error documentation> 
+getError ::
+         (MonadIO m, IsHTMLMediaElement self) => self -> m MediaError
+getError self = liftIO (js_getError (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLMediaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
+setSrc ::
+       (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
+         self -> val -> m ()
+setSrc self val
+  = liftIO (js_setSrc (toHTMLMediaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLMediaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.src Mozilla HTMLMediaElement.src documentation> 
+getSrc ::
+       (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+         self -> m result
+getSrc self
+  = liftIO (fromJSString <$> (js_getSrc (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"srcObject\"] = $2; })"
+        js_setSrcObject ::
+        HTMLMediaElement -> Optional MediaProvider -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+setSrcObject ::
+             (MonadIO m, IsHTMLMediaElement self, IsMediaProvider val) =>
+               self -> Maybe val -> m ()
+setSrcObject self val
+  = liftIO
+      (js_setSrcObject (toHTMLMediaElement self)
+         (maybeToOptional (fmap toMediaProvider val)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srcObject\"]; })"
+        js_getSrcObject :: HTMLMediaElement -> IO (Nullable MediaProvider)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObject ::
+             (MonadIO m, IsHTMLMediaElement self) =>
+               self -> m (Maybe MediaProvider)
+getSrcObject self
+  = liftIO
+      (nullableToMaybe <$> (js_getSrcObject (toHTMLMediaElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObjectUnsafe ::
+                   (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
+                     self -> m MediaProvider
+getSrcObjectUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSrcObject (toHTMLMediaElement self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.srcObject Mozilla HTMLMediaElement.srcObject documentation> 
+getSrcObjectUnchecked ::
+                      (MonadIO m, IsHTMLMediaElement self) => self -> m MediaProvider
+getSrcObjectUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getSrcObject (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentSrc\"]; })"
+        js_getCurrentSrc :: HTMLMediaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentSrc Mozilla HTMLMediaElement.currentSrc documentation> 
+getCurrentSrc ::
+              (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+                self -> m result
+getCurrentSrc self
+  = liftIO
+      (fromJSString <$> (js_getCurrentSrc (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin :: HTMLMediaElement -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
+                 self -> Maybe val -> m ()
+setCrossOrigin self val
+  = liftIO
+      (js_setCrossOrigin (toHTMLMediaElement self)
+         (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLMediaElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+                 self -> m (Maybe result)
+getCrossOrigin self
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getCrossOrigin (toHTMLMediaElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
+getCrossOriginUnsafe ::
+                     (MonadIO m, IsHTMLMediaElement self, HasCallStack,
+                      FromJSString result) =>
+                       self -> m result
+getCrossOriginUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getCrossOrigin (toHTMLMediaElement self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.crossOrigin Mozilla HTMLMediaElement.crossOrigin documentation> 
+getCrossOriginUnchecked ::
+                        (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+                          self -> m result
+getCrossOriginUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getCrossOrigin (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"networkState\"]; })"
+        js_getNetworkState :: HTMLMediaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.networkState Mozilla HTMLMediaElement.networkState documentation> 
+getNetworkState ::
+                (MonadIO m, IsHTMLMediaElement self) => self -> m Word
+getNetworkState self
+  = liftIO (js_getNetworkState (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"preload\"] = $2; })"
+        js_setPreload :: HTMLMediaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
+setPreload ::
+           (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
+             self -> val -> m ()
+setPreload self val
+  = liftIO (js_setPreload (toHTMLMediaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preload\"]; })" js_getPreload ::
+        HTMLMediaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.preload Mozilla HTMLMediaElement.preload documentation> 
+getPreload ::
+           (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+             self -> m result
+getPreload self
+  = liftIO
+      (fromJSString <$> (js_getPreload (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered
+        :: HTMLMediaElement -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.buffered Mozilla HTMLMediaElement.buffered documentation> 
+getBuffered ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
+getBuffered self
+  = liftIO (js_getBuffered (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: HTMLMediaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.readyState Mozilla HTMLMediaElement.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsHTMLMediaElement self) => self -> m Word
+getReadyState self
+  = liftIO (js_getReadyState (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"seeking\"] ? 1 : 0); })"
+        js_getSeeking :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seeking Mozilla HTMLMediaElement.seeking documentation> 
+getSeeking ::
+           (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getSeeking self = liftIO (js_getSeeking (toHTMLMediaElement self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
+        js_setCurrentTime :: HTMLMediaElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
+setCurrentTime ::
+               (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
+setCurrentTime self val
+  = liftIO (js_setCurrentTime (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: HTMLMediaElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.currentTime Mozilla HTMLMediaElement.currentTime documentation> 
+getCurrentTime ::
+               (MonadIO m, IsHTMLMediaElement self) => self -> m Double
+getCurrentTime self
+  = liftIO (js_getCurrentTime (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: HTMLMediaElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.duration Mozilla HTMLMediaElement.duration documentation> 
+getDuration ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> m Double
+getDuration self
+  = liftIO (js_getDuration (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
+        js_getPaused :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.paused Mozilla HTMLMediaElement.paused documentation> 
+getPaused :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getPaused self = liftIO (js_getPaused (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"defaultPlaybackRate\"] = $2; })" js_setDefaultPlaybackRate ::
+        HTMLMediaElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
+setDefaultPlaybackRate ::
+                       (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
+setDefaultPlaybackRate self val
+  = liftIO (js_setDefaultPlaybackRate (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultPlaybackRate\"]; })"
+        js_getDefaultPlaybackRate :: HTMLMediaElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultPlaybackRate Mozilla HTMLMediaElement.defaultPlaybackRate documentation> 
+getDefaultPlaybackRate ::
+                       (MonadIO m, IsHTMLMediaElement self) => self -> m Double
+getDefaultPlaybackRate self
+  = liftIO (js_getDefaultPlaybackRate (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: HTMLMediaElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
+setPlaybackRate ::
+                (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
+setPlaybackRate self val
+  = liftIO (js_setPlaybackRate (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: HTMLMediaElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.playbackRate Mozilla HTMLMediaElement.playbackRate documentation> 
+getPlaybackRate ::
+                (MonadIO m, IsHTMLMediaElement self) => self -> m Double
+getPlaybackRate self
+  = liftIO (js_getPlaybackRate (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"played\"]; })" js_getPlayed ::
+        HTMLMediaElement -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.played Mozilla HTMLMediaElement.played documentation> 
+getPlayed ::
+          (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
+getPlayed self = liftIO (js_getPlayed (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"seekable\"]; })" js_getSeekable
+        :: HTMLMediaElement -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.seekable Mozilla HTMLMediaElement.seekable documentation> 
+getSeekable ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> m TimeRanges
+getSeekable self
+  = liftIO (js_getSeekable (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ended\"] ? 1 : 0); })"
+        js_getEnded :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.ended Mozilla HTMLMediaElement.ended documentation> 
+getEnded :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getEnded self = liftIO (js_getEnded (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autoplay\"] = $2; })"
+        js_setAutoplay :: HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
+setAutoplay ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setAutoplay self val
+  = liftIO (js_setAutoplay (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autoplay\"] ? 1 : 0); })"
+        js_getAutoplay :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.autoplay Mozilla HTMLMediaElement.autoplay documentation> 
+getAutoplay ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getAutoplay self
+  = liftIO (js_getAutoplay (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"loop\"] = $2; })" js_setLoop ::
+        HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
+setLoop ::
+        (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setLoop self val
+  = liftIO (js_setLoop (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"loop\"] ? 1 : 0); })"
+        js_getLoop :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.loop Mozilla HTMLMediaElement.loop documentation> 
+getLoop :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getLoop self = liftIO (js_getLoop (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"controls\"] = $2; })"
+        js_setControls :: HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
+setControls ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setControls self val
+  = liftIO (js_setControls (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"controls\"] ? 1 : 0); })"
+        js_getControls :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controls Mozilla HTMLMediaElement.controls documentation> 
+getControls ::
+            (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getControls self
+  = liftIO (js_getControls (toHTMLMediaElement self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })" js_setVolume
+        :: HTMLMediaElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
+setVolume ::
+          (MonadIO m, IsHTMLMediaElement self) => self -> Double -> m ()
+setVolume self val
+  = liftIO (js_setVolume (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
+        HTMLMediaElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.volume Mozilla HTMLMediaElement.volume documentation> 
+getVolume ::
+          (MonadIO m, IsHTMLMediaElement self) => self -> m Double
+getVolume self = liftIO (js_getVolume (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"muted\"] = $2; })" js_setMuted
+        :: HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
+setMuted ::
+         (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setMuted self val
+  = liftIO (js_setMuted (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
+        js_getMuted :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.muted Mozilla HTMLMediaElement.muted documentation> 
+getMuted :: (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getMuted self = liftIO (js_getMuted (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultMuted\"] = $2; })"
+        js_setDefaultMuted :: HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
+setDefaultMuted ::
+                (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setDefaultMuted self val
+  = liftIO (js_setDefaultMuted (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"defaultMuted\"] ? 1 : 0); })"
+        js_getDefaultMuted :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.defaultMuted Mozilla HTMLMediaElement.defaultMuted documentation> 
+getDefaultMuted ::
+                (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getDefaultMuted self
+  = liftIO (js_getDefaultMuted (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"webkitPreservesPitch\"] = $2; })" js_setWebkitPreservesPitch ::
+        HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
+setWebkitPreservesPitch ::
+                        (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setWebkitPreservesPitch self val
+  = liftIO (js_setWebkitPreservesPitch (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitPreservesPitch\"] ? 1 : 0); })" js_getWebkitPreservesPitch
+        :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitPreservesPitch Mozilla HTMLMediaElement.webkitPreservesPitch documentation> 
+getWebkitPreservesPitch ::
+                        (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitPreservesPitch self
+  = liftIO (js_getWebkitPreservesPitch (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitHasClosedCaptions\"] ? 1 : 0); })"
+        js_getWebkitHasClosedCaptions :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitHasClosedCaptions Mozilla HTMLMediaElement.webkitHasClosedCaptions documentation> 
+getWebkitHasClosedCaptions ::
+                           (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitHasClosedCaptions self
+  = liftIO (js_getWebkitHasClosedCaptions (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"webkitClosedCaptionsVisible\"] = $2; })"
+        js_setWebkitClosedCaptionsVisible ::
+        HTMLMediaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
+setWebkitClosedCaptionsVisible ::
+                               (MonadIO m, IsHTMLMediaElement self) => self -> Bool -> m ()
+setWebkitClosedCaptionsVisible self val
+  = liftIO
+      (js_setWebkitClosedCaptionsVisible (toHTMLMediaElement self) val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitClosedCaptionsVisible\"] ? 1 : 0); })"
+        js_getWebkitClosedCaptionsVisible :: HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitClosedCaptionsVisible Mozilla HTMLMediaElement.webkitClosedCaptionsVisible documentation> 
+getWebkitClosedCaptionsVisible ::
+                               (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitClosedCaptionsVisible self
+  = liftIO
+      (js_getWebkitClosedCaptionsVisible (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitAudioDecodedByteCount\"]; })"
+        js_getWebkitAudioDecodedByteCount :: HTMLMediaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitAudioDecodedByteCount Mozilla HTMLMediaElement.webkitAudioDecodedByteCount documentation> 
+getWebkitAudioDecodedByteCount ::
+                               (MonadIO m, IsHTMLMediaElement self) => self -> m Word
+getWebkitAudioDecodedByteCount self
+  = liftIO
+      (js_getWebkitAudioDecodedByteCount (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"webkitVideoDecodedByteCount\"]; })"
+        js_getWebkitVideoDecodedByteCount :: HTMLMediaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitVideoDecodedByteCount Mozilla HTMLMediaElement.webkitVideoDecodedByteCount documentation> 
+getWebkitVideoDecodedByteCount ::
+                               (MonadIO m, IsHTMLMediaElement self) => self -> m Word
+getWebkitVideoDecodedByteCount self
+  = liftIO
+      (js_getWebkitVideoDecodedByteCount (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitKeys\"]; })"
+        js_getWebkitKeys :: HTMLMediaElement -> IO WebKitMediaKeys
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitKeys Mozilla HTMLMediaElement.webkitKeys documentation> 
+getWebkitKeys ::
+              (MonadIO m, IsHTMLMediaElement self) => self -> m WebKitMediaKeys
+getWebkitKeys self
+  = liftIO (js_getWebkitKeys (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaKeys\"]; })"
+        js_getMediaKeys :: HTMLMediaElement -> IO MediaKeys
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaKeys Mozilla HTMLMediaElement.mediaKeys documentation> 
+getMediaKeys ::
+             (MonadIO m, IsHTMLMediaElement self) => self -> m MediaKeys
+getMediaKeys self
+  = liftIO (js_getMediaKeys (toHTMLMediaElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onencrypted Mozilla HTMLMediaElement.onencrypted documentation> 
+encrypted ::
+          (IsHTMLMediaElement self, IsEventTarget self) =>
+            EventName self onencrypted
+encrypted = unsafeEventName (toJSString "encrypted")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.onwaitingforkey Mozilla HTMLMediaElement.onwaitingforkey documentation> 
+waitingforkey ::
+              (IsHTMLMediaElement self, IsEventTarget self) =>
+                EventName self onwaitingforkey
+waitingforkey = unsafeEventName (toJSString "waitingforkey")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"audioTracks\"]; })"
+        js_getAudioTracks :: HTMLMediaElement -> IO AudioTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.audioTracks Mozilla HTMLMediaElement.audioTracks documentation> 
+getAudioTracks ::
+               (MonadIO m, IsHTMLMediaElement self) => self -> m AudioTrackList
+getAudioTracks self
+  = liftIO (js_getAudioTracks (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textTracks\"]; })"
+        js_getTextTracks :: HTMLMediaElement -> IO TextTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.textTracks Mozilla HTMLMediaElement.textTracks documentation> 
+getTextTracks ::
+              (MonadIO m, IsHTMLMediaElement self) => self -> m TextTrackList
+getTextTracks self
+  = liftIO (js_getTextTracks (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"videoTracks\"]; })"
+        js_getVideoTracks :: HTMLMediaElement -> IO VideoTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.videoTracks Mozilla HTMLMediaElement.videoTracks documentation> 
+getVideoTracks ::
+               (MonadIO m, IsHTMLMediaElement self) => self -> m VideoTrackList
+getVideoTracks self
+  = liftIO (js_getVideoTracks (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"mediaGroup\"] = $2; })"
+        js_setMediaGroup :: HTMLMediaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
+setMediaGroup ::
+              (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
+                self -> val -> m ()
+setMediaGroup self val
+  = liftIO
+      (js_setMediaGroup (toHTMLMediaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaGroup\"]; })"
+        js_getMediaGroup :: HTMLMediaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.mediaGroup Mozilla HTMLMediaElement.mediaGroup documentation> 
+getMediaGroup ::
+              (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+                self -> m result
+getMediaGroup self
+  = liftIO
+      (fromJSString <$> (js_getMediaGroup (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"controller\"] = $2; })"
+        js_setController ::
+        HTMLMediaElement -> Optional MediaController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+setController ::
+              (MonadIO m, IsHTMLMediaElement self) =>
+                self -> Maybe MediaController -> m ()
+setController self val
+  = liftIO
+      (js_setController (toHTMLMediaElement self) (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
+        js_getController ::
+        HTMLMediaElement -> IO (Nullable MediaController)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+getController ::
+              (MonadIO m, IsHTMLMediaElement self) =>
+                self -> m (Maybe MediaController)
+getController self
+  = liftIO
+      (nullableToMaybe <$> (js_getController (toHTMLMediaElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+getControllerUnsafe ::
+                    (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
+                      self -> m MediaController
+getControllerUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getController (toHTMLMediaElement self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.controller Mozilla HTMLMediaElement.controller documentation> 
+getControllerUnchecked ::
+                       (MonadIO m, IsHTMLMediaElement self) => self -> m MediaController
+getControllerUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getController (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitCurrentPlaybackTargetIsWireless\"] ? 1 : 0); })"
+        js_getWebkitCurrentPlaybackTargetIsWireless ::
+        HTMLMediaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless Mozilla HTMLMediaElement.webkitCurrentPlaybackTargetIsWireless documentation> 
+getWebkitCurrentPlaybackTargetIsWireless ::
+                                         (MonadIO m, IsHTMLMediaElement self) => self -> m Bool
+getWebkitCurrentPlaybackTargetIsWireless self
+  = liftIO
+      (js_getWebkitCurrentPlaybackTargetIsWireless
+         (toHTMLMediaElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
+        HTMLMediaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
+setKind ::
+        (MonadIO m, IsHTMLMediaElement self, ToJSString val) =>
+          self -> val -> m ()
+setKind self val
+  = liftIO (js_setKind (toHTMLMediaElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        HTMLMediaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.kind Mozilla HTMLMediaElement.kind documentation> 
+getKind ::
+        (MonadIO m, IsHTMLMediaElement self, FromJSString result) =>
+          self -> m result
+getKind self
+  = liftIO (fromJSString <$> (js_getKind (toHTMLMediaElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"session\"] = $2; })"
+        js_setSession :: HTMLMediaElement -> Optional MediaSession -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
+setSession ::
+           (MonadIO m, IsHTMLMediaElement self) =>
+             self -> Maybe MediaSession -> m ()
+setSession self val
+  = liftIO
+      (js_setSession (toHTMLMediaElement self) (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"session\"]; })" js_getSession ::
+        HTMLMediaElement -> IO (Nullable MediaSession)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
+getSession ::
+           (MonadIO m, IsHTMLMediaElement self) =>
+             self -> m (Maybe MediaSession)
+getSession self
+  = liftIO
+      (nullableToMaybe <$> (js_getSession (toHTMLMediaElement self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
+getSessionUnsafe ::
+                 (MonadIO m, IsHTMLMediaElement self, HasCallStack) =>
+                   self -> m MediaSession
+getSessionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSession (toHTMLMediaElement self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement.session Mozilla HTMLMediaElement.session documentation> 
+getSessionUnchecked ::
+                    (MonadIO m, IsHTMLMediaElement self) => self -> m MediaSession
+getSessionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getSession (toHTMLMediaElement self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMenuElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMenuElement
+       (js_setCompact, setCompact, js_getCompact, getCompact,
+        HTMLMenuElement(..), gTypeHTMLMenuElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLMenuElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+setCompact :: (MonadIO m) => HTMLMenuElement -> Bool -> m ()
+setCompact self val = liftIO (js_setCompact self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+        js_getCompact :: HTMLMenuElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement.compact Mozilla HTMLMenuElement.compact documentation> 
+getCompact :: (MonadIO m) => HTMLMenuElement -> m Bool
+getCompact self = liftIO (js_getCompact self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMetaElement.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMetaElement
+       (js_setContent, setContent, js_getContent, getContent,
+        js_setHttpEquiv, setHttpEquiv, js_getHttpEquiv, getHttpEquiv,
+        js_setName, setName, js_getName, getName, js_setScheme, setScheme,
+        js_getScheme, getScheme, HTMLMetaElement(..), gTypeHTMLMetaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"content\"] = $2; })"
+        js_setContent :: HTMLMetaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
+setContent ::
+           (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setContent self val = liftIO (js_setContent self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })" js_getContent ::
+        HTMLMetaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.content Mozilla HTMLMetaElement.content documentation> 
+getContent ::
+           (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
+getContent self = liftIO (fromJSString <$> (js_getContent self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"httpEquiv\"] = $2; })"
+        js_setHttpEquiv :: HTMLMetaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
+setHttpEquiv ::
+             (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setHttpEquiv self val
+  = liftIO (js_setHttpEquiv self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"httpEquiv\"]; })"
+        js_getHttpEquiv :: HTMLMetaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.httpEquiv Mozilla HTMLMetaElement.httpEquiv documentation> 
+getHttpEquiv ::
+             (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
+getHttpEquiv self
+  = liftIO (fromJSString <$> (js_getHttpEquiv self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLMetaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLMetaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.name Mozilla HTMLMetaElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scheme\"] = $2; })"
+        js_setScheme :: HTMLMetaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
+setScheme ::
+          (MonadIO m, ToJSString val) => HTMLMetaElement -> val -> m ()
+setScheme self val = liftIO (js_setScheme self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scheme\"]; })" js_getScheme ::
+        HTMLMetaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement.scheme Mozilla HTMLMetaElement.scheme documentation> 
+getScheme ::
+          (MonadIO m, FromJSString result) => HTMLMetaElement -> m result
+getScheme self = liftIO (fromJSString <$> (js_getScheme self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLMeterElement.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLMeterElement
+       (js_setValue, setValue, js_getValue, getValue, js_setMin, setMin,
+        js_getMin, getMin, js_setMax, setMax, js_getMax, getMax, js_setLow,
+        setLow, js_getLow, getLow, js_setHigh, setHigh, js_getHigh,
+        getHigh, js_setOptimum, setOptimum, js_getOptimum, getOptimum,
+        js_getLabels, getLabels, HTMLMeterElement(..),
+        gTypeHTMLMeterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+setValue :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.value Mozilla HTMLMeterElement.value documentation> 
+getValue :: (MonadIO m) => HTMLMeterElement -> m Double
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"min\"] = $2; })" js_setMin ::
+        HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+setMin :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setMin self val = liftIO (js_setMin self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"min\"]; })" js_getMin ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.min Mozilla HTMLMeterElement.min documentation> 
+getMin :: (MonadIO m) => HTMLMeterElement -> m Double
+getMin self = liftIO (js_getMin self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
+        HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+setMax :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setMax self val = liftIO (js_setMax self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.max Mozilla HTMLMeterElement.max documentation> 
+getMax :: (MonadIO m) => HTMLMeterElement -> m Double
+getMax self = liftIO (js_getMax self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"low\"] = $2; })" js_setLow ::
+        HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+setLow :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setLow self val = liftIO (js_setLow self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"low\"]; })" js_getLow ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.low Mozilla HTMLMeterElement.low documentation> 
+getLow :: (MonadIO m) => HTMLMeterElement -> m Double
+getLow self = liftIO (js_getLow self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"high\"] = $2; })" js_setHigh ::
+        HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+setHigh :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setHigh self val = liftIO (js_setHigh self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"high\"]; })" js_getHigh ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.high Mozilla HTMLMeterElement.high documentation> 
+getHigh :: (MonadIO m) => HTMLMeterElement -> m Double
+getHigh self = liftIO (js_getHigh self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"optimum\"] = $2; })"
+        js_setOptimum :: HTMLMeterElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+setOptimum :: (MonadIO m) => HTMLMeterElement -> Double -> m ()
+setOptimum self val = liftIO (js_setOptimum self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"optimum\"]; })" js_getOptimum ::
+        HTMLMeterElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.optimum Mozilla HTMLMeterElement.optimum documentation> 
+getOptimum :: (MonadIO m) => HTMLMeterElement -> m Double
+getOptimum self = liftIO (js_getOptimum self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLMeterElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement.labels Mozilla HTMLMeterElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLMeterElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLModElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLModElement
+       (js_setCite, setCite, js_getCite, getCite, js_setDateTime,
+        setDateTime, js_getDateTime, getDateTime, HTMLModElement(..),
+        gTypeHTMLModElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cite\"] = $2; })" js_setCite ::
+        HTMLModElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
+setCite ::
+        (MonadIO m, ToJSString val) => HTMLModElement -> val -> m ()
+setCite self val = liftIO (js_setCite self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })" js_getCite ::
+        HTMLModElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.cite Mozilla HTMLModElement.cite documentation> 
+getCite ::
+        (MonadIO m, FromJSString result) => HTMLModElement -> m result
+getCite self = liftIO (fromJSString <$> (js_getCite self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
+        js_setDateTime :: HTMLModElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
+setDateTime ::
+            (MonadIO m, ToJSString val) => HTMLModElement -> val -> m ()
+setDateTime self val
+  = liftIO (js_setDateTime self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })" js_getDateTime
+        :: HTMLModElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement.dateTime Mozilla HTMLModElement.dateTime documentation> 
+getDateTime ::
+            (MonadIO m, FromJSString result) => HTMLModElement -> m result
+getDateTime self = liftIO (fromJSString <$> (js_getDateTime self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOListElement.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOListElement
+       (js_setCompact, setCompact, js_getCompact, getCompact, js_setStart,
+        setStart, js_getStart, getStart, js_setReversed, setReversed,
+        js_getReversed, getReversed, js_setType, setType, js_getType,
+        getType, HTMLOListElement(..), gTypeHTMLOListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLOListElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
+setCompact :: (MonadIO m) => HTMLOListElement -> Bool -> m ()
+setCompact self val = liftIO (js_setCompact self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+        js_getCompact :: HTMLOListElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.compact Mozilla HTMLOListElement.compact documentation> 
+getCompact :: (MonadIO m) => HTMLOListElement -> m Bool
+getCompact self = liftIO (js_getCompact self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"start\"] = $2; })" js_setStart
+        :: HTMLOListElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+setStart :: (MonadIO m) => HTMLOListElement -> Int -> m ()
+setStart self val = liftIO (js_setStart self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"start\"]; })" js_getStart ::
+        HTMLOListElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.start Mozilla HTMLOListElement.start documentation> 
+getStart :: (MonadIO m) => HTMLOListElement -> m Int
+getStart self = liftIO (js_getStart self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"reversed\"] = $2; })"
+        js_setReversed :: HTMLOListElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
+setReversed :: (MonadIO m) => HTMLOListElement -> Bool -> m ()
+setReversed self val = liftIO (js_setReversed self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"reversed\"] ? 1 : 0); })"
+        js_getReversed :: HTMLOListElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.reversed Mozilla HTMLOListElement.reversed documentation> 
+getReversed :: (MonadIO m) => HTMLOListElement -> m Bool
+getReversed self = liftIO (js_getReversed self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLOListElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLOListElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLOListElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement.type Mozilla HTMLOListElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLOListElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLObjectElement.hs
@@ -0,0 +1,380 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLObjectElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_getSVGDocument,
+        getSVGDocument, getSVGDocument_, js_getForm, getForm, js_setCode,
+        setCode, js_getCode, getCode, js_setAlign, setAlign, js_getAlign,
+        getAlign, js_setArchive, setArchive, js_getArchive, getArchive,
+        js_setBorder, setBorder, js_getBorder, getBorder, js_setCodeBase,
+        setCodeBase, js_getCodeBase, getCodeBase, js_setCodeType,
+        setCodeType, js_getCodeType, getCodeType, js_setData, setData,
+        js_getData, getData, js_setDeclare, setDeclare, js_getDeclare,
+        getDeclare, js_setHeight, setHeight, js_getHeight, getHeight,
+        js_setHspace, setHspace, js_getHspace, getHspace, js_setName,
+        setName, js_getName, getName, js_setStandby, setStandby,
+        js_getStandby, getStandby, js_setType, setType, js_getType,
+        getType, js_setUseMap, setUseMap, js_getUseMap, getUseMap,
+        js_setVspace, setVspace, js_getVspace, getVspace, js_setWidth,
+        setWidth, js_getWidth, getWidth, js_getWillValidate,
+        getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage,
+        js_getContentDocument, getContentDocument, HTMLObjectElement(..),
+        gTypeHTMLObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLObjectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLObjectElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.checkValidity Mozilla HTMLObjectElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLObjectElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLObjectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLObjectElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.reportValidity Mozilla HTMLObjectElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLObjectElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.setCustomValidity Mozilla HTMLObjectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLObjectElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript safe "(($1) => { return $1[\"getSVGDocument\"](); })"
+        js_getSVGDocument :: HTMLObjectElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
+getSVGDocument :: (MonadIO m) => HTMLObjectElement -> m Document
+getSVGDocument self = liftIO (js_getSVGDocument self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.getSVGDocument Mozilla HTMLObjectElement.getSVGDocument documentation> 
+getSVGDocument_ :: (MonadIO m) => HTMLObjectElement -> m ()
+getSVGDocument_ self = liftIO (void (js_getSVGDocument self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLObjectElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.form Mozilla HTMLObjectElement.form documentation> 
+getForm :: (MonadIO m) => HTMLObjectElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"code\"] = $2; })" js_setCode ::
+        HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
+setCode ::
+        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCode self val = liftIO (js_setCode self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.code Mozilla HTMLObjectElement.code documentation> 
+getCode ::
+        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getCode self = liftIO (fromJSString <$> (js_getCode self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.align Mozilla HTMLObjectElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"archive\"] = $2; })"
+        js_setArchive :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
+setArchive ::
+           (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setArchive self val = liftIO (js_setArchive self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"archive\"]; })" js_getArchive ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.archive Mozilla HTMLObjectElement.archive documentation> 
+getArchive ::
+           (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getArchive self = liftIO (fromJSString <$> (js_getArchive self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
+        js_setBorder :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
+setBorder ::
+          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setBorder self val = liftIO (js_setBorder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.border Mozilla HTMLObjectElement.border documentation> 
+getBorder ::
+          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getBorder self = liftIO (fromJSString <$> (js_getBorder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"codeBase\"] = $2; })"
+        js_setCodeBase :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
+setCodeBase ::
+            (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeBase self val
+  = liftIO (js_setCodeBase self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"codeBase\"]; })" js_getCodeBase
+        :: HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeBase Mozilla HTMLObjectElement.codeBase documentation> 
+getCodeBase ::
+            (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getCodeBase self = liftIO (fromJSString <$> (js_getCodeBase self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"codeType\"] = $2; })"
+        js_setCodeType :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
+setCodeType ::
+            (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setCodeType self val
+  = liftIO (js_setCodeType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"codeType\"]; })" js_getCodeType
+        :: HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.codeType Mozilla HTMLObjectElement.codeType documentation> 
+getCodeType ::
+            (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getCodeType self = liftIO (fromJSString <$> (js_getCodeType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"data\"] = $2; })" js_setData ::
+        HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
+setData ::
+        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setData self val = liftIO (js_setData self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.data Mozilla HTMLObjectElement.data documentation> 
+getData ::
+        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getData self = liftIO (fromJSString <$> (js_getData self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"declare\"] = $2; })"
+        js_setDeclare :: HTMLObjectElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
+setDeclare :: (MonadIO m) => HTMLObjectElement -> Bool -> m ()
+setDeclare self val = liftIO (js_setDeclare self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"declare\"] ? 1 : 0); })"
+        js_getDeclare :: HTMLObjectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.declare Mozilla HTMLObjectElement.declare documentation> 
+getDeclare :: (MonadIO m) => HTMLObjectElement -> m Bool
+getDeclare self = liftIO (js_getDeclare self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.height Mozilla HTMLObjectElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hspace\"] = $2; })"
+        js_setHspace :: HTMLObjectElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+setHspace :: (MonadIO m) => HTMLObjectElement -> Word -> m ()
+setHspace self val = liftIO (js_setHspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hspace\"]; })" js_getHspace ::
+        HTMLObjectElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.hspace Mozilla HTMLObjectElement.hspace documentation> 
+getHspace :: (MonadIO m) => HTMLObjectElement -> m Word
+getHspace self = liftIO (js_getHspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.name Mozilla HTMLObjectElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"standby\"] = $2; })"
+        js_setStandby :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
+setStandby ::
+           (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setStandby self val = liftIO (js_setStandby self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"standby\"]; })" js_getStandby ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.standby Mozilla HTMLObjectElement.standby documentation> 
+getStandby ::
+           (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getStandby self = liftIO (fromJSString <$> (js_getStandby self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.type Mozilla HTMLObjectElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"useMap\"] = $2; })"
+        js_setUseMap :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
+setUseMap ::
+          (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setUseMap self val = liftIO (js_setUseMap self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"useMap\"]; })" js_getUseMap ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.useMap Mozilla HTMLObjectElement.useMap documentation> 
+getUseMap ::
+          (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getUseMap self = liftIO (fromJSString <$> (js_getUseMap self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vspace\"] = $2; })"
+        js_setVspace :: HTMLObjectElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+setVspace :: (MonadIO m) => HTMLObjectElement -> Word -> m ()
+setVspace self val = liftIO (js_setVspace self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vspace\"]; })" js_getVspace ::
+        HTMLObjectElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.vspace Mozilla HTMLObjectElement.vspace documentation> 
+getVspace :: (MonadIO m) => HTMLObjectElement -> m Word
+getVspace self = liftIO (js_getVspace self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLObjectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLObjectElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.width Mozilla HTMLObjectElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLObjectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.willValidate Mozilla HTMLObjectElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLObjectElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLObjectElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validity Mozilla HTMLObjectElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLObjectElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLObjectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.validationMessage Mozilla HTMLObjectElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLObjectElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentDocument\"]; })"
+        js_getContentDocument :: HTMLObjectElement -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement.contentDocument Mozilla HTMLObjectElement.contentDocument documentation> 
+getContentDocument ::
+                   (MonadIO m) => HTMLObjectElement -> m Document
+getContentDocument self = liftIO (js_getContentDocument self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptGroupElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOptGroupElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_setLabel, setLabel, js_getLabel, getLabel,
+        HTMLOptGroupElement(..), gTypeHTMLOptGroupElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLOptGroupElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLOptGroupElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLOptGroupElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.disabled Mozilla HTMLOptGroupElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLOptGroupElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: HTMLOptGroupElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) => HTMLOptGroupElement -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        HTMLOptGroupElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement.label Mozilla HTMLOptGroupElement.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => HTMLOptGroupElement -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionElement.hs
@@ -0,0 +1,139 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOptionElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_getForm, getForm, js_setLabel, setLabel, js_getLabel, getLabel,
+        js_setDefaultSelected, setDefaultSelected, js_getDefaultSelected,
+        getDefaultSelected, js_setSelected, setSelected, js_getSelected,
+        getSelected, js_setValue, setValue, js_getValue, getValue,
+        js_setText, setText, js_getText, getText, js_getIndex, getIndex,
+        HTMLOptionElement(..), gTypeHTMLOptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLOptionElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLOptionElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLOptionElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.disabled Mozilla HTMLOptionElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLOptionElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLOptionElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.form Mozilla HTMLOptionElement.form documentation> 
+getForm :: (MonadIO m) => HTMLOptionElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: HTMLOptionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        HTMLOptionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.label Mozilla HTMLOptionElement.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultSelected\"] = $2; })"
+        js_setDefaultSelected :: HTMLOptionElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
+setDefaultSelected ::
+                   (MonadIO m) => HTMLOptionElement -> Bool -> m ()
+setDefaultSelected self val
+  = liftIO (js_setDefaultSelected self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"defaultSelected\"] ? 1 : 0); })" js_getDefaultSelected ::
+        HTMLOptionElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.defaultSelected Mozilla HTMLOptionElement.defaultSelected documentation> 
+getDefaultSelected :: (MonadIO m) => HTMLOptionElement -> m Bool
+getDefaultSelected self = liftIO (js_getDefaultSelected self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selected\"] = $2; })"
+        js_setSelected :: HTMLOptionElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+setSelected :: (MonadIO m) => HTMLOptionElement -> Bool -> m ()
+setSelected self val = liftIO (js_setSelected self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"selected\"] ? 1 : 0); })"
+        js_getSelected :: HTMLOptionElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.selected Mozilla HTMLOptionElement.selected documentation> 
+getSelected :: (MonadIO m) => HTMLOptionElement -> m Bool
+getSelected self = liftIO (js_getSelected self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLOptionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLOptionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.value Mozilla HTMLOptionElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        HTMLOptionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) => HTMLOptionElement -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        HTMLOptionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.text Mozilla HTMLOptionElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) => HTMLOptionElement -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"index\"]; })" js_getIndex ::
+        HTMLOptionElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement.index Mozilla HTMLOptionElement.index documentation> 
+getIndex :: (MonadIO m) => HTMLOptionElement -> m Int
+getIndex self = liftIO (js_getIndex self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOptionsCollection.hs
@@ -0,0 +1,150 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOptionsCollection
+       (js_addBefore, addBefore, js_remove, remove, js_item, item, item_,
+        itemUnsafe, itemUnchecked, js_namedItem, namedItem, namedItem_,
+        namedItemUnsafe, namedItemUnchecked, js_setLength, setLength,
+        js_getLength, getLength, js_setSelectedIndex, setSelectedIndex,
+        js_getSelectedIndex, getSelectedIndex, HTMLOptionsCollection(..),
+        gTypeHTMLOptionsCollection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_addBefore
+        ::
+        HTMLOptionsCollection ->
+          HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.add Mozilla HTMLOptionsCollection.add documentation> 
+addBefore ::
+          (MonadIO m, IsHTMLOptionElementOrGroup element,
+           IsHTMLElementOrLong before) =>
+            HTMLOptionsCollection -> element -> Maybe before -> m ()
+addBefore self element before
+  = liftIO
+      (mapM toJSVal before >>=
+         \ before' ->
+           toJSVal element >>=
+             \ element' -> js_addBefore self (HTMLOptionElementOrGroup element')
+             (maybeToOptional (fmap HTMLElementOrLong before')))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
+        HTMLOptionsCollection -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.remove Mozilla HTMLOptionsCollection.remove documentation> 
+remove :: (MonadIO m) => HTMLOptionsCollection -> Int -> m ()
+remove self index = liftIO (js_remove self index)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        HTMLOptionsCollection -> Word -> IO (Nullable HTMLOptionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
+item ::
+     (MonadIO m) =>
+       HTMLOptionsCollection -> Word -> m (Maybe HTMLOptionElement)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
+item_ :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) =>
+             HTMLOptionsCollection -> Word -> m HTMLOptionElement
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.item Mozilla HTMLOptionsCollection.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => HTMLOptionsCollection -> Word -> m HTMLOptionElement
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        HTMLOptionsCollection ->
+          JSString -> IO (Nullable HTMLOptionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLOptionsCollection -> name -> m (Maybe HTMLOptionElement)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) =>
+             HTMLOptionsCollection -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  HTMLOptionsCollection -> name -> m HTMLOptionElement
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.namedItem Mozilla HTMLOptionsCollection.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) =>
+                     HTMLOptionsCollection -> name -> m HTMLOptionElement
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })" js_setLength
+        :: HTMLOptionsCollection -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+setLength :: (MonadIO m) => HTMLOptionsCollection -> Word -> m ()
+setLength self val = liftIO (js_setLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        HTMLOptionsCollection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.length Mozilla HTMLOptionsCollection.length documentation> 
+getLength :: (MonadIO m) => HTMLOptionsCollection -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
+        js_setSelectedIndex :: HTMLOptionsCollection -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
+setSelectedIndex ::
+                 (MonadIO m) => HTMLOptionsCollection -> Int -> m ()
+setSelectedIndex self val = liftIO (js_setSelectedIndex self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
+        js_getSelectedIndex :: HTMLOptionsCollection -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection.selectedIndex Mozilla HTMLOptionsCollection.selectedIndex documentation> 
+getSelectedIndex :: (MonadIO m) => HTMLOptionsCollection -> m Int
+getSelectedIndex self = liftIO (js_getSelectedIndex self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLOutputElement.hs
@@ -0,0 +1,170 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLOutputElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_getHtmlFor, getHtmlFor,
+        js_getForm, getForm, js_setName, setName, js_getName, getName,
+        js_getType, getType, js_setDefaultValue, setDefaultValue,
+        js_getDefaultValue, getDefaultValue, js_setValue, setValue,
+        js_getValue, getValue, js_getWillValidate, getWillValidate,
+        js_getValidity, getValidity, js_getValidationMessage,
+        getValidationMessage, js_getLabels, getLabels,
+        HTMLOutputElement(..), gTypeHTMLOutputElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLOutputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLOutputElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.checkValidity Mozilla HTMLOutputElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLOutputElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLOutputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLOutputElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.reportValidity Mozilla HTMLOutputElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLOutputElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLOutputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.setCustomValidity Mozilla HTMLOutputElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLOutputElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
+        HTMLOutputElement -> IO DOMTokenList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.htmlFor Mozilla HTMLOutputElement.htmlFor documentation> 
+getHtmlFor :: (MonadIO m) => HTMLOutputElement -> m DOMTokenList
+getHtmlFor self = liftIO (js_getHtmlFor self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLOutputElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.form Mozilla HTMLOutputElement.form documentation> 
+getForm :: (MonadIO m) => HTMLOutputElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLOutputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLOutputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.name Mozilla HTMLOutputElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLOutputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.type Mozilla HTMLOutputElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+        js_setDefaultValue :: HTMLOutputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
+        js_getDefaultValue :: HTMLOutputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.defaultValue Mozilla HTMLOutputElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
+getDefaultValue self
+  = liftIO (fromJSString <$> (js_getDefaultValue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLOutputElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLOutputElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLOutputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.value Mozilla HTMLOutputElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLOutputElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.willValidate Mozilla HTMLOutputElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLOutputElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLOutputElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validity Mozilla HTMLOutputElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLOutputElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLOutputElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.validationMessage Mozilla HTMLOutputElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLOutputElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLOutputElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement.labels Mozilla HTMLOutputElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLOutputElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParagraphElement.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLParagraphElement
+       (js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLParagraphElement(..), gTypeHTMLParagraphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLParagraphElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLParagraphElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLParagraphElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement.align Mozilla HTMLParagraphElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) =>
+           HTMLParagraphElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLParamElement.hs
@@ -0,0 +1,95 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLParamElement
+       (js_setName, setName, js_getName, getName, js_setType, setType,
+        js_getType, getType, js_setValue, setValue, js_getValue, getValue,
+        js_setValueType, setValueType, js_getValueType, getValueType,
+        HTMLParamElement(..), gTypeHTMLParamElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLParamElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLParamElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.name Mozilla HTMLParamElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLParamElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLParamElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLParamElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.type Mozilla HTMLParamElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLParamElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLParamElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLParamElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.value Mozilla HTMLParamElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLParamElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"valueType\"] = $2; })"
+        js_setValueType :: HTMLParamElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
+setValueType ::
+             (MonadIO m, ToJSString val) => HTMLParamElement -> val -> m ()
+setValueType self val
+  = liftIO (js_setValueType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueType\"]; })"
+        js_getValueType :: HTMLParamElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement.valueType Mozilla HTMLParamElement.valueType documentation> 
+getValueType ::
+             (MonadIO m, FromJSString result) => HTMLParamElement -> m result
+getValueType self
+  = liftIO (fromJSString <$> (js_getValueType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLPreElement.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLPreElement
+       (js_setWidth, setWidth, js_getWidth, getWidth, js_setWrap, setWrap,
+        js_getWrap, getWrap, HTMLPreElement(..), gTypeHTMLPreElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLPreElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLPreElement -> Int -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLPreElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.width Mozilla HTMLPreElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLPreElement -> m Int
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"wrap\"] = $2; })" js_setWrap ::
+        HTMLPreElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
+setWrap :: (MonadIO m) => HTMLPreElement -> Bool -> m ()
+setWrap self val = liftIO (js_setWrap self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"wrap\"] ? 1 : 0); })"
+        js_getWrap :: HTMLPreElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement.wrap Mozilla HTMLPreElement.wrap documentation> 
+getWrap :: (MonadIO m) => HTMLPreElement -> m Bool
+getWrap self = liftIO (js_getWrap self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLProgressElement.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLProgressElement
+       (js_setValue, setValue, js_getValue, getValue, js_setMax, setMax,
+        js_getMax, getMax, js_getPosition, getPosition, js_getLabels,
+        getLabels, HTMLProgressElement(..), gTypeHTMLProgressElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLProgressElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+setValue :: (MonadIO m) => HTMLProgressElement -> Double -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLProgressElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.value Mozilla HTMLProgressElement.value documentation> 
+getValue :: (MonadIO m) => HTMLProgressElement -> m Double
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"max\"] = $2; })" js_setMax ::
+        HTMLProgressElement -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+setMax :: (MonadIO m) => HTMLProgressElement -> Double -> m ()
+setMax self val = liftIO (js_setMax self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"max\"]; })" js_getMax ::
+        HTMLProgressElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.max Mozilla HTMLProgressElement.max documentation> 
+getMax :: (MonadIO m) => HTMLProgressElement -> m Double
+getMax self = liftIO (js_getMax self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
+        :: HTMLProgressElement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.position Mozilla HTMLProgressElement.position documentation> 
+getPosition :: (MonadIO m) => HTMLProgressElement -> m Double
+getPosition self = liftIO (js_getPosition self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLProgressElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement.labels Mozilla HTMLProgressElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLProgressElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLQuoteElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLQuoteElement
+       (js_setCite, setCite, js_getCite, getCite, HTMLQuoteElement(..),
+        gTypeHTMLQuoteElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cite\"] = $2; })" js_setCite ::
+        HTMLQuoteElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
+setCite ::
+        (MonadIO m, ToJSString val) => HTMLQuoteElement -> val -> m ()
+setCite self val = liftIO (js_setCite self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cite\"]; })" js_getCite ::
+        HTMLQuoteElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement.cite Mozilla HTMLQuoteElement.cite documentation> 
+getCite ::
+        (MonadIO m, FromJSString result) => HTMLQuoteElement -> m result
+getCite self = liftIO (fromJSString <$> (js_getCite self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLScriptElement.hs
@@ -0,0 +1,246 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLScriptElement
+       (js_setText, setText, js_getText, getText, js_setHtmlFor,
+        setHtmlFor, js_getHtmlFor, getHtmlFor, js_setEvent, setEvent,
+        js_getEvent, getEvent, js_setCharset, setCharset, js_getCharset,
+        getCharset, js_setAsync, setAsync, js_getAsync, getAsync,
+        js_setDefer, setDefer, js_getDefer, getDefer, js_setSrc, setSrc,
+        js_getSrc, getSrc, js_setType, setType, js_getType, getType,
+        js_setCrossOrigin, setCrossOrigin, js_getCrossOrigin,
+        getCrossOrigin, getCrossOriginUnsafe, getCrossOriginUnchecked,
+        js_setNonce, setNonce, js_getNonce, getNonce, js_setNoModule,
+        setNoModule, js_getNoModule, getNoModule, js_setIntegrity,
+        setIntegrity, js_getIntegrity, getIntegrity, HTMLScriptElement(..),
+        gTypeHTMLScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.text Mozilla HTMLScriptElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"htmlFor\"] = $2; })"
+        js_setHtmlFor :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
+setHtmlFor ::
+           (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setHtmlFor self val = liftIO (js_setHtmlFor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"htmlFor\"]; })" js_getHtmlFor ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.htmlFor Mozilla HTMLScriptElement.htmlFor documentation> 
+getHtmlFor ::
+           (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getHtmlFor self = liftIO (fromJSString <$> (js_getHtmlFor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"event\"] = $2; })" js_setEvent
+        :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
+setEvent ::
+         (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setEvent self val = liftIO (js_setEvent self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })" js_getEvent ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.event Mozilla HTMLScriptElement.event documentation> 
+getEvent ::
+         (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getEvent self = liftIO (fromJSString <$> (js_getEvent self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"charset\"] = $2; })"
+        js_setCharset :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
+setCharset ::
+           (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setCharset self val = liftIO (js_setCharset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charset\"]; })" js_getCharset ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.charset Mozilla HTMLScriptElement.charset documentation> 
+getCharset ::
+           (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getCharset self = liftIO (fromJSString <$> (js_getCharset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"async\"] = $2; })" js_setAsync
+        :: HTMLScriptElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+setAsync :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
+setAsync self val = liftIO (js_setAsync self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"async\"] ? 1 : 0); })"
+        js_getAsync :: HTMLScriptElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.async Mozilla HTMLScriptElement.async documentation> 
+getAsync :: (MonadIO m) => HTMLScriptElement -> m Bool
+getAsync self = liftIO (js_getAsync self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defer\"] = $2; })" js_setDefer
+        :: HTMLScriptElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+setDefer :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
+setDefer self val = liftIO (js_setDefer self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"defer\"] ? 1 : 0); })"
+        js_getDefer :: HTMLScriptElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.defer Mozilla HTMLScriptElement.defer documentation> 
+getDefer :: (MonadIO m) => HTMLScriptElement -> m Bool
+getDefer self = liftIO (js_getDefer self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.src Mozilla HTMLScriptElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.type Mozilla HTMLScriptElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"crossOrigin\"] = $2; })"
+        js_setCrossOrigin ::
+        HTMLScriptElement -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+setCrossOrigin ::
+               (MonadIO m, ToJSString val) =>
+                 HTMLScriptElement -> Maybe val -> m ()
+setCrossOrigin self val
+  = liftIO (js_setCrossOrigin self (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"crossOrigin\"]; })"
+        js_getCrossOrigin :: HTMLScriptElement -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+getCrossOrigin ::
+               (MonadIO m, FromJSString result) =>
+                 HTMLScriptElement -> m (Maybe result)
+getCrossOrigin self
+  = liftIO (fromMaybeJSString <$> (js_getCrossOrigin self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+getCrossOriginUnsafe ::
+                     (MonadIO m, HasCallStack, FromJSString result) =>
+                       HTMLScriptElement -> m result
+getCrossOriginUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getCrossOrigin self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.crossOrigin Mozilla HTMLScriptElement.crossOrigin documentation> 
+getCrossOriginUnchecked ::
+                        (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getCrossOriginUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getCrossOrigin self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
+        :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
+setNonce ::
+         (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setNonce self val = liftIO (js_setNonce self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
+        HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.nonce Mozilla HTMLScriptElement.nonce documentation> 
+getNonce ::
+         (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getNonce self = liftIO (fromJSString <$> (js_getNonce self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noModule\"] = $2; })"
+        js_setNoModule :: HTMLScriptElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
+setNoModule :: (MonadIO m) => HTMLScriptElement -> Bool -> m ()
+setNoModule self val = liftIO (js_setNoModule self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noModule\"] ? 1 : 0); })"
+        js_getNoModule :: HTMLScriptElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.noModule Mozilla HTMLScriptElement.noModule documentation> 
+getNoModule :: (MonadIO m) => HTMLScriptElement -> m Bool
+getNoModule self = liftIO (js_getNoModule self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"integrity\"] = $2; })"
+        js_setIntegrity :: HTMLScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
+setIntegrity ::
+             (MonadIO m, ToJSString val) => HTMLScriptElement -> val -> m ()
+setIntegrity self val
+  = liftIO (js_setIntegrity self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: HTMLScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement.integrity Mozilla HTMLScriptElement.integrity documentation> 
+getIntegrity ::
+             (MonadIO m, FromJSString result) => HTMLScriptElement -> m result
+getIntegrity self
+  = liftIO (fromJSString <$> (js_getIntegrity self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSelectElement.hs
@@ -0,0 +1,398 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLSelectElement
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_addBefore, addBefore, js_removeThis, removeThis, js_remove,
+        remove, js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setDisabled,
+        setDisabled, js_getDisabled, getDisabled, js_getForm, getForm,
+        getFormUnsafe, getFormUnchecked, js_setMultiple, setMultiple,
+        js_getMultiple, getMultiple, js_setName, setName, js_getName,
+        getName, js_setRequired, setRequired, js_getRequired, getRequired,
+        js_setSize, setSize, js_getSize, getSize, js_getType, getType,
+        js_getOptions, getOptions, js_setLength, setLength, js_getLength,
+        getLength, js_getSelectedOptions, getSelectedOptions,
+        js_setSelectedIndex, setSelectedIndex, js_getSelectedIndex,
+        getSelectedIndex, js_setValue, setValue, js_getValue, getValue,
+        js_getWillValidate, getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, js_setAutocomplete, setAutocomplete, js_getAutocomplete,
+        getAutocomplete, HTMLSelectElement(..), gTypeHTMLSelectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        HTMLSelectElement -> Word -> IO (Nullable HTMLOptionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+item ::
+     (MonadIO m) =>
+       HTMLSelectElement -> Word -> m (Maybe HTMLOptionElement)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+item_ :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) =>
+             HTMLSelectElement -> Word -> m HTMLOptionElement
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.item Mozilla HTMLSelectElement.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => HTMLSelectElement -> Word -> m HTMLOptionElement
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"namedItem\"]($2); })"
+        js_namedItem ::
+        HTMLSelectElement -> JSString -> IO (Nullable HTMLOptionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            HTMLSelectElement -> name -> m (Maybe HTMLOptionElement)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) => HTMLSelectElement -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  HTMLSelectElement -> name -> m HTMLOptionElement
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.namedItem Mozilla HTMLSelectElement.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) =>
+                     HTMLSelectElement -> name -> m HTMLOptionElement
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_addBefore
+        ::
+        HTMLSelectElement ->
+          HTMLOptionElementOrGroup -> Optional HTMLElementOrLong -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.add Mozilla HTMLSelectElement.add documentation> 
+addBefore ::
+          (MonadIO m, IsHTMLOptionElementOrGroup element,
+           IsHTMLElementOrLong before) =>
+            HTMLSelectElement -> element -> Maybe before -> m ()
+addBefore self element before
+  = liftIO
+      (mapM toJSVal before >>=
+         \ before' ->
+           toJSVal element >>=
+             \ element' -> js_addBefore self (HTMLOptionElementOrGroup element')
+             (maybeToOptional (fmap HTMLElementOrLong before')))
+ 
+foreign import javascript safe "(($1) => { return $1[\"remove\"](); })" js_removeThis ::
+        HTMLSelectElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+removeThis :: (MonadIO m) => HTMLSelectElement -> m ()
+removeThis self = liftIO (js_removeThis self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"remove\"]($2); })" js_remove ::
+        HTMLSelectElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.remove Mozilla HTMLSelectElement.remove documentation> 
+remove :: (MonadIO m) => HTMLSelectElement -> Int -> m ()
+remove self index = liftIO (js_remove self index)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLSelectElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.checkValidity Mozilla HTMLSelectElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLSelectElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLSelectElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.reportValidity Mozilla HTMLSelectElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLSelectElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLSelectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.setCustomValidity Mozilla HTMLSelectElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) => HTMLSelectElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLSelectElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
+setAutofocus :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
+setAutofocus self val = liftIO (js_setAutofocus self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
+        js_getAutofocus :: HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autofocus Mozilla HTMLSelectElement.autofocus documentation> 
+getAutofocus :: (MonadIO m) => HTMLSelectElement -> m Bool
+getAutofocus self = liftIO (js_getAutofocus self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLSelectElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.disabled Mozilla HTMLSelectElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLSelectElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLSelectElement -> IO (Nullable HTMLFormElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
+getForm ::
+        (MonadIO m) => HTMLSelectElement -> m (Maybe HTMLFormElement)
+getForm self = liftIO (nullableToMaybe <$> (js_getForm self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
+getFormUnsafe ::
+              (MonadIO m, HasCallStack) => HTMLSelectElement -> m HTMLFormElement
+getFormUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getForm self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.form Mozilla HTMLSelectElement.form documentation> 
+getFormUnchecked ::
+                 (MonadIO m) => HTMLSelectElement -> m HTMLFormElement
+getFormUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getForm self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"multiple\"] = $2; })"
+        js_setMultiple :: HTMLSelectElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+setMultiple :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
+setMultiple self val = liftIO (js_setMultiple self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"multiple\"] ? 1 : 0); })"
+        js_getMultiple :: HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.multiple Mozilla HTMLSelectElement.multiple documentation> 
+getMultiple :: (MonadIO m) => HTMLSelectElement -> m Bool
+getMultiple self = liftIO (js_getMultiple self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLSelectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLSelectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.name Mozilla HTMLSelectElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
+        js_setRequired :: HTMLSelectElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+setRequired :: (MonadIO m) => HTMLSelectElement -> Bool -> m ()
+setRequired self val = liftIO (js_setRequired self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
+        js_getRequired :: HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.required Mozilla HTMLSelectElement.required documentation> 
+getRequired :: (MonadIO m) => HTMLSelectElement -> m Bool
+getRequired self = liftIO (js_getRequired self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
+        HTMLSelectElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+setSize :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
+setSize self val = liftIO (js_setSize self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        HTMLSelectElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.size Mozilla HTMLSelectElement.size documentation> 
+getSize :: (MonadIO m) => HTMLSelectElement -> m Word
+getSize self = liftIO (js_getSize self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLSelectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.type Mozilla HTMLSelectElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"options\"]; })" js_getOptions ::
+        HTMLSelectElement -> IO HTMLOptionsCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.options Mozilla HTMLSelectElement.options documentation> 
+getOptions ::
+           (MonadIO m) => HTMLSelectElement -> m HTMLOptionsCollection
+getOptions self = liftIO (js_getOptions self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"length\"] = $2; })" js_setLength
+        :: HTMLSelectElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+setLength :: (MonadIO m) => HTMLSelectElement -> Word -> m ()
+setLength self val = liftIO (js_setLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        HTMLSelectElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.length Mozilla HTMLSelectElement.length documentation> 
+getLength :: (MonadIO m) => HTMLSelectElement -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectedOptions\"]; })"
+        js_getSelectedOptions :: HTMLSelectElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedOptions Mozilla HTMLSelectElement.selectedOptions documentation> 
+getSelectedOptions ::
+                   (MonadIO m) => HTMLSelectElement -> m HTMLCollection
+getSelectedOptions self = liftIO (js_getSelectedOptions self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectedIndex\"] = $2; })"
+        js_setSelectedIndex :: HTMLSelectElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
+setSelectedIndex :: (MonadIO m) => HTMLSelectElement -> Int -> m ()
+setSelectedIndex self val = liftIO (js_setSelectedIndex self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
+        js_getSelectedIndex :: HTMLSelectElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.selectedIndex Mozilla HTMLSelectElement.selectedIndex documentation> 
+getSelectedIndex :: (MonadIO m) => HTMLSelectElement -> m Int
+getSelectedIndex self = liftIO (js_getSelectedIndex self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLSelectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLSelectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.value Mozilla HTMLSelectElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLSelectElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.willValidate Mozilla HTMLSelectElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLSelectElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLSelectElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validity Mozilla HTMLSelectElement.validity documentation> 
+getValidity :: (MonadIO m) => HTMLSelectElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLSelectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.validationMessage Mozilla HTMLSelectElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLSelectElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.labels Mozilla HTMLSelectElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLSelectElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLSelectElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadIO m, ToJSString val) => HTMLSelectElement -> val -> m ()
+setAutocomplete self val
+  = liftIO (js_setAutocomplete self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLSelectElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement.autocomplete Mozilla HTMLSelectElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadIO m, FromJSString result) => HTMLSelectElement -> m result
+getAutocomplete self
+  = liftIO (fromJSString <$> (js_getAutocomplete self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSlotElement.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLSlotElement
+       (js_assignedNodes, assignedNodes, assignedNodes_, js_setName,
+        setName, js_getName, getName, HTMLSlotElement(..),
+        gTypeHTMLSlotElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"assignedNodes\"]($2); })"
+        js_assignedNodes ::
+        HTMLSlotElement -> Optional AssignedNodesOptions -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
+assignedNodes ::
+              (MonadIO m) =>
+                HTMLSlotElement -> Maybe AssignedNodesOptions -> m [Node]
+assignedNodes self options
+  = liftIO
+      ((js_assignedNodes self (maybeToOptional options)) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.assignedNodes Mozilla HTMLSlotElement.assignedNodes documentation> 
+assignedNodes_ ::
+               (MonadIO m) =>
+                 HTMLSlotElement -> Maybe AssignedNodesOptions -> m ()
+assignedNodes_ self options
+  = liftIO (void (js_assignedNodes self (maybeToOptional options)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLSlotElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLSlotElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLSlotElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement.name Mozilla HTMLSlotElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLSlotElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLSourceElement.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLSourceElement
+       (js_setSrc, setSrc, js_getSrc, getSrc, js_setType, setType,
+        js_getType, getType, js_setSrcset, setSrcset, js_getSrcset,
+        getSrcset, js_setSizes, setSizes, js_getSizes, getSizes,
+        js_setMedia, setMedia, js_getMedia, getMedia,
+        HTMLSourceElement(..), gTypeHTMLSourceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLSourceElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLSourceElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.src Mozilla HTMLSourceElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLSourceElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLSourceElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.type Mozilla HTMLSourceElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"srcset\"] = $2; })"
+        js_setSrcset :: HTMLSourceElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
+setSrcset ::
+          (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSrcset self val = liftIO (js_setSrcset self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srcset\"]; })" js_getSrcset ::
+        HTMLSourceElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.srcset Mozilla HTMLSourceElement.srcset documentation> 
+getSrcset ::
+          (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
+getSrcset self = liftIO (fromJSString <$> (js_getSrcset self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"sizes\"] = $2; })" js_setSizes
+        :: HTMLSourceElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
+setSizes ::
+         (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setSizes self val = liftIO (js_setSizes self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sizes\"]; })" js_getSizes ::
+        HTMLSourceElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.sizes Mozilla HTMLSourceElement.sizes documentation> 
+getSizes ::
+         (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
+getSizes self = liftIO (fromJSString <$> (js_getSizes self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
+        :: HTMLSourceElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
+setMedia ::
+         (MonadIO m, ToJSString val) => HTMLSourceElement -> val -> m ()
+setMedia self val = liftIO (js_setMedia self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        HTMLSourceElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement.media Mozilla HTMLSourceElement.media documentation> 
+getMedia ::
+         (MonadIO m, FromJSString result) => HTMLSourceElement -> m result
+getMedia self = liftIO (fromJSString <$> (js_getMedia self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLStyleElement.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLStyleElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_setMedia, setMedia, js_getMedia, getMedia, js_setType, setType,
+        js_getType, getType, js_getSheet, getSheet, js_setNonce, setNonce,
+        js_getNonce, getNonce, HTMLStyleElement(..), gTypeHTMLStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLStyleElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLStyleElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLStyleElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.disabled Mozilla HTMLStyleElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLStyleElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
+        :: HTMLStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
+setMedia ::
+         (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setMedia self val = liftIO (js_setMedia self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        HTMLStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.media Mozilla HTMLStyleElement.media documentation> 
+getMedia ::
+         (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
+getMedia self = liftIO (fromJSString <$> (js_getMedia self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.type Mozilla HTMLStyleElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
+        HTMLStyleElement -> IO StyleSheet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.sheet Mozilla HTMLStyleElement.sheet documentation> 
+getSheet :: (MonadIO m) => HTMLStyleElement -> m StyleSheet
+getSheet self = liftIO (js_getSheet self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"nonce\"] = $2; })" js_setNonce
+        :: HTMLStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
+setNonce ::
+         (MonadIO m, ToJSString val) => HTMLStyleElement -> val -> m ()
+setNonce self val = liftIO (js_setNonce self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nonce\"]; })" js_getNonce ::
+        HTMLStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement.nonce Mozilla HTMLStyleElement.nonce documentation> 
+getNonce ::
+         (MonadIO m, FromJSString result) => HTMLStyleElement -> m result
+getNonce self = liftIO (fromJSString <$> (js_getNonce self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCaptionElement.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableCaptionElement
+       (js_setAlign, setAlign, js_getAlign, getAlign,
+        HTMLTableCaptionElement(..), gTypeHTMLTableCaptionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableCaptionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) =>
+           HTMLTableCaptionElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableCaptionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement.align Mozilla HTMLTableCaptionElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableCaptionElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableCellElement.hs
@@ -0,0 +1,273 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableCellElement
+       (js_getCellIndex, getCellIndex, js_setAlign, setAlign, js_getAlign,
+        getAlign, js_setAxis, setAxis, js_getAxis, getAxis, js_setBgColor,
+        setBgColor, js_getBgColor, getBgColor, js_setCh, setCh, js_getCh,
+        getCh, js_setChOff, setChOff, js_getChOff, getChOff, js_setColSpan,
+        setColSpan, js_getColSpan, getColSpan, js_setRowSpan, setRowSpan,
+        js_getRowSpan, getRowSpan, js_setHeaders, setHeaders,
+        js_getHeaders, getHeaders, js_setHeight, setHeight, js_getHeight,
+        getHeight, js_setNoWrap, setNoWrap, js_getNoWrap, getNoWrap,
+        js_setVAlign, setVAlign, js_getVAlign, getVAlign, js_setWidth,
+        setWidth, js_getWidth, getWidth, js_setAbbr, setAbbr, js_getAbbr,
+        getAbbr, js_setScope, setScope, js_getScope, getScope,
+        HTMLTableCellElement(..), gTypeHTMLTableCellElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cellIndex\"]; })"
+        js_getCellIndex :: HTMLTableCellElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.cellIndex Mozilla HTMLTableCellElement.cellIndex documentation> 
+getCellIndex :: (MonadIO m) => HTMLTableCellElement -> m Int
+getCellIndex self = liftIO (js_getCellIndex self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.align Mozilla HTMLTableCellElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"axis\"] = $2; })" js_setAxis ::
+        HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
+setAxis ::
+        (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAxis self val = liftIO (js_setAxis self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"axis\"]; })" js_getAxis ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.axis Mozilla HTMLTableCellElement.axis documentation> 
+getAxis ::
+        (MonadIO m, FromJSString result) =>
+          HTMLTableCellElement -> m result
+getAxis self = liftIO (fromJSString <$> (js_getAxis self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.bgColor Mozilla HTMLTableCellElement.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) =>
+             HTMLTableCellElement -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
+        HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
+setCh ::
+      (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setCh self val = liftIO (js_setCh self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.ch Mozilla HTMLTableCellElement.ch documentation> 
+getCh ::
+      (MonadIO m, FromJSString result) =>
+        HTMLTableCellElement -> m result
+getCh self = liftIO (fromJSString <$> (js_getCh self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
+        :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
+setChOff ::
+         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setChOff self val = liftIO (js_setChOff self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.chOff Mozilla HTMLTableCellElement.chOff documentation> 
+getChOff ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getChOff self = liftIO (fromJSString <$> (js_getChOff self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"colSpan\"] = $2; })"
+        js_setColSpan :: HTMLTableCellElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+setColSpan :: (MonadIO m) => HTMLTableCellElement -> Word -> m ()
+setColSpan self val = liftIO (js_setColSpan self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"colSpan\"]; })" js_getColSpan ::
+        HTMLTableCellElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.colSpan Mozilla HTMLTableCellElement.colSpan documentation> 
+getColSpan :: (MonadIO m) => HTMLTableCellElement -> m Word
+getColSpan self = liftIO (js_getColSpan self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rowSpan\"] = $2; })"
+        js_setRowSpan :: HTMLTableCellElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+setRowSpan :: (MonadIO m) => HTMLTableCellElement -> Word -> m ()
+setRowSpan self val = liftIO (js_setRowSpan self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rowSpan\"]; })" js_getRowSpan ::
+        HTMLTableCellElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.rowSpan Mozilla HTMLTableCellElement.rowSpan documentation> 
+getRowSpan :: (MonadIO m) => HTMLTableCellElement -> m Word
+getRowSpan self = liftIO (js_getRowSpan self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"headers\"] = $2; })"
+        js_setHeaders :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
+setHeaders ::
+           (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeaders self val = liftIO (js_setHeaders self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.headers Mozilla HTMLTableCellElement.headers documentation> 
+getHeaders ::
+           (MonadIO m, FromJSString result) =>
+             HTMLTableCellElement -> m result
+getHeaders self = liftIO (fromJSString <$> (js_getHeaders self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
+setHeight ::
+          (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setHeight self val = liftIO (js_setHeight self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.height Mozilla HTMLTableCellElement.height documentation> 
+getHeight ::
+          (MonadIO m, FromJSString result) =>
+            HTMLTableCellElement -> m result
+getHeight self = liftIO (fromJSString <$> (js_getHeight self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"noWrap\"] = $2; })"
+        js_setNoWrap :: HTMLTableCellElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
+setNoWrap :: (MonadIO m) => HTMLTableCellElement -> Bool -> m ()
+setNoWrap self val = liftIO (js_setNoWrap self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"noWrap\"] ? 1 : 0); })"
+        js_getNoWrap :: HTMLTableCellElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.noWrap Mozilla HTMLTableCellElement.noWrap documentation> 
+getNoWrap :: (MonadIO m) => HTMLTableCellElement -> m Bool
+getNoWrap self = liftIO (js_getNoWrap self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
+setVAlign ::
+          (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setVAlign self val = liftIO (js_setVAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.vAlign Mozilla HTMLTableCellElement.vAlign documentation> 
+getVAlign ::
+          (MonadIO m, FromJSString result) =>
+            HTMLTableCellElement -> m result
+getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.width Mozilla HTMLTableCellElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"abbr\"] = $2; })" js_setAbbr ::
+        HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
+setAbbr ::
+        (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setAbbr self val = liftIO (js_setAbbr self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"abbr\"]; })" js_getAbbr ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.abbr Mozilla HTMLTableCellElement.abbr documentation> 
+getAbbr ::
+        (MonadIO m, FromJSString result) =>
+          HTMLTableCellElement -> m result
+getAbbr self = liftIO (fromJSString <$> (js_getAbbr self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"scope\"] = $2; })" js_setScope
+        :: HTMLTableCellElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
+setScope ::
+         (MonadIO m, ToJSString val) => HTMLTableCellElement -> val -> m ()
+setScope self val = liftIO (js_setScope self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scope\"]; })" js_getScope ::
+        HTMLTableCellElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement.scope Mozilla HTMLTableCellElement.scope documentation> 
+getScope ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableCellElement -> m result
+getScope self = liftIO (fromJSString <$> (js_getScope self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableColElement.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableColElement
+       (js_setAlign, setAlign, js_getAlign, getAlign, js_setCh, setCh,
+        js_getCh, getCh, js_setChOff, setChOff, js_getChOff, getChOff,
+        js_setSpan, setSpan, js_getSpan, getSpan, js_setVAlign, setVAlign,
+        js_getVAlign, getVAlign, js_setWidth, setWidth, js_getWidth,
+        getWidth, HTMLTableColElement(..), gTypeHTMLTableColElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableColElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableColElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.align Mozilla HTMLTableColElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
+        HTMLTableColElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
+setCh ::
+      (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setCh self val = liftIO (js_setCh self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
+        HTMLTableColElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.ch Mozilla HTMLTableColElement.ch documentation> 
+getCh ::
+      (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
+getCh self = liftIO (fromJSString <$> (js_getCh self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
+        :: HTMLTableColElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
+setChOff ::
+         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setChOff self val = liftIO (js_setChOff self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
+        HTMLTableColElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.chOff Mozilla HTMLTableColElement.chOff documentation> 
+getChOff ::
+         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
+getChOff self = liftIO (fromJSString <$> (js_getChOff self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"span\"] = $2; })" js_setSpan ::
+        HTMLTableColElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+setSpan :: (MonadIO m) => HTMLTableColElement -> Word -> m ()
+setSpan self val = liftIO (js_setSpan self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"span\"]; })" js_getSpan ::
+        HTMLTableColElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.span Mozilla HTMLTableColElement.span documentation> 
+getSpan :: (MonadIO m) => HTMLTableColElement -> m Word
+getSpan self = liftIO (js_getSpan self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableColElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
+setVAlign ::
+          (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setVAlign self val = liftIO (js_setVAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
+        HTMLTableColElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.vAlign Mozilla HTMLTableColElement.vAlign documentation> 
+getVAlign ::
+          (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
+getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLTableColElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLTableColElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLTableColElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement.width Mozilla HTMLTableColElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLTableColElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableElement.hs
@@ -0,0 +1,394 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableElement
+       (js_createTHead, createTHead, createTHead_, js_deleteTHead,
+        deleteTHead, js_createTFoot, createTFoot, createTFoot_,
+        js_deleteTFoot, deleteTFoot, js_createTBody, createTBody,
+        createTBody_, js_createCaption, createCaption, createCaption_,
+        js_deleteCaption, deleteCaption, js_insertRow, insertRow,
+        insertRow_, js_deleteRow, deleteRow, js_setCaption, setCaption,
+        js_getCaption, getCaption, getCaptionUnsafe, getCaptionUnchecked,
+        js_setTHead, setTHead, js_getTHead, getTHead, getTHeadUnsafe,
+        getTHeadUnchecked, js_setTFoot, setTFoot, js_getTFoot, getTFoot,
+        getTFootUnsafe, getTFootUnchecked, js_getRows, getRows,
+        js_getTBodies, getTBodies, js_setAlign, setAlign, js_getAlign,
+        getAlign, js_setBgColor, setBgColor, js_getBgColor, getBgColor,
+        js_setBorder, setBorder, js_getBorder, getBorder,
+        js_setCellPadding, setCellPadding, js_getCellPadding,
+        getCellPadding, js_setCellSpacing, setCellSpacing,
+        js_getCellSpacing, getCellSpacing, js_setFrame, setFrame,
+        js_getFrame, getFrame, js_setRules, setRules, js_getRules,
+        getRules, js_setSummary, setSummary, js_getSummary, getSummary,
+        js_setWidth, setWidth, js_getWidth, getWidth, HTMLTableElement(..),
+        gTypeHTMLTableElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createTHead\"](); })"
+        js_createTHead :: HTMLTableElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
+createTHead :: (MonadIO m) => HTMLTableElement -> m HTMLElement
+createTHead self = liftIO (js_createTHead self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTHead Mozilla HTMLTableElement.createTHead documentation> 
+createTHead_ :: (MonadIO m) => HTMLTableElement -> m ()
+createTHead_ self = liftIO (void (js_createTHead self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deleteTHead\"](); })"
+        js_deleteTHead :: HTMLTableElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTHead Mozilla HTMLTableElement.deleteTHead documentation> 
+deleteTHead :: (MonadIO m) => HTMLTableElement -> m ()
+deleteTHead self = liftIO (js_deleteTHead self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createTFoot\"](); })"
+        js_createTFoot :: HTMLTableElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+createTFoot :: (MonadIO m) => HTMLTableElement -> m HTMLElement
+createTFoot self = liftIO (js_createTFoot self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTFoot Mozilla HTMLTableElement.createTFoot documentation> 
+createTFoot_ :: (MonadIO m) => HTMLTableElement -> m ()
+createTFoot_ self = liftIO (void (js_createTFoot self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deleteTFoot\"](); })"
+        js_deleteTFoot :: HTMLTableElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteTFoot Mozilla HTMLTableElement.deleteTFoot documentation> 
+deleteTFoot :: (MonadIO m) => HTMLTableElement -> m ()
+deleteTFoot self = liftIO (js_deleteTFoot self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createTBody\"](); })"
+        js_createTBody :: HTMLTableElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
+createTBody :: (MonadIO m) => HTMLTableElement -> m HTMLElement
+createTBody self = liftIO (js_createTBody self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createTBody Mozilla HTMLTableElement.createTBody documentation> 
+createTBody_ :: (MonadIO m) => HTMLTableElement -> m ()
+createTBody_ self = liftIO (void (js_createTBody self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createCaption\"](); })"
+        js_createCaption :: HTMLTableElement -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
+createCaption :: (MonadIO m) => HTMLTableElement -> m HTMLElement
+createCaption self = liftIO (js_createCaption self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.createCaption Mozilla HTMLTableElement.createCaption documentation> 
+createCaption_ :: (MonadIO m) => HTMLTableElement -> m ()
+createCaption_ self = liftIO (void (js_createCaption self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deleteCaption\"](); })"
+        js_deleteCaption :: HTMLTableElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteCaption Mozilla HTMLTableElement.deleteCaption documentation> 
+deleteCaption :: (MonadIO m) => HTMLTableElement -> m ()
+deleteCaption self = liftIO (js_deleteCaption self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })" js_insertRow
+        :: HTMLTableElement -> Optional Int -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+insertRow ::
+          (MonadIO m) => HTMLTableElement -> Maybe Int -> m HTMLElement
+insertRow self index
+  = liftIO (js_insertRow self (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.insertRow Mozilla HTMLTableElement.insertRow documentation> 
+insertRow_ :: (MonadIO m) => HTMLTableElement -> Maybe Int -> m ()
+insertRow_ self index
+  = liftIO (void (js_insertRow self (maybeToOptional index)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })" js_deleteRow
+        :: HTMLTableElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.deleteRow Mozilla HTMLTableElement.deleteRow documentation> 
+deleteRow :: (MonadIO m) => HTMLTableElement -> Int -> m ()
+deleteRow self index = liftIO (js_deleteRow self index)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"caption\"] = $2; })"
+        js_setCaption ::
+        HTMLTableElement -> Optional HTMLTableCaptionElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+setCaption ::
+           (MonadIO m) =>
+             HTMLTableElement -> Maybe HTMLTableCaptionElement -> m ()
+setCaption self val
+  = liftIO (js_setCaption self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"caption\"]; })" js_getCaption ::
+        HTMLTableElement -> IO (Nullable HTMLTableCaptionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+getCaption ::
+           (MonadIO m) =>
+             HTMLTableElement -> m (Maybe HTMLTableCaptionElement)
+getCaption self = liftIO (nullableToMaybe <$> (js_getCaption self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+getCaptionUnsafe ::
+                 (MonadIO m, HasCallStack) =>
+                   HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCaption self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.caption Mozilla HTMLTableElement.caption documentation> 
+getCaptionUnchecked ::
+                    (MonadIO m) => HTMLTableElement -> m HTMLTableCaptionElement
+getCaptionUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getCaption self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"tHead\"] = $2; })" js_setTHead ::
+        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+setTHead ::
+         (MonadIO m) =>
+           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTHead self val = liftIO (js_setTHead self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tHead\"]; })" js_getTHead ::
+        HTMLTableElement -> IO (Nullable HTMLTableSectionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+getTHead ::
+         (MonadIO m) =>
+           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTHead self = liftIO (nullableToMaybe <$> (js_getTHead self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+getTHeadUnsafe ::
+               (MonadIO m, HasCallStack) =>
+                 HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTHead self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tHead Mozilla HTMLTableElement.tHead documentation> 
+getTHeadUnchecked ::
+                  (MonadIO m) => HTMLTableElement -> m HTMLTableSectionElement
+getTHeadUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTHead self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"tFoot\"] = $2; })" js_setTFoot ::
+        HTMLTableElement -> Optional HTMLTableSectionElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+setTFoot ::
+         (MonadIO m) =>
+           HTMLTableElement -> Maybe HTMLTableSectionElement -> m ()
+setTFoot self val = liftIO (js_setTFoot self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tFoot\"]; })" js_getTFoot ::
+        HTMLTableElement -> IO (Nullable HTMLTableSectionElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+getTFoot ::
+         (MonadIO m) =>
+           HTMLTableElement -> m (Maybe HTMLTableSectionElement)
+getTFoot self = liftIO (nullableToMaybe <$> (js_getTFoot self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+getTFootUnsafe ::
+               (MonadIO m, HasCallStack) =>
+                 HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTFoot self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tFoot Mozilla HTMLTableElement.tFoot documentation> 
+getTFootUnchecked ::
+                  (MonadIO m) => HTMLTableElement -> m HTMLTableSectionElement
+getTFootUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTFoot self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
+        HTMLTableElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rows Mozilla HTMLTableElement.rows documentation> 
+getRows :: (MonadIO m) => HTMLTableElement -> m HTMLCollection
+getRows self = liftIO (js_getRows self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tBodies\"]; })" js_getTBodies ::
+        HTMLTableElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.tBodies Mozilla HTMLTableElement.tBodies documentation> 
+getTBodies :: (MonadIO m) => HTMLTableElement -> m HTMLCollection
+getTBodies self = liftIO (js_getTBodies self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.align Mozilla HTMLTableElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.bgColor Mozilla HTMLTableElement.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"border\"] = $2; })"
+        js_setBorder :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
+setBorder ::
+          (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setBorder self val = liftIO (js_setBorder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"border\"]; })" js_getBorder ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.border Mozilla HTMLTableElement.border documentation> 
+getBorder ::
+          (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getBorder self = liftIO (fromJSString <$> (js_getBorder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cellPadding\"] = $2; })"
+        js_setCellPadding :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
+setCellPadding ::
+               (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellPadding self val
+  = liftIO (js_setCellPadding self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cellPadding\"]; })"
+        js_getCellPadding :: HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellPadding Mozilla HTMLTableElement.cellPadding documentation> 
+getCellPadding ::
+               (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getCellPadding self
+  = liftIO (fromJSString <$> (js_getCellPadding self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cellSpacing\"] = $2; })"
+        js_setCellSpacing :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
+setCellSpacing ::
+               (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setCellSpacing self val
+  = liftIO (js_setCellSpacing self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cellSpacing\"]; })"
+        js_getCellSpacing :: HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.cellSpacing Mozilla HTMLTableElement.cellSpacing documentation> 
+getCellSpacing ::
+               (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getCellSpacing self
+  = liftIO (fromJSString <$> (js_getCellSpacing self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"frame\"] = $2; })" js_setFrame
+        :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
+setFrame ::
+         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setFrame self val = liftIO (js_setFrame self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frame\"]; })" js_getFrame ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.frame Mozilla HTMLTableElement.frame documentation> 
+getFrame ::
+         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getFrame self = liftIO (fromJSString <$> (js_getFrame self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rules\"] = $2; })" js_setRules
+        :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
+setRules ::
+         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setRules self val = liftIO (js_setRules self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rules\"]; })" js_getRules ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.rules Mozilla HTMLTableElement.rules documentation> 
+getRules ::
+         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getRules self = liftIO (fromJSString <$> (js_getRules self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"summary\"] = $2; })"
+        js_setSummary :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
+setSummary ::
+           (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setSummary self val = liftIO (js_setSummary self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"summary\"]; })" js_getSummary ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.summary Mozilla HTMLTableElement.summary documentation> 
+getSummary ::
+           (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getSummary self = liftIO (fromJSString <$> (js_getSummary self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLTableElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
+setWidth ::
+         (MonadIO m, ToJSString val) => HTMLTableElement -> val -> m ()
+setWidth self val = liftIO (js_setWidth self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLTableElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement.width Mozilla HTMLTableElement.width documentation> 
+getWidth ::
+         (MonadIO m, FromJSString result) => HTMLTableElement -> m result
+getWidth self = liftIO (fromJSString <$> (js_getWidth self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableRowElement.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableRowElement
+       (js_insertCell, insertCell, insertCell_, js_deleteCell, deleteCell,
+        js_getRowIndex, getRowIndex, js_getSectionRowIndex,
+        getSectionRowIndex, js_getCells, getCells, js_setAlign, setAlign,
+        js_getAlign, getAlign, js_setBgColor, setBgColor, js_getBgColor,
+        getBgColor, js_setCh, setCh, js_getCh, getCh, js_setChOff,
+        setChOff, js_getChOff, getChOff, js_setVAlign, setVAlign,
+        js_getVAlign, getVAlign, HTMLTableRowElement(..),
+        gTypeHTMLTableRowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"insertCell\"]($2); })"
+        js_insertCell ::
+        HTMLTableRowElement -> Optional Int -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
+insertCell ::
+           (MonadIO m) => HTMLTableRowElement -> Maybe Int -> m HTMLElement
+insertCell self index
+  = liftIO (js_insertCell self (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.insertCell Mozilla HTMLTableRowElement.insertCell documentation> 
+insertCell_ ::
+            (MonadIO m) => HTMLTableRowElement -> Maybe Int -> m ()
+insertCell_ self index
+  = liftIO (void (js_insertCell self (maybeToOptional index)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteCell\"]($2); })"
+        js_deleteCell :: HTMLTableRowElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.deleteCell Mozilla HTMLTableRowElement.deleteCell documentation> 
+deleteCell :: (MonadIO m) => HTMLTableRowElement -> Int -> m ()
+deleteCell self index = liftIO (js_deleteCell self index)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rowIndex\"]; })" js_getRowIndex
+        :: HTMLTableRowElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.rowIndex Mozilla HTMLTableRowElement.rowIndex documentation> 
+getRowIndex :: (MonadIO m) => HTMLTableRowElement -> m Int
+getRowIndex self = liftIO (js_getRowIndex self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sectionRowIndex\"]; })"
+        js_getSectionRowIndex :: HTMLTableRowElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.sectionRowIndex Mozilla HTMLTableRowElement.sectionRowIndex documentation> 
+getSectionRowIndex :: (MonadIO m) => HTMLTableRowElement -> m Int
+getSectionRowIndex self = liftIO (js_getSectionRowIndex self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cells\"]; })" js_getCells ::
+        HTMLTableRowElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.cells Mozilla HTMLTableRowElement.cells documentation> 
+getCells :: (MonadIO m) => HTMLTableRowElement -> m HTMLCollection
+getCells self = liftIO (js_getCells self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableRowElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableRowElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.align Mozilla HTMLTableRowElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"bgColor\"] = $2; })"
+        js_setBgColor :: HTMLTableRowElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
+setBgColor ::
+           (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setBgColor self val = liftIO (js_setBgColor self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bgColor\"]; })" js_getBgColor ::
+        HTMLTableRowElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.bgColor Mozilla HTMLTableRowElement.bgColor documentation> 
+getBgColor ::
+           (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
+getBgColor self = liftIO (fromJSString <$> (js_getBgColor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
+        HTMLTableRowElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
+setCh ::
+      (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setCh self val = liftIO (js_setCh self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
+        HTMLTableRowElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.ch Mozilla HTMLTableRowElement.ch documentation> 
+getCh ::
+      (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
+getCh self = liftIO (fromJSString <$> (js_getCh self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
+        :: HTMLTableRowElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
+setChOff ::
+         (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setChOff self val = liftIO (js_setChOff self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
+        HTMLTableRowElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.chOff Mozilla HTMLTableRowElement.chOff documentation> 
+getChOff ::
+         (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
+getChOff self = liftIO (fromJSString <$> (js_getChOff self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableRowElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
+setVAlign ::
+          (MonadIO m, ToJSString val) => HTMLTableRowElement -> val -> m ()
+setVAlign self val = liftIO (js_setVAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
+        HTMLTableRowElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement.vAlign Mozilla HTMLTableRowElement.vAlign documentation> 
+getVAlign ::
+          (MonadIO m, FromJSString result) => HTMLTableRowElement -> m result
+getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTableSectionElement.hs
@@ -0,0 +1,133 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTableSectionElement
+       (js_insertRow, insertRow, insertRow_, js_deleteRow, deleteRow,
+        js_setAlign, setAlign, js_getAlign, getAlign, js_setCh, setCh,
+        js_getCh, getCh, js_setChOff, setChOff, js_getChOff, getChOff,
+        js_setVAlign, setVAlign, js_getVAlign, getVAlign, js_getRows,
+        getRows, HTMLTableSectionElement(..), gTypeHTMLTableSectionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"insertRow\"]($2); })" js_insertRow
+        :: HTMLTableSectionElement -> Optional Int -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
+insertRow ::
+          (MonadIO m) =>
+            HTMLTableSectionElement -> Maybe Int -> m HTMLElement
+insertRow self index
+  = liftIO (js_insertRow self (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.insertRow Mozilla HTMLTableSectionElement.insertRow documentation> 
+insertRow_ ::
+           (MonadIO m) => HTMLTableSectionElement -> Maybe Int -> m ()
+insertRow_ self index
+  = liftIO (void (js_insertRow self (maybeToOptional index)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteRow\"]($2); })" js_deleteRow
+        :: HTMLTableSectionElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.deleteRow Mozilla HTMLTableSectionElement.deleteRow documentation> 
+deleteRow :: (MonadIO m) => HTMLTableSectionElement -> Int -> m ()
+deleteRow self index = liftIO (js_deleteRow self index)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign
+        :: HTMLTableSectionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
+setAlign ::
+         (MonadIO m, ToJSString val) =>
+           HTMLTableSectionElement -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        HTMLTableSectionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.align Mozilla HTMLTableSectionElement.align documentation> 
+getAlign ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableSectionElement -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"ch\"] = $2; })" js_setCh ::
+        HTMLTableSectionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
+setCh ::
+      (MonadIO m, ToJSString val) =>
+        HTMLTableSectionElement -> val -> m ()
+setCh self val = liftIO (js_setCh self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ch\"]; })" js_getCh ::
+        HTMLTableSectionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.ch Mozilla HTMLTableSectionElement.ch documentation> 
+getCh ::
+      (MonadIO m, FromJSString result) =>
+        HTMLTableSectionElement -> m result
+getCh self = liftIO (fromJSString <$> (js_getCh self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"chOff\"] = $2; })" js_setChOff
+        :: HTMLTableSectionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
+setChOff ::
+         (MonadIO m, ToJSString val) =>
+           HTMLTableSectionElement -> val -> m ()
+setChOff self val = liftIO (js_setChOff self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"chOff\"]; })" js_getChOff ::
+        HTMLTableSectionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.chOff Mozilla HTMLTableSectionElement.chOff documentation> 
+getChOff ::
+         (MonadIO m, FromJSString result) =>
+           HTMLTableSectionElement -> m result
+getChOff self = liftIO (fromJSString <$> (js_getChOff self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vAlign\"] = $2; })"
+        js_setVAlign :: HTMLTableSectionElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
+setVAlign ::
+          (MonadIO m, ToJSString val) =>
+            HTMLTableSectionElement -> val -> m ()
+setVAlign self val = liftIO (js_setVAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vAlign\"]; })" js_getVAlign ::
+        HTMLTableSectionElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.vAlign Mozilla HTMLTableSectionElement.vAlign documentation> 
+getVAlign ::
+          (MonadIO m, FromJSString result) =>
+            HTMLTableSectionElement -> m result
+getVAlign self = liftIO (fromJSString <$> (js_getVAlign self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
+        HTMLTableSectionElement -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement.rows Mozilla HTMLTableSectionElement.rows documentation> 
+getRows ::
+        (MonadIO m) => HTMLTableSectionElement -> m HTMLCollection
+getRows self = liftIO (js_getRows self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTemplateElement.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTemplateElement
+       (js_getContent, getContent, HTMLTemplateElement(..),
+        gTypeHTMLTemplateElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"content\"]; })" js_getContent ::
+        HTMLTemplateElement -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement.content Mozilla HTMLTemplateElement.content documentation> 
+getContent ::
+           (MonadIO m) => HTMLTemplateElement -> m DocumentFragment
+getContent self = liftIO (js_getContent self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTextAreaElement.hs
@@ -0,0 +1,467 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTextAreaElement
+       (js_checkValidity, checkValidity, checkValidity_,
+        js_reportValidity, reportValidity, reportValidity_,
+        js_setCustomValidity, setCustomValidity, js_select, select,
+        js_setRangeText, setRangeText, js_setRangeText4, setRangeText4,
+        js_setSelectionRange, setSelectionRange, js_setAutofocus,
+        setAutofocus, js_getAutofocus, getAutofocus, js_setDirName,
+        setDirName, js_getDirName, getDirName, js_setDisabled, setDisabled,
+        js_getDisabled, getDisabled, js_getForm, getForm, js_setMinLength,
+        setMinLength, js_getMinLength, getMinLength, js_setMaxLength,
+        setMaxLength, js_getMaxLength, getMaxLength, js_setName, setName,
+        js_getName, getName, js_setPlaceholder, setPlaceholder,
+        js_getPlaceholder, getPlaceholder, js_setReadOnly, setReadOnly,
+        js_getReadOnly, getReadOnly, js_setRequired, setRequired,
+        js_getRequired, getRequired, js_setRows, setRows, js_getRows,
+        getRows, js_setCols, setCols, js_getCols, getCols, js_setWrap,
+        setWrap, js_getWrap, getWrap, js_getType, getType,
+        js_setDefaultValue, setDefaultValue, js_getDefaultValue,
+        getDefaultValue, js_setValue, setValue, js_getValue, getValue,
+        js_getTextLength, getTextLength, js_getWillValidate,
+        getWillValidate, js_getValidity, getValidity,
+        js_getValidationMessage, getValidationMessage, js_getLabels,
+        getLabels, js_setSelectionStart, setSelectionStart,
+        js_getSelectionStart, getSelectionStart, js_setSelectionEnd,
+        setSelectionEnd, js_getSelectionEnd, getSelectionEnd,
+        js_setSelectionDirection, setSelectionDirection,
+        js_getSelectionDirection, getSelectionDirection,
+        js_setAutocomplete, setAutocomplete, js_getAutocomplete,
+        getAutocomplete, HTMLTextAreaElement(..), gTypeHTMLTextAreaElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"checkValidity\"]() ? 1 : 0); })" js_checkValidity ::
+        HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
+checkValidity :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+checkValidity self = liftIO (js_checkValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.checkValidity Mozilla HTMLTextAreaElement.checkValidity documentation> 
+checkValidity_ :: (MonadIO m) => HTMLTextAreaElement -> m ()
+checkValidity_ self = liftIO (void (js_checkValidity self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"reportValidity\"]() ? 1 : 0); })" js_reportValidity ::
+        HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
+reportValidity :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+reportValidity self = liftIO (js_reportValidity self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.reportValidity Mozilla HTMLTextAreaElement.reportValidity documentation> 
+reportValidity_ :: (MonadIO m) => HTMLTextAreaElement -> m ()
+reportValidity_ self = liftIO (void (js_reportValidity self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCustomValidity\"]($2); })"
+        js_setCustomValidity :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setCustomValidity Mozilla HTMLTextAreaElement.setCustomValidity documentation> 
+setCustomValidity ::
+                  (MonadIO m, ToJSString error) =>
+                    HTMLTextAreaElement -> error -> m ()
+setCustomValidity self error
+  = liftIO (js_setCustomValidity self (toJSString error))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"select\"](); })" js_select ::
+        HTMLTextAreaElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.select Mozilla HTMLTextAreaElement.select documentation> 
+select :: (MonadIO m) => HTMLTextAreaElement -> m ()
+select self = liftIO (js_select self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setRangeText\"]($2); })"
+        js_setRangeText :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
+setRangeText ::
+             (MonadIO m, ToJSString replacement) =>
+               HTMLTextAreaElement -> replacement -> m ()
+setRangeText self replacement
+  = liftIO (js_setRangeText self (toJSString replacement))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5) => { return $1[\"setRangeText\"]($2, $3, $4,\n$5); })" js_setRangeText4 ::
+        HTMLTextAreaElement ->
+          JSString -> Word -> Word -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setRangeText Mozilla HTMLTextAreaElement.setRangeText documentation> 
+setRangeText4 ::
+              (MonadIO m, ToJSString replacement, ToJSString selectionMode) =>
+                HTMLTextAreaElement ->
+                  replacement -> Word -> Word -> Maybe selectionMode -> m ()
+setRangeText4 self replacement start end selectionMode
+  = liftIO
+      (js_setRangeText4 self (toJSString replacement) start end
+         (toOptionalJSString selectionMode))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setSelectionRange\"]($2, $3,\n$4); })" js_setSelectionRange ::
+        HTMLTextAreaElement ->
+          Optional Int -> Optional Int -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.setSelectionRange Mozilla HTMLTextAreaElement.setSelectionRange documentation> 
+setSelectionRange ::
+                  (MonadIO m, ToJSString direction) =>
+                    HTMLTextAreaElement ->
+                      Maybe Int -> Maybe Int -> Maybe direction -> m ()
+setSelectionRange self start end direction
+  = liftIO
+      (js_setSelectionRange self (maybeToOptional start)
+         (maybeToOptional end)
+         (toOptionalJSString direction))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autofocus\"] = $2; })"
+        js_setAutofocus :: HTMLTextAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
+setAutofocus :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
+setAutofocus self val = liftIO (js_setAutofocus self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autofocus\"] ? 1 : 0); })"
+        js_getAutofocus :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autofocus Mozilla HTMLTextAreaElement.autofocus documentation> 
+getAutofocus :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getAutofocus self = liftIO (js_getAutofocus self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dirName\"] = $2; })"
+        js_setDirName :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
+setDirName ::
+           (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setDirName self val = liftIO (js_setDirName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dirName\"]; })" js_getDirName ::
+        HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.dirName Mozilla HTMLTextAreaElement.dirName documentation> 
+getDirName ::
+           (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getDirName self = liftIO (fromJSString <$> (js_getDirName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: HTMLTextAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+setDisabled :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.disabled Mozilla HTMLTextAreaElement.disabled documentation> 
+getDisabled :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"form\"]; })" js_getForm ::
+        HTMLTextAreaElement -> IO HTMLFormElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.form Mozilla HTMLTextAreaElement.form documentation> 
+getForm :: (MonadIO m) => HTMLTextAreaElement -> m HTMLFormElement
+getForm self = liftIO (js_getForm self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"minLength\"] = $2; })"
+        js_setMinLength :: HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
+setMinLength :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setMinLength self val = liftIO (js_setMinLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"minLength\"]; })"
+        js_getMinLength :: HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.minLength Mozilla HTMLTextAreaElement.minLength documentation> 
+getMinLength :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getMinLength self = liftIO (js_getMinLength self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"maxLength\"] = $2; })"
+        js_setMaxLength :: HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+setMaxLength :: (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setMaxLength self val = liftIO (js_setMaxLength self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxLength\"]; })"
+        js_getMaxLength :: HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.maxLength Mozilla HTMLTextAreaElement.maxLength documentation> 
+getMaxLength :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getMaxLength self = liftIO (js_getMaxLength self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.name Mozilla HTMLTextAreaElement.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"placeholder\"] = $2; })"
+        js_setPlaceholder :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
+setPlaceholder ::
+               (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setPlaceholder self val
+  = liftIO (js_setPlaceholder self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"placeholder\"]; })"
+        js_getPlaceholder :: HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.placeholder Mozilla HTMLTextAreaElement.placeholder documentation> 
+getPlaceholder ::
+               (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getPlaceholder self
+  = liftIO (fromJSString <$> (js_getPlaceholder self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"readOnly\"] = $2; })"
+        js_setReadOnly :: HTMLTextAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+setReadOnly :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
+setReadOnly self val = liftIO (js_setReadOnly self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"readOnly\"] ? 1 : 0); })"
+        js_getReadOnly :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.readOnly Mozilla HTMLTextAreaElement.readOnly documentation> 
+getReadOnly :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getReadOnly self = liftIO (js_getReadOnly self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"required\"] = $2; })"
+        js_setRequired :: HTMLTextAreaElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+setRequired :: (MonadIO m) => HTMLTextAreaElement -> Bool -> m ()
+setRequired self val = liftIO (js_setRequired self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"required\"] ? 1 : 0); })"
+        js_getRequired :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.required Mozilla HTMLTextAreaElement.required documentation> 
+getRequired :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getRequired self = liftIO (js_getRequired self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rows\"] = $2; })" js_setRows ::
+        HTMLTextAreaElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+setRows :: (MonadIO m) => HTMLTextAreaElement -> Word -> m ()
+setRows self val = liftIO (js_setRows self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
+        HTMLTextAreaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.rows Mozilla HTMLTextAreaElement.rows documentation> 
+getRows :: (MonadIO m) => HTMLTextAreaElement -> m Word
+getRows self = liftIO (js_getRows self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"cols\"] = $2; })" js_setCols ::
+        HTMLTextAreaElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+setCols :: (MonadIO m) => HTMLTextAreaElement -> Word -> m ()
+setCols self val = liftIO (js_setCols self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cols\"]; })" js_getCols ::
+        HTMLTextAreaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.cols Mozilla HTMLTextAreaElement.cols documentation> 
+getCols :: (MonadIO m) => HTMLTextAreaElement -> m Word
+getCols self = liftIO (js_getCols self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"wrap\"] = $2; })" js_setWrap ::
+        HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
+setWrap ::
+        (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setWrap self val = liftIO (js_setWrap self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"wrap\"]; })" js_getWrap ::
+        HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.wrap Mozilla HTMLTextAreaElement.wrap documentation> 
+getWrap ::
+        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getWrap self = liftIO (fromJSString <$> (js_getWrap self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.type Mozilla HTMLTextAreaElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultValue\"] = $2; })"
+        js_setDefaultValue :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+setDefaultValue ::
+                (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setDefaultValue self val
+  = liftIO (js_setDefaultValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultValue\"]; })"
+        js_getDefaultValue :: HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.defaultValue Mozilla HTMLTextAreaElement.defaultValue documentation> 
+getDefaultValue ::
+                (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getDefaultValue self
+  = liftIO (fromJSString <$> (js_getDefaultValue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.value Mozilla HTMLTextAreaElement.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textLength\"]; })"
+        js_getTextLength :: HTMLTextAreaElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.textLength Mozilla HTMLTextAreaElement.textLength documentation> 
+getTextLength :: (MonadIO m) => HTMLTextAreaElement -> m Word
+getTextLength self = liftIO (js_getTextLength self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"willValidate\"] ? 1 : 0); })"
+        js_getWillValidate :: HTMLTextAreaElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.willValidate Mozilla HTMLTextAreaElement.willValidate documentation> 
+getWillValidate :: (MonadIO m) => HTMLTextAreaElement -> m Bool
+getWillValidate self = liftIO (js_getWillValidate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validity\"]; })" js_getValidity
+        :: HTMLTextAreaElement -> IO ValidityState
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validity Mozilla HTMLTextAreaElement.validity documentation> 
+getValidity ::
+            (MonadIO m) => HTMLTextAreaElement -> m ValidityState
+getValidity self = liftIO (js_getValidity self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"validationMessage\"]; })"
+        js_getValidationMessage :: HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.validationMessage Mozilla HTMLTextAreaElement.validationMessage documentation> 
+getValidationMessage ::
+                     (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getValidationMessage self
+  = liftIO (fromJSString <$> (js_getValidationMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"labels\"]; })" js_getLabels ::
+        HTMLTextAreaElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.labels Mozilla HTMLTextAreaElement.labels documentation> 
+getLabels :: (MonadIO m) => HTMLTextAreaElement -> m NodeList
+getLabels self = liftIO (js_getLabels self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectionStart\"] = $2; })"
+        js_setSelectionStart :: HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
+setSelectionStart ::
+                  (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setSelectionStart self val = liftIO (js_setSelectionStart self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectionStart\"]; })"
+        js_getSelectionStart :: HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionStart Mozilla HTMLTextAreaElement.selectionStart documentation> 
+getSelectionStart :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getSelectionStart self = liftIO (js_getSelectionStart self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectionEnd\"] = $2; })"
+        js_setSelectionEnd :: HTMLTextAreaElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
+setSelectionEnd ::
+                (MonadIO m) => HTMLTextAreaElement -> Int -> m ()
+setSelectionEnd self val = liftIO (js_setSelectionEnd self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectionEnd\"]; })"
+        js_getSelectionEnd :: HTMLTextAreaElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionEnd Mozilla HTMLTextAreaElement.selectionEnd documentation> 
+getSelectionEnd :: (MonadIO m) => HTMLTextAreaElement -> m Int
+getSelectionEnd self = liftIO (js_getSelectionEnd self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selectionDirection\"] = $2; })"
+        js_setSelectionDirection ::
+        HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
+setSelectionDirection ::
+                      (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setSelectionDirection self val
+  = liftIO (js_setSelectionDirection self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectionDirection\"]; })"
+        js_getSelectionDirection :: HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.selectionDirection Mozilla HTMLTextAreaElement.selectionDirection documentation> 
+getSelectionDirection ::
+                      (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getSelectionDirection self
+  = liftIO (fromJSString <$> (js_getSelectionDirection self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"autocomplete\"] = $2; })"
+        js_setAutocomplete :: HTMLTextAreaElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
+setAutocomplete ::
+                (MonadIO m, ToJSString val) => HTMLTextAreaElement -> val -> m ()
+setAutocomplete self val
+  = liftIO (js_setAutocomplete self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"autocomplete\"]; })"
+        js_getAutocomplete :: HTMLTextAreaElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement.autocomplete Mozilla HTMLTextAreaElement.autocomplete documentation> 
+getAutocomplete ::
+                (MonadIO m, FromJSString result) => HTMLTextAreaElement -> m result
+getAutocomplete self
+  = liftIO (fromJSString <$> (js_getAutocomplete self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTimeElement.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTimeElement
+       (js_setDateTime, setDateTime, js_getDateTime, getDateTime,
+        HTMLTimeElement(..), gTypeHTMLTimeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dateTime\"] = $2; })"
+        js_setDateTime :: HTMLTimeElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
+setDateTime ::
+            (MonadIO m, ToJSString val) => HTMLTimeElement -> val -> m ()
+setDateTime self val
+  = liftIO (js_setDateTime self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dateTime\"]; })" js_getDateTime
+        :: HTMLTimeElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement.dateTime Mozilla HTMLTimeElement.dateTime documentation> 
+getDateTime ::
+            (MonadIO m, FromJSString result) => HTMLTimeElement -> m result
+getDateTime self = liftIO (fromJSString <$> (js_getDateTime self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTitleElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTitleElement
+       (js_setText, setText, js_getText, getText, HTMLTitleElement(..),
+        gTypeHTMLTitleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        HTMLTitleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) => HTMLTitleElement -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        HTMLTitleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement.text Mozilla HTMLTitleElement.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) => HTMLTitleElement -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLTrackElement.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLTrackElement
+       (pattern NONE, pattern LOADING, pattern LOADED, pattern ERROR,
+        js_setKind, setKind, js_getKind, getKind, js_setSrc, setSrc,
+        js_getSrc, getSrc, js_setSrclang, setSrclang, js_getSrclang,
+        getSrclang, js_setLabel, setLabel, js_getLabel, getLabel,
+        js_setDefault, setDefault, js_getDefault, getDefault,
+        js_getReadyState, getReadyState, js_getTrack, getTrack,
+        HTMLTrackElement(..), gTypeHTMLTrackElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern NONE = 0
+pattern LOADING = 1
+pattern LOADED = 2
+pattern ERROR = 3
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
+        HTMLTrackElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
+setKind ::
+        (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setKind self val = liftIO (js_setKind self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        HTMLTrackElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.kind Mozilla HTMLTrackElement.kind documentation> 
+getKind ::
+        (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
+getKind self = liftIO (fromJSString <$> (js_getKind self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"src\"] = $2; })" js_setSrc ::
+        HTMLTrackElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
+setSrc ::
+       (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"src\"]; })" js_getSrc ::
+        HTMLTrackElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.src Mozilla HTMLTrackElement.src documentation> 
+getSrc ::
+       (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"srclang\"] = $2; })"
+        js_setSrclang :: HTMLTrackElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
+setSrclang ::
+           (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setSrclang self val = liftIO (js_setSrclang self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"srclang\"]; })" js_getSrclang ::
+        HTMLTrackElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.srclang Mozilla HTMLTrackElement.srclang documentation> 
+getSrclang ::
+           (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
+getSrclang self = liftIO (fromJSString <$> (js_getSrclang self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: HTMLTrackElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) => HTMLTrackElement -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        HTMLTrackElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.label Mozilla HTMLTrackElement.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => HTMLTrackElement -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"default\"] = $2; })"
+        js_setDefault :: HTMLTrackElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+setDefault :: (MonadIO m) => HTMLTrackElement -> Bool -> m ()
+setDefault self val = liftIO (js_setDefault self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"default\"] ? 1 : 0); })"
+        js_getDefault :: HTMLTrackElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.default Mozilla HTMLTrackElement.default documentation> 
+getDefault :: (MonadIO m) => HTMLTrackElement -> m Bool
+getDefault self = liftIO (js_getDefault self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: HTMLTrackElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.readyState Mozilla HTMLTrackElement.readyState documentation> 
+getReadyState :: (MonadIO m) => HTMLTrackElement -> m Word
+getReadyState self = liftIO (js_getReadyState self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        HTMLTrackElement -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement.track Mozilla HTMLTrackElement.track documentation> 
+getTrack :: (MonadIO m) => HTMLTrackElement -> m TextTrack
+getTrack self = liftIO (js_getTrack self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLUListElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLUListElement
+       (js_setCompact, setCompact, js_getCompact, getCompact, js_setType,
+        setType, js_getType, getType, HTMLUListElement(..),
+        gTypeHTMLUListElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"compact\"] = $2; })"
+        js_setCompact :: HTMLUListElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+setCompact :: (MonadIO m) => HTMLUListElement -> Bool -> m ()
+setCompact self val = liftIO (js_setCompact self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"compact\"] ? 1 : 0); })"
+        js_getCompact :: HTMLUListElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.compact Mozilla HTMLUListElement.compact documentation> 
+getCompact :: (MonadIO m) => HTMLUListElement -> m Bool
+getCompact self = liftIO (js_getCompact self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        HTMLUListElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => HTMLUListElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        HTMLUListElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement.type Mozilla HTMLUListElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => HTMLUListElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HTMLVideoElement.hs
@@ -0,0 +1,245 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HTMLVideoElement
+       (js_webkitEnterFullscreen, webkitEnterFullscreen,
+        js_webkitExitFullscreen, webkitExitFullscreen,
+        js_webkitEnterFullScreen, webkitEnterFullScreen,
+        js_webkitExitFullScreen, webkitExitFullScreen,
+        js_webkitSupportsPresentationMode, webkitSupportsPresentationMode,
+        webkitSupportsPresentationMode_, js_webkitSetPresentationMode,
+        webkitSetPresentationMode, js_setWidth, setWidth, js_getWidth,
+        getWidth, js_setHeight, setHeight, js_getHeight, getHeight,
+        js_getVideoWidth, getVideoWidth, js_getVideoHeight, getVideoHeight,
+        js_setPoster, setPoster, js_getPoster, getPoster,
+        js_setPlaysInline, setPlaysInline, js_getPlaysInline,
+        getPlaysInline, js_getWebkitSupportsFullscreen,
+        getWebkitSupportsFullscreen, js_getWebkitDisplayingFullscreen,
+        getWebkitDisplayingFullscreen,
+        js_setWebkitWirelessVideoPlaybackDisabled,
+        setWebkitWirelessVideoPlaybackDisabled,
+        js_getWebkitWirelessVideoPlaybackDisabled,
+        getWebkitWirelessVideoPlaybackDisabled,
+        js_getWebkitDecodedFrameCount, getWebkitDecodedFrameCount,
+        js_getWebkitDroppedFrameCount, getWebkitDroppedFrameCount,
+        js_getWebkitPresentationMode, getWebkitPresentationMode,
+        HTMLVideoElement(..), gTypeHTMLVideoElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"webkitEnterFullscreen\"](); })"
+        js_webkitEnterFullscreen :: HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullscreen Mozilla HTMLVideoElement.webkitEnterFullscreen documentation> 
+webkitEnterFullscreen :: (MonadIO m) => HTMLVideoElement -> m ()
+webkitEnterFullscreen self = liftIO (js_webkitEnterFullscreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullscreen\"](); })"
+        js_webkitExitFullscreen :: HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullscreen Mozilla HTMLVideoElement.webkitExitFullscreen documentation> 
+webkitExitFullscreen :: (MonadIO m) => HTMLVideoElement -> m ()
+webkitExitFullscreen self = liftIO (js_webkitExitFullscreen self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"webkitEnterFullScreen\"](); })"
+        js_webkitEnterFullScreen :: HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitEnterFullScreen Mozilla HTMLVideoElement.webkitEnterFullScreen documentation> 
+webkitEnterFullScreen :: (MonadIO m) => HTMLVideoElement -> m ()
+webkitEnterFullScreen self = liftIO (js_webkitEnterFullScreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitExitFullScreen\"](); })"
+        js_webkitExitFullScreen :: HTMLVideoElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitExitFullScreen Mozilla HTMLVideoElement.webkitExitFullScreen documentation> 
+webkitExitFullScreen :: (MonadIO m) => HTMLVideoElement -> m ()
+webkitExitFullScreen self = liftIO (js_webkitExitFullScreen self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"webkitSupportsPresentationMode\"]($2) ? 1 : 0); })"
+        js_webkitSupportsPresentationMode ::
+        HTMLVideoElement -> JSVal -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
+webkitSupportsPresentationMode ::
+                               (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m Bool
+webkitSupportsPresentationMode self mode
+  = liftIO (js_webkitSupportsPresentationMode self (pToJSVal mode))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsPresentationMode Mozilla HTMLVideoElement.webkitSupportsPresentationMode documentation> 
+webkitSupportsPresentationMode_ ::
+                                (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m ()
+webkitSupportsPresentationMode_ self mode
+  = liftIO
+      (void (js_webkitSupportsPresentationMode self (pToJSVal mode)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"webkitSetPresentationMode\"]($2); })"
+        js_webkitSetPresentationMode :: HTMLVideoElement -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSetPresentationMode Mozilla HTMLVideoElement.webkitSetPresentationMode documentation> 
+webkitSetPresentationMode ::
+                          (MonadIO m) => HTMLVideoElement -> VideoPresentationMode -> m ()
+webkitSetPresentationMode self mode
+  = liftIO (js_webkitSetPresentationMode self (pToJSVal mode))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: HTMLVideoElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+setWidth :: (MonadIO m) => HTMLVideoElement -> Word -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.width Mozilla HTMLVideoElement.width documentation> 
+getWidth :: (MonadIO m) => HTMLVideoElement -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: HTMLVideoElement -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+setHeight :: (MonadIO m) => HTMLVideoElement -> Word -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.height Mozilla HTMLVideoElement.height documentation> 
+getHeight :: (MonadIO m) => HTMLVideoElement -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"videoWidth\"]; })"
+        js_getVideoWidth :: HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoWidth Mozilla HTMLVideoElement.videoWidth documentation> 
+getVideoWidth :: (MonadIO m) => HTMLVideoElement -> m Word
+getVideoWidth self = liftIO (js_getVideoWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"videoHeight\"]; })"
+        js_getVideoHeight :: HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.videoHeight Mozilla HTMLVideoElement.videoHeight documentation> 
+getVideoHeight :: (MonadIO m) => HTMLVideoElement -> m Word
+getVideoHeight self = liftIO (js_getVideoHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"poster\"] = $2; })"
+        js_setPoster :: HTMLVideoElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
+setPoster ::
+          (MonadIO m, ToJSString val) => HTMLVideoElement -> val -> m ()
+setPoster self val = liftIO (js_setPoster self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"poster\"]; })" js_getPoster ::
+        HTMLVideoElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.poster Mozilla HTMLVideoElement.poster documentation> 
+getPoster ::
+          (MonadIO m, FromJSString result) => HTMLVideoElement -> m result
+getPoster self = liftIO (fromJSString <$> (js_getPoster self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"playsInline\"] = $2; })"
+        js_setPlaysInline :: HTMLVideoElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
+setPlaysInline :: (MonadIO m) => HTMLVideoElement -> Bool -> m ()
+setPlaysInline self val = liftIO (js_setPlaysInline self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"playsInline\"] ? 1 : 0); })"
+        js_getPlaysInline :: HTMLVideoElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.playsInline Mozilla HTMLVideoElement.playsInline documentation> 
+getPlaysInline :: (MonadIO m) => HTMLVideoElement -> m Bool
+getPlaysInline self = liftIO (js_getPlaysInline self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitSupportsFullscreen\"] ? 1 : 0); })"
+        js_getWebkitSupportsFullscreen :: HTMLVideoElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitSupportsFullscreen Mozilla HTMLVideoElement.webkitSupportsFullscreen documentation> 
+getWebkitSupportsFullscreen ::
+                            (MonadIO m) => HTMLVideoElement -> m Bool
+getWebkitSupportsFullscreen self
+  = liftIO (js_getWebkitSupportsFullscreen self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitDisplayingFullscreen\"] ? 1 : 0); })"
+        js_getWebkitDisplayingFullscreen :: HTMLVideoElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDisplayingFullscreen Mozilla HTMLVideoElement.webkitDisplayingFullscreen documentation> 
+getWebkitDisplayingFullscreen ::
+                              (MonadIO m) => HTMLVideoElement -> m Bool
+getWebkitDisplayingFullscreen self
+  = liftIO (js_getWebkitDisplayingFullscreen self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"webkitWirelessVideoPlaybackDisabled\"] = $2; })"
+        js_setWebkitWirelessVideoPlaybackDisabled ::
+        HTMLVideoElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
+setWebkitWirelessVideoPlaybackDisabled ::
+                                       (MonadIO m) => HTMLVideoElement -> Bool -> m ()
+setWebkitWirelessVideoPlaybackDisabled self val
+  = liftIO (js_setWebkitWirelessVideoPlaybackDisabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitWirelessVideoPlaybackDisabled\"] ? 1 : 0); })"
+        js_getWebkitWirelessVideoPlaybackDisabled ::
+        HTMLVideoElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitWirelessVideoPlaybackDisabled Mozilla HTMLVideoElement.webkitWirelessVideoPlaybackDisabled documentation> 
+getWebkitWirelessVideoPlaybackDisabled ::
+                                       (MonadIO m) => HTMLVideoElement -> m Bool
+getWebkitWirelessVideoPlaybackDisabled self
+  = liftIO (js_getWebkitWirelessVideoPlaybackDisabled self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitDecodedFrameCount\"]; })"
+        js_getWebkitDecodedFrameCount :: HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDecodedFrameCount Mozilla HTMLVideoElement.webkitDecodedFrameCount documentation> 
+getWebkitDecodedFrameCount ::
+                           (MonadIO m) => HTMLVideoElement -> m Word
+getWebkitDecodedFrameCount self
+  = liftIO (js_getWebkitDecodedFrameCount self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitDroppedFrameCount\"]; })"
+        js_getWebkitDroppedFrameCount :: HTMLVideoElement -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitDroppedFrameCount Mozilla HTMLVideoElement.webkitDroppedFrameCount documentation> 
+getWebkitDroppedFrameCount ::
+                           (MonadIO m) => HTMLVideoElement -> m Word
+getWebkitDroppedFrameCount self
+  = liftIO (js_getWebkitDroppedFrameCount self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitPresentationMode\"]; })"
+        js_getWebkitPresentationMode :: HTMLVideoElement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement.webkitPresentationMode Mozilla HTMLVideoElement.webkitPresentationMode documentation> 
+getWebkitPresentationMode ::
+                          (MonadIO m) => HTMLVideoElement -> m VideoPresentationMode
+getWebkitPresentationMode self
+  = liftIO
+      ((js_getWebkitPresentationMode self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/HashChangeEvent.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.HashChangeEvent
+       (js_newHashChangeEvent, newHashChangeEvent, js_initHashChangeEvent,
+        initHashChangeEvent, js_getOldURL, getOldURL, js_getNewURL,
+        getNewURL, HashChangeEvent(..), gTypeHashChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"HashChangeEvent\"]($1,\n$2); })" js_newHashChangeEvent ::
+        JSString -> Optional HashChangeEventInit -> IO HashChangeEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation> 
+newHashChangeEvent ::
+                   (MonadIO m, ToJSString type') =>
+                     type' -> Maybe HashChangeEventInit -> m HashChangeEvent
+newHashChangeEvent type' eventInitDict
+  = liftIO
+      (js_newHashChangeEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initHashChangeEvent\"]($2,\n$3, $4, $5, $6); })"
+        js_initHashChangeEvent ::
+        HashChangeEvent ->
+          Optional JSString ->
+            Bool -> Bool -> Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.initHashChangeEvent Mozilla HashChangeEvent.initHashChangeEvent documentation> 
+initHashChangeEvent ::
+                    (MonadIO m, ToJSString type', ToJSString oldURL,
+                     ToJSString newURL) =>
+                      HashChangeEvent ->
+                        Maybe type' -> Bool -> Bool -> Maybe oldURL -> Maybe newURL -> m ()
+initHashChangeEvent self type' canBubble cancelable oldURL newURL
+  = liftIO
+      (js_initHashChangeEvent self (toOptionalJSString type') canBubble
+         cancelable
+         (toOptionalJSString oldURL)
+         (toOptionalJSString newURL))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"oldURL\"]; })" js_getOldURL ::
+        HashChangeEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.oldURL Mozilla HashChangeEvent.oldURL documentation> 
+getOldURL ::
+          (MonadIO m, FromJSString result) => HashChangeEvent -> m result
+getOldURL self = liftIO (fromJSString <$> (js_getOldURL self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newURL\"]; })" js_getNewURL ::
+        HashChangeEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent.newURL Mozilla HashChangeEvent.newURL documentation> 
+getNewURL ::
+          (MonadIO m, FromJSString result) => HashChangeEvent -> m result
+getNewURL self = liftIO (fromJSString <$> (js_getNewURL self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Headers.hs b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Headers.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Headers
+       (js_append, append, js_delete, delete, js_get, get, get_,
+        getUnsafe, getUnchecked, js_has, has, has_, js_set, set,
+        Headers(..), gTypeHeaders)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
+        :: Headers -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.append Mozilla Headers.append documentation> 
+append ::
+       (MonadIO m, ToJSString name, ToJSString value) =>
+         Headers -> name -> value -> m ()
+append self name value
+  = liftIO (js_append self (toJSString name) (toJSString value))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
+        Headers -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.delete Mozilla Headers.delete documentation> 
+delete :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
+delete self name = liftIO (js_delete self (toJSString name))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        Headers -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
+get ::
+    (MonadIO m, ToJSString name, FromJSString result) =>
+      Headers -> name -> m (Maybe result)
+get self name
+  = liftIO (fromMaybeJSString <$> (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
+get_ :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
+getUnsafe ::
+          (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
+            Headers -> name -> m result
+getUnsafe self name
+  = liftIO
+      ((fromMaybeJSString <$> (js_get self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.get Mozilla Headers.get documentation> 
+getUnchecked ::
+             (MonadIO m, ToJSString name, FromJSString result) =>
+               Headers -> name -> m result
+getUnchecked self name
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_get self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
+        :: Headers -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
+has :: (MonadIO m, ToJSString name) => Headers -> name -> m Bool
+has self name = liftIO (js_has self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.has Mozilla Headers.has documentation> 
+has_ :: (MonadIO m, ToJSString name) => Headers -> name -> m ()
+has_ self name = liftIO (void (js_has self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })" js_set ::
+        Headers -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Headers.set Mozilla Headers.set documentation> 
+set ::
+    (MonadIO m, ToJSString name, ToJSString value) =>
+      Headers -> name -> value -> m ()
+set self name value
+  = liftIO (js_set self (toJSString name) (toJSString value))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/History.hs b/src/GHCJS/DOM/JSFFI/Generated/History.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/History.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.History
+       (js_back, back, js_forward, forward, js_go, go, js_pushState,
+        pushState, js_replaceState, replaceState, js_getLength, getLength,
+        js_setScrollRestoration, setScrollRestoration,
+        js_getScrollRestoration, getScrollRestoration, js_getState,
+        getState, History(..), gTypeHistory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"back\"](); })" js_back ::
+        History -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.back Mozilla History.back documentation> 
+back :: (MonadIO m) => History -> m ()
+back self = liftIO (js_back self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"forward\"](); })" js_forward ::
+        History -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.forward Mozilla History.forward documentation> 
+forward :: (MonadIO m) => History -> m ()
+forward self = liftIO (js_forward self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"go\"]($2); })" js_go ::
+        History -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.go Mozilla History.go documentation> 
+go :: (MonadIO m) => History -> Maybe Int -> m ()
+go self distance = liftIO (js_go self (maybeToOptional distance))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"pushState\"]($2, $3, $4); })"
+        js_pushState ::
+        History -> JSVal -> JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.pushState Mozilla History.pushState documentation> 
+pushState ::
+          (MonadIO m, ToJSVal data', ToJSString title, ToJSString url) =>
+            History -> data' -> title -> Maybe url -> m ()
+pushState self data' title url
+  = liftIO
+      (toJSVal data' >>= \ data'' -> js_pushState self data''
+         (toJSString title)
+         (toOptionalJSString url))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"replaceState\"]($2, $3, $4); })"
+        js_replaceState ::
+        History -> JSVal -> JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.replaceState Mozilla History.replaceState documentation> 
+replaceState ::
+             (MonadIO m, ToJSVal data', ToJSString title, ToJSString url) =>
+               History -> data' -> title -> Maybe url -> m ()
+replaceState self data' title url
+  = liftIO
+      (toJSVal data' >>= \ data'' -> js_replaceState self data''
+         (toJSString title)
+         (toOptionalJSString url))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        History -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.length Mozilla History.length documentation> 
+getLength :: (MonadIO m) => History -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"scrollRestoration\"] = $2; })"
+        js_setScrollRestoration :: History -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
+setScrollRestoration ::
+                     (MonadIO m) => History -> ScrollRestoration -> m ()
+setScrollRestoration self val
+  = liftIO (js_setScrollRestoration self (pToJSVal val))
+ 
+foreign import javascript safe "(($1) => { return $1[\"scrollRestoration\"]; })"
+        js_getScrollRestoration :: History -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.scrollRestoration Mozilla History.scrollRestoration documentation> 
+getScrollRestoration ::
+                     (MonadIO m) => History -> m ScrollRestoration
+getScrollRestoration self
+  = liftIO ((js_getScrollRestoration self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
+        History -> IO SerializedScriptValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/History.state Mozilla History.state documentation> 
+getState :: (MonadIO m) => History -> m SerializedScriptValue
+getState self = liftIO (js_getState self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursor.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBCursor
+       (js_update, update, update_, js_advance, advance, js_continue,
+        continue, js_continuePrimaryKey, continuePrimaryKey, js_delete,
+        delete, delete_, js_getSource, getSource, js_getDirection,
+        getDirection, js_getKey, getKey, js_getPrimaryKey, getPrimaryKey,
+        IDBCursor(..), gTypeIDBCursor, IsIDBCursor, toIDBCursor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"update\"]($2); })" js_update ::
+        IDBCursor -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+update ::
+       (MonadIO m, IsIDBCursor self, ToJSVal value) =>
+         self -> value -> m IDBRequest
+update self value
+  = liftIO
+      (toJSVal value >>= \ value' -> js_update (toIDBCursor self) value')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.update Mozilla IDBCursor.update documentation> 
+update_ ::
+        (MonadIO m, IsIDBCursor self, ToJSVal value) =>
+          self -> value -> m ()
+update_ self value
+  = liftIO
+      (void
+         (toJSVal value >>=
+            \ value' -> js_update (toIDBCursor self) value'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"advance\"]($2); })" js_advance ::
+        IDBCursor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.advance Mozilla IDBCursor.advance documentation> 
+advance :: (MonadIO m, IsIDBCursor self) => self -> Word -> m ()
+advance self count = liftIO (js_advance (toIDBCursor self) count)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"continue\"]($2); })" js_continue
+        :: IDBCursor -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continue Mozilla IDBCursor.continue documentation> 
+continue ::
+         (MonadIO m, IsIDBCursor self, ToJSVal key) =>
+           self -> Maybe key -> m ()
+continue self key
+  = liftIO
+      (mapM toJSVal key >>=
+         \ key' -> js_continue (toIDBCursor self) (maybeToOptional key'))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"continuePrimaryKey\"]($2, $3); })"
+        js_continuePrimaryKey :: IDBCursor -> JSVal -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.continuePrimaryKey Mozilla IDBCursor.continuePrimaryKey documentation> 
+continuePrimaryKey ::
+                   (MonadIO m, IsIDBCursor self, ToJSVal key, ToJSVal primaryKey) =>
+                     self -> key -> primaryKey -> m ()
+continuePrimaryKey self key primaryKey
+  = liftIO
+      (toJSVal primaryKey >>=
+         \ primaryKey' ->
+           toJSVal key >>=
+             \ key' -> js_continuePrimaryKey (toIDBCursor self) key'
+             primaryKey')
+ 
+foreign import javascript safe "(($1) => { return $1[\"delete\"](); })" js_delete ::
+        IDBCursor -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+delete :: (MonadIO m, IsIDBCursor self) => self -> m IDBRequest
+delete self = liftIO (js_delete (toIDBCursor self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.delete Mozilla IDBCursor.delete documentation> 
+delete_ :: (MonadIO m, IsIDBCursor self) => self -> m ()
+delete_ self = liftIO (void (js_delete (toIDBCursor self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
+        IDBCursor -> IO IDBCursorSource
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.source Mozilla IDBCursor.source documentation> 
+getSource ::
+          (MonadIO m, IsIDBCursor self) => self -> m IDBCursorSource
+getSource self = liftIO (js_getSource (toIDBCursor self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: IDBCursor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.direction Mozilla IDBCursor.direction documentation> 
+getDirection ::
+             (MonadIO m, IsIDBCursor self) => self -> m IDBCursorDirection
+getDirection self
+  = liftIO
+      ((js_getDirection (toIDBCursor self)) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
+        IDBCursor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.key Mozilla IDBCursor.key documentation> 
+getKey :: (MonadIO m, IsIDBCursor self) => self -> m JSVal
+getKey self = liftIO (js_getKey (toIDBCursor self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"primaryKey\"]; })"
+        js_getPrimaryKey :: IDBCursor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor.primaryKey Mozilla IDBCursor.primaryKey documentation> 
+getPrimaryKey :: (MonadIO m, IsIDBCursor self) => self -> m JSVal
+getPrimaryKey self = liftIO (js_getPrimaryKey (toIDBCursor self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBCursorWithValue.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBCursorWithValue
+       (js_getValue, getValue, IDBCursorWithValue(..),
+        gTypeIDBCursorWithValue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        IDBCursorWithValue -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue.value Mozilla IDBCursorWithValue.value documentation> 
+getValue :: (MonadIO m) => IDBCursorWithValue -> m JSVal
+getValue self = liftIO (js_getValue self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBDatabase.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBDatabase
+       (js_createObjectStore, createObjectStore, createObjectStore_,
+        js_deleteObjectStore, deleteObjectStore, js_transaction,
+        transaction, transaction_, js_close, close, js_getName, getName,
+        js_getVersion, getVersion, js_getObjectStoreNames,
+        getObjectStoreNames, abort, closeEvent, error, versionChange,
+        IDBDatabase(..), gTypeIDBDatabase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createObjectStore\"]($2, $3); })"
+        js_createObjectStore ::
+        IDBDatabase ->
+          JSString -> Optional IDBObjectStoreParameters -> IO IDBObjectStore
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
+createObjectStore ::
+                  (MonadIO m, ToJSString name) =>
+                    IDBDatabase ->
+                      name -> Maybe IDBObjectStoreParameters -> m IDBObjectStore
+createObjectStore self name parameters
+  = liftIO
+      (js_createObjectStore self (toJSString name)
+         (maybeToOptional parameters))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.createObjectStore Mozilla IDBDatabase.createObjectStore documentation> 
+createObjectStore_ ::
+                   (MonadIO m, ToJSString name) =>
+                     IDBDatabase -> name -> Maybe IDBObjectStoreParameters -> m ()
+createObjectStore_ self name parameters
+  = liftIO
+      (void
+         (js_createObjectStore self (toJSString name)
+            (maybeToOptional parameters)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteObjectStore\"]($2); })"
+        js_deleteObjectStore :: IDBDatabase -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.deleteObjectStore Mozilla IDBDatabase.deleteObjectStore documentation> 
+deleteObjectStore ::
+                  (MonadIO m, ToJSString name) => IDBDatabase -> name -> m ()
+deleteObjectStore self name
+  = liftIO (js_deleteObjectStore self (toJSString name))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"transaction\"]($2, $3); })"
+        js_transaction ::
+        IDBDatabase ->
+          StringOrStrings -> Optional IDBTransactionMode -> IO IDBTransaction
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction ::
+            (MonadIO m, IsStringOrStrings storeNames) =>
+              IDBDatabase ->
+                storeNames -> Maybe IDBTransactionMode -> m IDBTransaction
+transaction self storeNames mode
+  = liftIO
+      (toJSVal storeNames >>=
+         \ storeNames' -> js_transaction self (StringOrStrings storeNames')
+         (maybeToOptional mode))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.transaction Mozilla IDBDatabase.transaction documentation> 
+transaction_ ::
+             (MonadIO m, IsStringOrStrings storeNames) =>
+               IDBDatabase -> storeNames -> Maybe IDBTransactionMode -> m ()
+transaction_ self storeNames mode
+  = liftIO
+      (void
+         (toJSVal storeNames >>=
+            \ storeNames' -> js_transaction self (StringOrStrings storeNames')
+            (maybeToOptional mode)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        IDBDatabase -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.close Mozilla IDBDatabase.close documentation> 
+close :: (MonadIO m) => IDBDatabase -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        IDBDatabase -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.name Mozilla IDBDatabase.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => IDBDatabase -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"version\"]; })" js_getVersion ::
+        IDBDatabase -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.version Mozilla IDBDatabase.version documentation> 
+getVersion :: (MonadIO m) => IDBDatabase -> m Word64
+getVersion self = liftIO (round <$> (js_getVersion self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"objectStoreNames\"]; })"
+        js_getObjectStoreNames :: IDBDatabase -> IO DOMStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.objectStoreNames Mozilla IDBDatabase.objectStoreNames documentation> 
+getObjectStoreNames ::
+                    (MonadIO m) => IDBDatabase -> m DOMStringList
+getObjectStoreNames self = liftIO (js_getObjectStoreNames self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onabort Mozilla IDBDatabase.onabort documentation> 
+abort :: EventName IDBDatabase Event
+abort = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onclose Mozilla IDBDatabase.onclose documentation> 
+closeEvent :: EventName IDBDatabase CloseEvent
+closeEvent = unsafeEventNameAsync (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onerror Mozilla IDBDatabase.onerror documentation> 
+error :: EventName IDBDatabase Event
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase.onversionchange Mozilla IDBDatabase.onversionchange documentation> 
+versionChange :: EventName IDBDatabase IDBVersionChangeEvent
+versionChange = unsafeEventName (toJSString "versionchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBFactory.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBFactory
+       (js_open, open, open_, js_deleteDatabase, deleteDatabase,
+        deleteDatabase_, js_cmp, cmp, cmp_, IDBFactory(..),
+        gTypeIDBFactory)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })" js_open ::
+        IDBFactory -> JSString -> Optional Double -> IO IDBOpenDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
+open ::
+     (MonadIO m, ToJSString name) =>
+       IDBFactory -> name -> Maybe Word64 -> m IDBOpenDBRequest
+open self name version
+  = liftIO
+      (js_open self (toJSString name)
+         (maybeToOptional (fmap fromIntegral version)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.open Mozilla IDBFactory.open documentation> 
+open_ ::
+      (MonadIO m, ToJSString name) =>
+        IDBFactory -> name -> Maybe Word64 -> m ()
+open_ self name version
+  = liftIO
+      (void
+         (js_open self (toJSString name)
+            (maybeToOptional (fmap fromIntegral version))))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteDatabase\"]($2); })"
+        js_deleteDatabase :: IDBFactory -> JSString -> IO IDBOpenDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
+deleteDatabase ::
+               (MonadIO m, ToJSString name) =>
+                 IDBFactory -> name -> m IDBOpenDBRequest
+deleteDatabase self name
+  = liftIO (js_deleteDatabase self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.deleteDatabase Mozilla IDBFactory.deleteDatabase documentation> 
+deleteDatabase_ ::
+                (MonadIO m, ToJSString name) => IDBFactory -> name -> m ()
+deleteDatabase_ self name
+  = liftIO (void (js_deleteDatabase self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"cmp\"]($2, $3); })" js_cmp ::
+        IDBFactory -> JSVal -> JSVal -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
+cmp ::
+    (MonadIO m, ToJSVal first, ToJSVal second) =>
+      IDBFactory -> first -> second -> m Int
+cmp self first second
+  = liftIO
+      (toJSVal second >>=
+         \ second' ->
+           toJSVal first >>= \ first' -> js_cmp self first' second')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory.cmp Mozilla IDBFactory.cmp documentation> 
+cmp_ ::
+     (MonadIO m, ToJSVal first, ToJSVal second) =>
+       IDBFactory -> first -> second -> m ()
+cmp_ self first second
+  = liftIO
+      (void
+         (toJSVal second >>=
+            \ second' ->
+              toJSVal first >>= \ first' -> js_cmp self first' second'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBIndex.hs
@@ -0,0 +1,361 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBIndex
+       (js_openCursorRange, openCursorRange, openCursorRange_,
+        js_openCursor, openCursor, openCursor_, js_openKeyCursorRange,
+        openKeyCursorRange, openKeyCursorRange_, js_openKeyCursor,
+        openKeyCursor, openKeyCursor_, js_getRange, getRange, getRange_,
+        js_get, get, get_, js_getKeyRange, getKeyRange, getKeyRange_,
+        js_getKey, getKey, getKey_, js_getAllRange, getAllRange,
+        getAllRange_, js_getAll, getAll, getAll_, js_getAllKeysRange,
+        getAllKeysRange, getAllKeysRange_, js_getAllKeys, getAllKeys,
+        getAllKeys_, js_countRange, countRange, countRange_, js_count,
+        count, count_, js_setName, setName, js_getName, getName,
+        js_getObjectStore, getObjectStore, js_getKeyPath, getKeyPath,
+        getKeyPathUnsafe, getKeyPathUnchecked, js_getMultiEntry,
+        getMultiEntry, js_getUnique, getUnique, IDBIndex(..),
+        gTypeIDBIndex)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursorRange ::
+        IDBIndex ->
+          Optional IDBKeyRange ->
+            Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorRange ::
+                (MonadIO m) =>
+                  IDBIndex ->
+                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
+openCursorRange self range direction
+  = liftIO
+      (js_openCursorRange self (maybeToOptional range)
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursorRange_ ::
+                 (MonadIO m) =>
+                   IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
+openCursorRange_ self range direction
+  = liftIO
+      (void
+         (js_openCursorRange self (maybeToOptional range)
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursor ::
+        IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSVal key) =>
+             IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
+openCursor self key direction
+  = liftIO
+      (toJSVal key >>= \ key' -> js_openCursor self key'
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openCursor Mozilla IDBIndex.openCursor documentation> 
+openCursor_ ::
+            (MonadIO m, ToJSVal key) =>
+              IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
+openCursor_ self key direction
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_openCursor self key'
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursorRange ::
+        IDBIndex ->
+          Optional IDBKeyRange ->
+            Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorRange ::
+                   (MonadIO m) =>
+                     IDBIndex ->
+                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursorRange self range direction
+  = liftIO
+      (js_openKeyCursorRange self (maybeToOptional range)
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursorRange_ ::
+                    (MonadIO m) =>
+                      IDBIndex -> Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
+openKeyCursorRange_ self range direction
+  = liftIO
+      (void
+         (js_openKeyCursorRange self (maybeToOptional range)
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursor ::
+        IDBIndex -> JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursor ::
+              (MonadIO m, ToJSVal key) =>
+                IDBIndex -> key -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursor self key direction
+  = liftIO
+      (toJSVal key >>= \ key' -> js_openKeyCursor self key'
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.openKeyCursor Mozilla IDBIndex.openKeyCursor documentation> 
+openKeyCursor_ ::
+               (MonadIO m, ToJSVal key) =>
+                 IDBIndex -> key -> Maybe IDBCursorDirection -> m ()
+openKeyCursor_ self key direction
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_openKeyCursor self key'
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_getRange ::
+        IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getRange ::
+         (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+getRange self key = liftIO (js_getRange self (maybeToOptional key))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+getRange_ :: (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
+getRange_ self key
+  = liftIO (void (js_getRange self (maybeToOptional key)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        IDBIndex -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+get :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
+get self key = liftIO (toJSVal key >>= \ key' -> js_get self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.get Mozilla IDBIndex.get documentation> 
+get_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
+get_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKeyRange
+        :: IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyRange ::
+            (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+getKeyRange self key
+  = liftIO (js_getKeyRange self (maybeToOptional key))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKeyRange_ ::
+             (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
+getKeyRange_ self key
+  = liftIO (void (js_getKeyRange self (maybeToOptional key)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKey ::
+        IDBIndex -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKey ::
+       (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
+getKey self key
+  = liftIO (toJSVal key >>= \ key' -> js_getKey self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getKey Mozilla IDBIndex.getKey documentation> 
+getKey_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
+getKey_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })"
+        js_getAllRange ::
+        IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
+getAllRange ::
+            (MonadIO m) =>
+              IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
+getAllRange self range count
+  = liftIO
+      (js_getAllRange self (maybeToOptional range)
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
+getAllRange_ ::
+             (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
+getAllRange_ self range count
+  = liftIO
+      (void
+         (js_getAllRange self (maybeToOptional range)
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })" js_getAll
+        :: IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
+getAll ::
+       (MonadIO m, ToJSVal key) =>
+         IDBIndex -> key -> Maybe Word -> m IDBRequest
+getAll self key count
+  = liftIO
+      (toJSVal key >>= \ key' -> js_getAll self key'
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAll Mozilla IDBIndex.getAll documentation> 
+getAll_ ::
+        (MonadIO m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
+getAll_ self key count
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_getAll self key'
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
+        js_getAllKeysRange ::
+        IDBIndex -> Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
+getAllKeysRange ::
+                (MonadIO m) =>
+                  IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
+getAllKeysRange self range count
+  = liftIO
+      (js_getAllKeysRange self (maybeToOptional range)
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
+getAllKeysRange_ ::
+                 (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> Maybe Word -> m ()
+getAllKeysRange_ self range count
+  = liftIO
+      (void
+         (js_getAllKeysRange self (maybeToOptional range)
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
+        js_getAllKeys ::
+        IDBIndex -> JSVal -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
+getAllKeys ::
+           (MonadIO m, ToJSVal key) =>
+             IDBIndex -> key -> Maybe Word -> m IDBRequest
+getAllKeys self key count
+  = liftIO
+      (toJSVal key >>= \ key' -> js_getAllKeys self key'
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.getAllKeys Mozilla IDBIndex.getAllKeys documentation> 
+getAllKeys_ ::
+            (MonadIO m, ToJSVal key) => IDBIndex -> key -> Maybe Word -> m ()
+getAllKeys_ self key count
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_getAllKeys self key'
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_countRange ::
+        IDBIndex -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countRange ::
+           (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m IDBRequest
+countRange self range
+  = liftIO (js_countRange self (maybeToOptional range))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+countRange_ :: (MonadIO m) => IDBIndex -> Maybe IDBKeyRange -> m ()
+countRange_ self range
+  = liftIO (void (js_countRange self (maybeToOptional range)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_count ::
+        IDBIndex -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+count ::
+      (MonadIO m, ToJSVal key) => IDBIndex -> key -> m IDBRequest
+count self key
+  = liftIO (toJSVal key >>= \ key' -> js_count self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.count Mozilla IDBIndex.count documentation> 
+count_ :: (MonadIO m, ToJSVal key) => IDBIndex -> key -> m ()
+count_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        IDBIndex -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
+setName :: (MonadIO m, ToJSString val) => IDBIndex -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        IDBIndex -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.name Mozilla IDBIndex.name documentation> 
+getName :: (MonadIO m, FromJSString result) => IDBIndex -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"objectStore\"]; })"
+        js_getObjectStore :: IDBIndex -> IO IDBObjectStore
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.objectStore Mozilla IDBIndex.objectStore documentation> 
+getObjectStore :: (MonadIO m) => IDBIndex -> m IDBObjectStore
+getObjectStore self = liftIO (js_getObjectStore self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })" js_getKeyPath ::
+        IDBIndex -> IO (Nullable IDBKeyPath)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPath :: (MonadIO m) => IDBIndex -> m (Maybe IDBKeyPath)
+getKeyPath self = liftIO (nullableToMaybe <$> (js_getKeyPath self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPathUnsafe ::
+                 (MonadIO m, HasCallStack) => IDBIndex -> m IDBKeyPath
+getKeyPathUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getKeyPath self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.keyPath Mozilla IDBIndex.keyPath documentation> 
+getKeyPathUnchecked :: (MonadIO m) => IDBIndex -> m IDBKeyPath
+getKeyPathUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getKeyPath self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"multiEntry\"] ? 1 : 0); })"
+        js_getMultiEntry :: IDBIndex -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.multiEntry Mozilla IDBIndex.multiEntry documentation> 
+getMultiEntry :: (MonadIO m) => IDBIndex -> m Bool
+getMultiEntry self = liftIO (js_getMultiEntry self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"unique\"] ? 1 : 0); })"
+        js_getUnique :: IDBIndex -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex.unique Mozilla IDBIndex.unique documentation> 
+getUnique :: (MonadIO m) => IDBIndex -> m Bool
+getUnique self = liftIO (js_getUnique self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBKeyRange.hs
@@ -0,0 +1,144 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBKeyRange
+       (js_only, only, only_, js_lowerBound, lowerBound, lowerBound_,
+        js_upperBound, upperBound, upperBound_, js_bound, bound, bound_,
+        js_includes, includes, includes_, js_getLower, getLower,
+        js_getUpper, getUpper, js_getLowerOpen, getLowerOpen,
+        js_getUpperOpen, getUpperOpen, IDBKeyRange(..), gTypeIDBKeyRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1) => { return window[\"IDBKeyRange\"][\"only\"]($1); })" js_only ::
+        JSVal -> IO IDBKeyRange
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+only :: (MonadIO m, ToJSVal value) => value -> m IDBKeyRange
+only value = liftIO (toJSVal value >>= \ value' -> js_only value')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.only Mozilla IDBKeyRange.only documentation> 
+only_ :: (MonadIO m, ToJSVal value) => value -> m ()
+only_ value
+  = liftIO (void (toJSVal value >>= \ value' -> js_only value'))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return window[\"IDBKeyRange\"][\"lowerBound\"]($1,\n$2); })" js_lowerBound ::
+        JSVal -> Bool -> IO IDBKeyRange
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBound ::
+           (MonadIO m, ToJSVal lower) => lower -> Bool -> m IDBKeyRange
+lowerBound lower open
+  = liftIO (toJSVal lower >>= \ lower' -> js_lowerBound lower' open)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerBound Mozilla IDBKeyRange.lowerBound documentation> 
+lowerBound_ :: (MonadIO m, ToJSVal lower) => lower -> Bool -> m ()
+lowerBound_ lower open
+  = liftIO
+      (void (toJSVal lower >>= \ lower' -> js_lowerBound lower' open))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return window[\"IDBKeyRange\"][\"upperBound\"]($1,\n$2); })" js_upperBound ::
+        JSVal -> Bool -> IO IDBKeyRange
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBound ::
+           (MonadIO m, ToJSVal upper) => upper -> Bool -> m IDBKeyRange
+upperBound upper open
+  = liftIO (toJSVal upper >>= \ upper' -> js_upperBound upper' open)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperBound Mozilla IDBKeyRange.upperBound documentation> 
+upperBound_ :: (MonadIO m, ToJSVal upper) => upper -> Bool -> m ()
+upperBound_ upper open
+  = liftIO
+      (void (toJSVal upper >>= \ upper' -> js_upperBound upper' open))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return window[\"IDBKeyRange\"][\"bound\"]($1,\n$2, $3, $4); })" js_bound ::
+        JSVal -> JSVal -> Bool -> Bool -> IO IDBKeyRange
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+bound ::
+      (MonadIO m, ToJSVal lower, ToJSVal upper) =>
+        lower -> upper -> Bool -> Bool -> m IDBKeyRange
+bound lower upper lowerOpen upperOpen
+  = liftIO
+      (toJSVal upper >>=
+         \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
+         lowerOpen
+         upperOpen)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.bound Mozilla IDBKeyRange.bound documentation> 
+bound_ ::
+       (MonadIO m, ToJSVal lower, ToJSVal upper) =>
+         lower -> upper -> Bool -> Bool -> m ()
+bound_ lower upper lowerOpen upperOpen
+  = liftIO
+      (void
+         (toJSVal upper >>=
+            \ upper' -> toJSVal lower >>= \ lower' -> js_bound lower' upper'
+            lowerOpen
+            upperOpen))
+ 
+foreign import javascript safe "(($1, $2) => { return ($1[\"includes\"]($2) ? 1 : 0); })"
+        js_includes :: IDBKeyRange -> JSVal -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
+includes ::
+         (MonadIO m, ToJSVal key) => IDBKeyRange -> key -> m Bool
+includes self key
+  = liftIO (toJSVal key >>= \ key' -> js_includes self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.includes Mozilla IDBKeyRange.includes documentation> 
+includes_ :: (MonadIO m, ToJSVal key) => IDBKeyRange -> key -> m ()
+includes_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_includes self key'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lower\"]; })" js_getLower ::
+        IDBKeyRange -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lower Mozilla IDBKeyRange.lower documentation> 
+getLower :: (MonadIO m) => IDBKeyRange -> m JSVal
+getLower self = liftIO (js_getLower self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"upper\"]; })" js_getUpper ::
+        IDBKeyRange -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upper Mozilla IDBKeyRange.upper documentation> 
+getUpper :: (MonadIO m) => IDBKeyRange -> m JSVal
+getUpper self = liftIO (js_getUpper self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"lowerOpen\"] ? 1 : 0); })"
+        js_getLowerOpen :: IDBKeyRange -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.lowerOpen Mozilla IDBKeyRange.lowerOpen documentation> 
+getLowerOpen :: (MonadIO m) => IDBKeyRange -> m Bool
+getLowerOpen self = liftIO (js_getLowerOpen self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"upperOpen\"] ? 1 : 0); })"
+        js_getUpperOpen :: IDBKeyRange -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange.upperOpen Mozilla IDBKeyRange.upperOpen documentation> 
+getUpperOpen :: (MonadIO m) => IDBKeyRange -> m Bool
+getUpperOpen self = liftIO (js_getUpperOpen self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBObjectStore.hs
@@ -0,0 +1,529 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBObjectStore
+       (js_put, put, put_, js_add, add, add_, js_deleteRange, deleteRange,
+        deleteRange_, js_delete, delete, delete_, js_getRange, getRange,
+        getRange_, js_get, get, get_, js_getKeyRange, getKeyRange,
+        getKeyRange_, js_getKey, getKey, getKey_, js_clear, clear, clear_,
+        js_openCursorRange, openCursorRange, openCursorRange_,
+        js_openCursor, openCursor, openCursor_, js_openKeyCursorRange,
+        openKeyCursorRange, openKeyCursorRange_, js_openKeyCursor,
+        openKeyCursor, openKeyCursor_, js_getAllRange, getAllRange,
+        getAllRange_, js_getAll, getAll, getAll_, js_getAllKeysRange,
+        getAllKeysRange, getAllKeysRange_, js_getAllKeys, getAllKeys,
+        getAllKeys_, js_createIndex, createIndex, createIndex_, js_index,
+        index, index_, js_deleteIndex, deleteIndex, js_countRange,
+        countRange, countRange_, js_count, count, count_, js_setName,
+        setName, js_getName, getName, js_getKeyPath, getKeyPath,
+        getKeyPathUnsafe, getKeyPathUnchecked, js_getIndexNames,
+        getIndexNames, js_getTransaction, getTransaction,
+        js_getAutoIncrement, getAutoIncrement, IDBObjectStore(..),
+        gTypeIDBObjectStore)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"put\"]($2, $3); })" js_put ::
+        IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+put ::
+    (MonadIO m, ToJSVal value, ToJSVal key) =>
+      IDBObjectStore -> value -> Maybe key -> m IDBRequest
+put self value key
+  = liftIO
+      (mapM toJSVal key >>=
+         \ key' ->
+           toJSVal value >>= \ value' -> js_put self value'
+             (maybeToOptional key'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.put Mozilla IDBObjectStore.put documentation> 
+put_ ::
+     (MonadIO m, ToJSVal value, ToJSVal key) =>
+       IDBObjectStore -> value -> Maybe key -> m ()
+put_ self value key
+  = liftIO
+      (void
+         (mapM toJSVal key >>=
+            \ key' ->
+              toJSVal value >>= \ value' -> js_put self value'
+                (maybeToOptional key')))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"add\"]($2, $3); })" js_add ::
+        IDBObjectStore -> JSVal -> Optional JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+add ::
+    (MonadIO m, ToJSVal value, ToJSVal key) =>
+      IDBObjectStore -> value -> Maybe key -> m IDBRequest
+add self value key
+  = liftIO
+      (mapM toJSVal key >>=
+         \ key' ->
+           toJSVal value >>= \ value' -> js_add self value'
+             (maybeToOptional key'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.add Mozilla IDBObjectStore.add documentation> 
+add_ ::
+     (MonadIO m, ToJSVal value, ToJSVal key) =>
+       IDBObjectStore -> value -> Maybe key -> m ()
+add_ self value key
+  = liftIO
+      (void
+         (mapM toJSVal key >>=
+            \ key' ->
+              toJSVal value >>= \ value' -> js_add self value'
+                (maybeToOptional key')))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_deleteRange
+        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteRange ::
+            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+deleteRange self keyRange
+  = liftIO (js_deleteRange self (maybeToOptional keyRange))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+deleteRange_ ::
+             (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
+deleteRange_ self keyRange
+  = liftIO (void (js_deleteRange self (maybeToOptional keyRange)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
+        IDBObjectStore -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+delete ::
+       (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
+delete self key
+  = liftIO (toJSVal key >>= \ key' -> js_delete self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.delete Mozilla IDBObjectStore.delete documentation> 
+delete_ ::
+        (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
+delete_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_delete self key'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_getRange ::
+        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getRange ::
+         (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+getRange self key = liftIO (js_getRange self (maybeToOptional key))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+getRange_ ::
+          (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
+getRange_ self key
+  = liftIO (void (js_getRange self (maybeToOptional key)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        IDBObjectStore -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+get ::
+    (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
+get self key = liftIO (toJSVal key >>= \ key' -> js_get self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.get Mozilla IDBObjectStore.get documentation> 
+get_ :: (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
+get_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_get self key'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKeyRange
+        :: IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
+getKeyRange ::
+            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+getKeyRange self key
+  = liftIO (js_getKeyRange self (maybeToOptional key))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
+getKeyRange_ ::
+             (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
+getKeyRange_ self key
+  = liftIO (void (js_getKeyRange self (maybeToOptional key)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getKey\"]($2); })" js_getKey ::
+        IDBObjectStore -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
+getKey ::
+       (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
+getKey self key
+  = liftIO (toJSVal key >>= \ key' -> js_getKey self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getKey Mozilla IDBObjectStore.getKey documentation> 
+getKey_ ::
+        (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
+getKey_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_getKey self key'))
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        IDBObjectStore -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+clear :: (MonadIO m) => IDBObjectStore -> m IDBRequest
+clear self = liftIO (js_clear self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.clear Mozilla IDBObjectStore.clear documentation> 
+clear_ :: (MonadIO m) => IDBObjectStore -> m ()
+clear_ self = liftIO (void (js_clear self))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursorRange ::
+        IDBObjectStore ->
+          Optional IDBKeyRange ->
+            Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorRange ::
+                (MonadIO m) =>
+                  IDBObjectStore ->
+                    Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
+openCursorRange self range direction
+  = liftIO
+      (js_openCursorRange self (maybeToOptional range)
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursorRange_ ::
+                 (MonadIO m) =>
+                   IDBObjectStore ->
+                     Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
+openCursorRange_ self range direction
+  = liftIO
+      (void
+         (js_openCursorRange self (maybeToOptional range)
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openCursor\"]($2, $3); })"
+        js_openCursor ::
+        IDBObjectStore ->
+          JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursor ::
+           (MonadIO m, ToJSVal key) =>
+             IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
+openCursor self key direction
+  = liftIO
+      (toJSVal key >>= \ key' -> js_openCursor self key'
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openCursor Mozilla IDBObjectStore.openCursor documentation> 
+openCursor_ ::
+            (MonadIO m, ToJSVal key) =>
+              IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
+openCursor_ self key direction
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_openCursor self key'
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursorRange ::
+        IDBObjectStore ->
+          Optional IDBKeyRange ->
+            Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
+openKeyCursorRange ::
+                   (MonadIO m) =>
+                     IDBObjectStore ->
+                       Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursorRange self range direction
+  = liftIO
+      (js_openKeyCursorRange self (maybeToOptional range)
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
+openKeyCursorRange_ ::
+                    (MonadIO m) =>
+                      IDBObjectStore ->
+                        Maybe IDBKeyRange -> Maybe IDBCursorDirection -> m ()
+openKeyCursorRange_ self range direction
+  = liftIO
+      (void
+         (js_openKeyCursorRange self (maybeToOptional range)
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"openKeyCursor\"]($2, $3); })"
+        js_openKeyCursor ::
+        IDBObjectStore ->
+          JSVal -> Optional IDBCursorDirection -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
+openKeyCursor ::
+              (MonadIO m, ToJSVal key) =>
+                IDBObjectStore -> key -> Maybe IDBCursorDirection -> m IDBRequest
+openKeyCursor self key direction
+  = liftIO
+      (toJSVal key >>= \ key' -> js_openKeyCursor self key'
+         (maybeToOptional direction))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.openKeyCursor Mozilla IDBObjectStore.openKeyCursor documentation> 
+openKeyCursor_ ::
+               (MonadIO m, ToJSVal key) =>
+                 IDBObjectStore -> key -> Maybe IDBCursorDirection -> m ()
+openKeyCursor_ self key direction
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_openKeyCursor self key'
+            (maybeToOptional direction)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })"
+        js_getAllRange ::
+        IDBObjectStore ->
+          Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
+getAllRange ::
+            (MonadIO m) =>
+              IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
+getAllRange self range count
+  = liftIO
+      (js_getAllRange self (maybeToOptional range)
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
+getAllRange_ ::
+             (MonadIO m) =>
+               IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
+getAllRange_ self range count
+  = liftIO
+      (void
+         (js_getAllRange self (maybeToOptional range)
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAll\"]($2, $3); })" js_getAll
+        :: IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
+getAll ::
+       (MonadIO m, ToJSVal key) =>
+         IDBObjectStore -> key -> Maybe Word -> m IDBRequest
+getAll self key count
+  = liftIO
+      (toJSVal key >>= \ key' -> js_getAll self key'
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAll Mozilla IDBObjectStore.getAll documentation> 
+getAll_ ::
+        (MonadIO m, ToJSVal key) =>
+          IDBObjectStore -> key -> Maybe Word -> m ()
+getAll_ self key count
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_getAll self key'
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
+        js_getAllKeysRange ::
+        IDBObjectStore ->
+          Optional IDBKeyRange -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
+getAllKeysRange ::
+                (MonadIO m) =>
+                  IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m IDBRequest
+getAllKeysRange self range count
+  = liftIO
+      (js_getAllKeysRange self (maybeToOptional range)
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
+getAllKeysRange_ ::
+                 (MonadIO m) =>
+                   IDBObjectStore -> Maybe IDBKeyRange -> Maybe Word -> m ()
+getAllKeysRange_ self range count
+  = liftIO
+      (void
+         (js_getAllKeysRange self (maybeToOptional range)
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getAllKeys\"]($2, $3); })"
+        js_getAllKeys ::
+        IDBObjectStore -> JSVal -> Optional Word -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
+getAllKeys ::
+           (MonadIO m, ToJSVal key) =>
+             IDBObjectStore -> key -> Maybe Word -> m IDBRequest
+getAllKeys self key count
+  = liftIO
+      (toJSVal key >>= \ key' -> js_getAllKeys self key'
+         (maybeToOptional count))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.getAllKeys Mozilla IDBObjectStore.getAllKeys documentation> 
+getAllKeys_ ::
+            (MonadIO m, ToJSVal key) =>
+              IDBObjectStore -> key -> Maybe Word -> m ()
+getAllKeys_ self key count
+  = liftIO
+      (void
+         (toJSVal key >>= \ key' -> js_getAllKeys self key'
+            (maybeToOptional count)))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"createIndex\"]($2, $3, $4); })"
+        js_createIndex ::
+        IDBObjectStore ->
+          JSString ->
+            StringOrStrings -> Optional IDBIndexParameters -> IO IDBIndex
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex ::
+            (MonadIO m, ToJSString name, IsStringOrStrings keyPath) =>
+              IDBObjectStore ->
+                name -> keyPath -> Maybe IDBIndexParameters -> m IDBIndex
+createIndex self name keyPath options
+  = liftIO
+      (toJSVal keyPath >>=
+         \ keyPath' ->
+           js_createIndex self (toJSString name) (StringOrStrings keyPath')
+         (maybeToOptional options))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.createIndex Mozilla IDBObjectStore.createIndex documentation> 
+createIndex_ ::
+             (MonadIO m, ToJSString name, IsStringOrStrings keyPath) =>
+               IDBObjectStore ->
+                 name -> keyPath -> Maybe IDBIndexParameters -> m ()
+createIndex_ self name keyPath options
+  = liftIO
+      (void
+         (toJSVal keyPath >>=
+            \ keyPath' ->
+              js_createIndex self (toJSString name) (StringOrStrings keyPath')
+            (maybeToOptional options)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"index\"]($2); })" js_index ::
+        IDBObjectStore -> JSString -> IO IDBIndex
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
+index ::
+      (MonadIO m, ToJSString name) =>
+        IDBObjectStore -> name -> m IDBIndex
+index self name = liftIO (js_index self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.index Mozilla IDBObjectStore.index documentation> 
+index_ ::
+       (MonadIO m, ToJSString name) => IDBObjectStore -> name -> m ()
+index_ self name = liftIO (void (js_index self (toJSString name)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteIndex\"]($2); })"
+        js_deleteIndex :: IDBObjectStore -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.deleteIndex Mozilla IDBObjectStore.deleteIndex documentation> 
+deleteIndex ::
+            (MonadIO m, ToJSString name) => IDBObjectStore -> name -> m ()
+deleteIndex self name
+  = liftIO (js_deleteIndex self (toJSString name))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_countRange ::
+        IDBObjectStore -> Optional IDBKeyRange -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countRange ::
+           (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m IDBRequest
+countRange self range
+  = liftIO (js_countRange self (maybeToOptional range))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+countRange_ ::
+            (MonadIO m) => IDBObjectStore -> Maybe IDBKeyRange -> m ()
+countRange_ self range
+  = liftIO (void (js_countRange self (maybeToOptional range)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"count\"]($2); })" js_count ::
+        IDBObjectStore -> JSVal -> IO IDBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+count ::
+      (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m IDBRequest
+count self key
+  = liftIO (toJSVal key >>= \ key' -> js_count self key')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.count Mozilla IDBObjectStore.count documentation> 
+count_ :: (MonadIO m, ToJSVal key) => IDBObjectStore -> key -> m ()
+count_ self key
+  = liftIO (void (toJSVal key >>= \ key' -> js_count self key'))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        IDBObjectStore -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
+setName ::
+        (MonadIO m, ToJSString val) => IDBObjectStore -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        IDBObjectStore -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.name Mozilla IDBObjectStore.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => IDBObjectStore -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyPath\"]; })" js_getKeyPath ::
+        IDBObjectStore -> IO (Nullable IDBKeyPath)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPath :: (MonadIO m) => IDBObjectStore -> m (Maybe IDBKeyPath)
+getKeyPath self = liftIO (nullableToMaybe <$> (js_getKeyPath self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPathUnsafe ::
+                 (MonadIO m, HasCallStack) => IDBObjectStore -> m IDBKeyPath
+getKeyPathUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getKeyPath self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.keyPath Mozilla IDBObjectStore.keyPath documentation> 
+getKeyPathUnchecked ::
+                    (MonadIO m) => IDBObjectStore -> m IDBKeyPath
+getKeyPathUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getKeyPath self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"indexNames\"]; })"
+        js_getIndexNames :: IDBObjectStore -> IO DOMStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.indexNames Mozilla IDBObjectStore.indexNames documentation> 
+getIndexNames :: (MonadIO m) => IDBObjectStore -> m DOMStringList
+getIndexNames self = liftIO (js_getIndexNames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transaction\"]; })"
+        js_getTransaction :: IDBObjectStore -> IO IDBTransaction
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.transaction Mozilla IDBObjectStore.transaction documentation> 
+getTransaction :: (MonadIO m) => IDBObjectStore -> m IDBTransaction
+getTransaction self = liftIO (js_getTransaction self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"autoIncrement\"] ? 1 : 0); })"
+        js_getAutoIncrement :: IDBObjectStore -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore.autoIncrement Mozilla IDBObjectStore.autoIncrement documentation> 
+getAutoIncrement :: (MonadIO m) => IDBObjectStore -> m Bool
+getAutoIncrement self = liftIO (js_getAutoIncrement self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBOpenDBRequest.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBOpenDBRequest
+       (blocked, upgradeNeeded, IDBOpenDBRequest(..),
+        gTypeIDBOpenDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onblocked Mozilla IDBOpenDBRequest.onblocked documentation> 
+blocked :: EventName IDBOpenDBRequest IDBVersionChangeEvent
+blocked = unsafeEventName (toJSString "blocked")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest.onupgradeneeded Mozilla IDBOpenDBRequest.onupgradeneeded documentation> 
+upgradeNeeded :: EventName IDBOpenDBRequest IDBVersionChangeEvent
+upgradeNeeded = unsafeEventName (toJSString "upgradeneeded")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBRequest.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBRequest
+       (js_getResult, getResult, getResultUnsafe, getResultUnchecked,
+        js_getError, getError, getErrorUnsafe, getErrorUnchecked,
+        js_getSource, getSource, getSourceUnsafe, getSourceUnchecked,
+        js_getTransaction, getTransaction, js_getReadyState, getReadyState,
+        success, error, IDBRequest(..), gTypeIDBRequest, IsIDBRequest,
+        toIDBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"result\"]; })" js_getResult ::
+        IDBRequest -> IO (Nullable IDBRequestResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResult ::
+          (MonadIO m, IsIDBRequest self) =>
+            self -> m (Maybe IDBRequestResult)
+getResult self
+  = liftIO (nullableToMaybe <$> (js_getResult (toIDBRequest self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResultUnsafe ::
+                (MonadIO m, IsIDBRequest self, HasCallStack) =>
+                  self -> m IDBRequestResult
+getResultUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getResult (toIDBRequest self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.result Mozilla IDBRequest.result documentation> 
+getResultUnchecked ::
+                   (MonadIO m, IsIDBRequest self) => self -> m IDBRequestResult
+getResultUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getResult (toIDBRequest self)))
+ 
+foreign import javascript safe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        IDBRequest -> IO (Nullable DOMError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
+getError ::
+         (MonadIO m, IsIDBRequest self) => self -> m (Maybe DOMError)
+getError self
+  = liftIO (nullableToMaybe <$> (js_getError (toIDBRequest self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
+getErrorUnsafe ::
+               (MonadIO m, IsIDBRequest self, HasCallStack) => self -> m DOMError
+getErrorUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getError (toIDBRequest self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.error Mozilla IDBRequest.error documentation> 
+getErrorUnchecked ::
+                  (MonadIO m, IsIDBRequest self) => self -> m DOMError
+getErrorUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getError (toIDBRequest self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
+        IDBRequest -> IO (Nullable IDBRequestSource)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSource ::
+          (MonadIO m, IsIDBRequest self) =>
+            self -> m (Maybe IDBRequestSource)
+getSource self
+  = liftIO (nullableToMaybe <$> (js_getSource (toIDBRequest self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSourceUnsafe ::
+                (MonadIO m, IsIDBRequest self, HasCallStack) =>
+                  self -> m IDBRequestSource
+getSourceUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSource (toIDBRequest self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.source Mozilla IDBRequest.source documentation> 
+getSourceUnchecked ::
+                   (MonadIO m, IsIDBRequest self) => self -> m IDBRequestSource
+getSourceUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getSource (toIDBRequest self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transaction\"]; })"
+        js_getTransaction :: IDBRequest -> IO IDBTransaction
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.transaction Mozilla IDBRequest.transaction documentation> 
+getTransaction ::
+               (MonadIO m, IsIDBRequest self) => self -> m IDBTransaction
+getTransaction self
+  = liftIO (js_getTransaction (toIDBRequest self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: IDBRequest -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.readyState Mozilla IDBRequest.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsIDBRequest self) => self -> m IDBRequestReadyState
+getReadyState self
+  = liftIO
+      ((js_getReadyState (toIDBRequest self)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onsuccess Mozilla IDBRequest.onsuccess documentation> 
+success ::
+        (IsIDBRequest self, IsEventTarget self) => EventName self Event
+success = unsafeEventName (toJSString "success")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest.onerror Mozilla IDBRequest.onerror documentation> 
+error ::
+      (IsIDBRequest self, IsEventTarget self) => EventName self Event
+error = unsafeEventName (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBTransaction.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBTransaction
+       (js_objectStore, objectStore, objectStore_, js_abort, abort,
+        js_getObjectStoreNames, getObjectStoreNames, js_getMode, getMode,
+        js_getDb, getDb, js_getError, getError, abortEvent, complete,
+        error, IDBTransaction(..), gTypeIDBTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"objectStore\"]($2); })"
+        js_objectStore :: IDBTransaction -> JSString -> IO IDBObjectStore
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
+objectStore ::
+            (MonadIO m, ToJSString name) =>
+              IDBTransaction -> name -> m IDBObjectStore
+objectStore self name
+  = liftIO (js_objectStore self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStore Mozilla IDBTransaction.objectStore documentation> 
+objectStore_ ::
+             (MonadIO m, ToJSString name) => IDBTransaction -> name -> m ()
+objectStore_ self name
+  = liftIO (void (js_objectStore self (toJSString name)))
+ 
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        IDBTransaction -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.abort Mozilla IDBTransaction.abort documentation> 
+abort :: (MonadIO m) => IDBTransaction -> m ()
+abort self = liftIO (js_abort self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"objectStoreNames\"]; })"
+        js_getObjectStoreNames :: IDBTransaction -> IO DOMStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.objectStoreNames Mozilla IDBTransaction.objectStoreNames documentation> 
+getObjectStoreNames ::
+                    (MonadIO m) => IDBTransaction -> m DOMStringList
+getObjectStoreNames self = liftIO (js_getObjectStoreNames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        IDBTransaction -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.mode Mozilla IDBTransaction.mode documentation> 
+getMode :: (MonadIO m) => IDBTransaction -> m IDBTransactionMode
+getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"db\"]; })" js_getDb ::
+        IDBTransaction -> IO IDBDatabase
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.db Mozilla IDBTransaction.db documentation> 
+getDb :: (MonadIO m) => IDBTransaction -> m IDBDatabase
+getDb self = liftIO (js_getDb self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        IDBTransaction -> IO DOMError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.error Mozilla IDBTransaction.error documentation> 
+getError :: (MonadIO m) => IDBTransaction -> m DOMError
+getError self = liftIO (js_getError self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onabort Mozilla IDBTransaction.onabort documentation> 
+abortEvent :: EventName IDBTransaction Event
+abortEvent = unsafeEventName (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.oncomplete Mozilla IDBTransaction.oncomplete documentation> 
+complete :: EventName IDBTransaction Event
+complete = unsafeEventName (toJSString "complete")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction.onerror Mozilla IDBTransaction.onerror documentation> 
+error :: EventName IDBTransaction Event
+error = unsafeEventName (toJSString "error")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IDBVersionChangeEvent.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IDBVersionChangeEvent
+       (js_newIDBVersionChangeEvent, newIDBVersionChangeEvent,
+        js_getOldVersion, getOldVersion, js_getNewVersion, getNewVersion,
+        getNewVersionUnsafe, getNewVersionUnchecked,
+        IDBVersionChangeEvent(..), gTypeIDBVersionChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"IDBVersionChangeEvent\"]($1,\n$2); })"
+        js_newIDBVersionChangeEvent ::
+        JSString ->
+          Optional IDBVersionChangeEventInit -> IO IDBVersionChangeEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation> 
+newIDBVersionChangeEvent ::
+                         (MonadIO m, ToJSString type') =>
+                           type' -> Maybe IDBVersionChangeEventInit -> m IDBVersionChangeEvent
+newIDBVersionChangeEvent type' eventInitDict
+  = liftIO
+      (js_newIDBVersionChangeEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"oldVersion\"]; })"
+        js_getOldVersion :: IDBVersionChangeEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.oldVersion Mozilla IDBVersionChangeEvent.oldVersion documentation> 
+getOldVersion :: (MonadIO m) => IDBVersionChangeEvent -> m Word64
+getOldVersion self = liftIO (round <$> (js_getOldVersion self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newVersion\"]; })"
+        js_getNewVersion :: IDBVersionChangeEvent -> IO (Nullable Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
+getNewVersion ::
+              (MonadIO m) => IDBVersionChangeEvent -> m (Maybe Word64)
+getNewVersion self
+  = liftIO (fmap round . nullableToMaybe <$> (js_getNewVersion self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
+getNewVersionUnsafe ::
+                    (MonadIO m, HasCallStack) => IDBVersionChangeEvent -> m Word64
+getNewVersionUnsafe self
+  = liftIO
+      ((fmap round . nullableToMaybe <$> (js_getNewVersion self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent.newVersion Mozilla IDBVersionChangeEvent.newVersion documentation> 
+getNewVersionUnchecked ::
+                       (MonadIO m) => IDBVersionChangeEvent -> m Word64
+getNewVersionUnchecked self
+  = liftIO
+      (round . fromJust . nullableToMaybe <$> (js_getNewVersion self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ImageData.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ImageData
+       (js_newImageData, newImageData, js_newImageData', newImageData',
+        js_getWidth, getWidth, js_getHeight, getHeight, js_getData,
+        getData, ImageData(..), gTypeImageData)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return new window[\"ImageData\"]($1, $2,\n$3); })" js_newImageData ::
+        Uint8ClampedArray -> Word -> Optional Word -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
+newImageData ::
+             (MonadIO m, IsUint8ClampedArray data') =>
+               data' -> Word -> Maybe Word -> m ImageData
+newImageData data' sw sh
+  = liftIO
+      (js_newImageData (toUint8ClampedArray data') sw
+         (maybeToOptional sh))
+ 
+foreign import javascript safe "(($1, $2) => { return new window[\"ImageData\"]($1, $2); })"
+        js_newImageData' :: Word -> Word -> IO ImageData
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation> 
+newImageData' :: (MonadIO m) => Word -> Word -> m ImageData
+newImageData' sw sh = liftIO (js_newImageData' sw sh)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        ImageData -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.width Mozilla ImageData.width documentation> 
+getWidth :: (MonadIO m) => ImageData -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        ImageData -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.height Mozilla ImageData.height documentation> 
+getHeight :: (MonadIO m) => ImageData -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        ImageData -> IO Uint8ClampedArray
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ImageData.data Mozilla ImageData.data documentation> 
+getData :: (MonadIO m) => ImageData -> m Uint8ClampedArray
+getData self = liftIO (js_getData self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InputEvent.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.InputEvent
+       (js_newInputEvent, newInputEvent, js_getTargetRanges,
+        getTargetRanges, getTargetRanges_, js_getInputType, getInputType,
+        js_getData, getData, getDataUnsafe, getDataUnchecked,
+        js_getDataTransfer, getDataTransfer, getDataTransferUnsafe,
+        getDataTransferUnchecked, InputEvent(..), gTypeInputEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"InputEvent\"]($1, $2); })" js_newInputEvent ::
+        JSString -> Optional InputEventInit -> IO InputEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent Mozilla InputEvent documentation> 
+newInputEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe InputEventInit -> m InputEvent
+newInputEvent type' eventInitDict
+  = liftIO
+      (js_newInputEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getTargetRanges\"](); })"
+        js_getTargetRanges :: InputEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
+getTargetRanges :: (MonadIO m) => InputEvent -> m [StaticRange]
+getTargetRanges self
+  = liftIO ((js_getTargetRanges self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.getTargetRanges Mozilla InputEvent.getTargetRanges documentation> 
+getTargetRanges_ :: (MonadIO m) => InputEvent -> m ()
+getTargetRanges_ self = liftIO (void (js_getTargetRanges self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"inputType\"]; })"
+        js_getInputType :: InputEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.inputType Mozilla InputEvent.inputType documentation> 
+getInputType ::
+             (MonadIO m, FromJSString result) => InputEvent -> m result
+getInputType self
+  = liftIO (fromJSString <$> (js_getInputType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        InputEvent -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
+getData ::
+        (MonadIO m, FromJSString result) => InputEvent -> m (Maybe result)
+getData self = liftIO (fromMaybeJSString <$> (js_getData self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
+getDataUnsafe ::
+              (MonadIO m, HasCallStack, FromJSString result) =>
+                InputEvent -> m result
+getDataUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getData self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.data Mozilla InputEvent.data documentation> 
+getDataUnchecked ::
+                 (MonadIO m, FromJSString result) => InputEvent -> m result
+getDataUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getData self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: InputEvent -> IO (Nullable DataTransfer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
+getDataTransfer ::
+                (MonadIO m) => InputEvent -> m (Maybe DataTransfer)
+getDataTransfer self
+  = liftIO (nullableToMaybe <$> (js_getDataTransfer self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
+getDataTransferUnsafe ::
+                      (MonadIO m, HasCallStack) => InputEvent -> m DataTransfer
+getDataTransferUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getDataTransfer self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent.dataTransfer Mozilla InputEvent.dataTransfer documentation> 
+getDataTransferUnchecked ::
+                         (MonadIO m) => InputEvent -> m DataTransfer
+getDataTransferUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getDataTransfer self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs b/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/InspectorFrontendHost.hs
@@ -0,0 +1,383 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.InspectorFrontendHost
+       (js_loaded, loaded, js_closeWindow, closeWindow, js_bringToFront,
+        bringToFront, js_inspectedURLChanged, inspectedURLChanged,
+        js_setZoomFactor, setZoomFactor, js_zoomFactor, zoomFactor,
+        zoomFactor_, js_userInterfaceLayoutDirection,
+        userInterfaceLayoutDirection, userInterfaceLayoutDirection_,
+        js_requestSetDockSide, requestSetDockSide,
+        js_setAttachedWindowHeight, setAttachedWindowHeight,
+        js_setAttachedWindowWidth, setAttachedWindowWidth,
+        js_startWindowDrag, startWindowDrag, js_moveWindowBy, moveWindowBy,
+        js_localizedStringsURL, localizedStringsURL, localizedStringsURL_,
+        js_backendCommandsURL, backendCommandsURL, backendCommandsURL_,
+        js_debuggableType, debuggableType, debuggableType_,
+        js_inspectionLevel, inspectionLevel, inspectionLevel_, js_copyText,
+        copyText, js_killText, killText, js_openInNewTab, openInNewTab,
+        js_canSave, canSave, canSave_, js_save, save, js_append, append,
+        js_close, close, js_platform, platform, platform_, js_port, port,
+        port_, js_showContextMenu, showContextMenu,
+        js_dispatchEventAsContextMenuEvent,
+        dispatchEventAsContextMenuEvent, js_sendMessageToBackend,
+        sendMessageToBackend, js_unbufferedLog, unbufferedLog,
+        js_isUnderTest, isUnderTest, isUnderTest_, js_beep, beep,
+        InspectorFrontendHost(..), gTypeInspectorFrontendHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loaded\"](); })" js_loaded ::
+        InspectorFrontendHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.loaded Mozilla InspectorFrontendHost.loaded documentation> 
+loaded :: (MonadIO m) => InspectorFrontendHost -> m ()
+loaded self = liftIO (js_loaded self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"closeWindow\"](); })"
+        js_closeWindow :: InspectorFrontendHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.closeWindow Mozilla InspectorFrontendHost.closeWindow documentation> 
+closeWindow :: (MonadIO m) => InspectorFrontendHost -> m ()
+closeWindow self = liftIO (js_closeWindow self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bringToFront\"](); })"
+        js_bringToFront :: InspectorFrontendHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.bringToFront Mozilla InspectorFrontendHost.bringToFront documentation> 
+bringToFront :: (MonadIO m) => InspectorFrontendHost -> m ()
+bringToFront self = liftIO (js_bringToFront self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"inspectedURLChanged\"]($2); })"
+        js_inspectedURLChanged ::
+        InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectedURLChanged Mozilla InspectorFrontendHost.inspectedURLChanged documentation> 
+inspectedURLChanged ::
+                    (MonadIO m, ToJSString newURL) =>
+                      InspectorFrontendHost -> newURL -> m ()
+inspectedURLChanged self newURL
+  = liftIO (js_inspectedURLChanged self (toJSString newURL))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setZoomFactor\"]($2); })"
+        js_setZoomFactor :: InspectorFrontendHost -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setZoomFactor Mozilla InspectorFrontendHost.setZoomFactor documentation> 
+setZoomFactor ::
+              (MonadIO m) => InspectorFrontendHost -> Float -> m ()
+setZoomFactor self zoom = liftIO (js_setZoomFactor self zoom)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"zoomFactor\"](); })"
+        js_zoomFactor :: InspectorFrontendHost -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
+zoomFactor :: (MonadIO m) => InspectorFrontendHost -> m Float
+zoomFactor self = liftIO (js_zoomFactor self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.zoomFactor Mozilla InspectorFrontendHost.zoomFactor documentation> 
+zoomFactor_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+zoomFactor_ self = liftIO (void (js_zoomFactor self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"userInterfaceLayoutDirection\"](); })"
+        js_userInterfaceLayoutDirection ::
+        InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
+userInterfaceLayoutDirection ::
+                             (MonadIO m, FromJSString result) =>
+                               InspectorFrontendHost -> m result
+userInterfaceLayoutDirection self
+  = liftIO (fromJSString <$> (js_userInterfaceLayoutDirection self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.userInterfaceLayoutDirection Mozilla InspectorFrontendHost.userInterfaceLayoutDirection documentation> 
+userInterfaceLayoutDirection_ ::
+                              (MonadIO m) => InspectorFrontendHost -> m ()
+userInterfaceLayoutDirection_ self
+  = liftIO (void (js_userInterfaceLayoutDirection self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"requestSetDockSide\"]($2); })"
+        js_requestSetDockSide :: InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.requestSetDockSide Mozilla InspectorFrontendHost.requestSetDockSide documentation> 
+requestSetDockSide ::
+                   (MonadIO m, ToJSString side) =>
+                     InspectorFrontendHost -> side -> m ()
+requestSetDockSide self side
+  = liftIO (js_requestSetDockSide self (toJSString side))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setAttachedWindowHeight\"]($2); })" js_setAttachedWindowHeight ::
+        InspectorFrontendHost -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowHeight Mozilla InspectorFrontendHost.setAttachedWindowHeight documentation> 
+setAttachedWindowHeight ::
+                        (MonadIO m) => InspectorFrontendHost -> Word -> m ()
+setAttachedWindowHeight self height
+  = liftIO (js_setAttachedWindowHeight self height)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setAttachedWindowWidth\"]($2); })" js_setAttachedWindowWidth ::
+        InspectorFrontendHost -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.setAttachedWindowWidth Mozilla InspectorFrontendHost.setAttachedWindowWidth documentation> 
+setAttachedWindowWidth ::
+                       (MonadIO m) => InspectorFrontendHost -> Word -> m ()
+setAttachedWindowWidth self width
+  = liftIO (js_setAttachedWindowWidth self width)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startWindowDrag\"](); })"
+        js_startWindowDrag :: InspectorFrontendHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.startWindowDrag Mozilla InspectorFrontendHost.startWindowDrag documentation> 
+startWindowDrag :: (MonadIO m) => InspectorFrontendHost -> m ()
+startWindowDrag self = liftIO (js_startWindowDrag self)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveWindowBy\"]($2, $3); })"
+        js_moveWindowBy :: InspectorFrontendHost -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.moveWindowBy Mozilla InspectorFrontendHost.moveWindowBy documentation> 
+moveWindowBy ::
+             (MonadIO m) => InspectorFrontendHost -> Float -> Float -> m ()
+moveWindowBy self x y = liftIO (js_moveWindowBy self x y)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"localizedStringsURL\"](); })"
+        js_localizedStringsURL :: InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
+localizedStringsURL ::
+                    (MonadIO m, FromJSString result) =>
+                      InspectorFrontendHost -> m result
+localizedStringsURL self
+  = liftIO (fromJSString <$> (js_localizedStringsURL self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.localizedStringsURL Mozilla InspectorFrontendHost.localizedStringsURL documentation> 
+localizedStringsURL_ ::
+                     (MonadIO m) => InspectorFrontendHost -> m ()
+localizedStringsURL_ self
+  = liftIO (void (js_localizedStringsURL self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"backendCommandsURL\"](); })"
+        js_backendCommandsURL :: InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
+backendCommandsURL ::
+                   (MonadIO m, FromJSString result) =>
+                     InspectorFrontendHost -> m result
+backendCommandsURL self
+  = liftIO (fromJSString <$> (js_backendCommandsURL self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.backendCommandsURL Mozilla InspectorFrontendHost.backendCommandsURL documentation> 
+backendCommandsURL_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+backendCommandsURL_ self
+  = liftIO (void (js_backendCommandsURL self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"debuggableType\"](); })"
+        js_debuggableType :: InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
+debuggableType ::
+               (MonadIO m, FromJSString result) =>
+                 InspectorFrontendHost -> m result
+debuggableType self
+  = liftIO (fromJSString <$> (js_debuggableType self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.debuggableType Mozilla InspectorFrontendHost.debuggableType documentation> 
+debuggableType_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+debuggableType_ self = liftIO (void (js_debuggableType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"inspectionLevel\"](); })"
+        js_inspectionLevel :: InspectorFrontendHost -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
+inspectionLevel :: (MonadIO m) => InspectorFrontendHost -> m Word
+inspectionLevel self = liftIO (js_inspectionLevel self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.inspectionLevel Mozilla InspectorFrontendHost.inspectionLevel documentation> 
+inspectionLevel_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+inspectionLevel_ self = liftIO (void (js_inspectionLevel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"copyText\"]($2); })" js_copyText
+        :: InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.copyText Mozilla InspectorFrontendHost.copyText documentation> 
+copyText ::
+         (MonadIO m, ToJSString text) =>
+           InspectorFrontendHost -> text -> m ()
+copyText self text = liftIO (js_copyText self (toJSString text))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"killText\"]($2, $3, $4); })"
+        js_killText ::
+        InspectorFrontendHost -> JSString -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.killText Mozilla InspectorFrontendHost.killText documentation> 
+killText ::
+         (MonadIO m, ToJSString text) =>
+           InspectorFrontendHost -> text -> Bool -> Bool -> m ()
+killText self text shouldPrependToKillRing shouldStartNewSequence
+  = liftIO
+      (js_killText self (toJSString text) shouldPrependToKillRing
+         shouldStartNewSequence)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"openInNewTab\"]($2); })"
+        js_openInNewTab :: InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.openInNewTab Mozilla InspectorFrontendHost.openInNewTab documentation> 
+openInNewTab ::
+             (MonadIO m, ToJSString url) => InspectorFrontendHost -> url -> m ()
+openInNewTab self url
+  = liftIO (js_openInNewTab self (toJSString url))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"canSave\"]() ? 1 : 0); })"
+        js_canSave :: InspectorFrontendHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
+canSave :: (MonadIO m) => InspectorFrontendHost -> m Bool
+canSave self = liftIO (js_canSave self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.canSave Mozilla InspectorFrontendHost.canSave documentation> 
+canSave_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+canSave_ self = liftIO (void (js_canSave self))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"save\"]($2, $3, $4, $5); })"
+        js_save ::
+        InspectorFrontendHost ->
+          JSString -> JSString -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.save Mozilla InspectorFrontendHost.save documentation> 
+save ::
+     (MonadIO m, ToJSString url, ToJSString content) =>
+       InspectorFrontendHost -> url -> content -> Bool -> Bool -> m ()
+save self url content base64Encoded forceSaveAs
+  = liftIO
+      (js_save self (toJSString url) (toJSString content) base64Encoded
+         forceSaveAs)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
+        :: InspectorFrontendHost -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.append Mozilla InspectorFrontendHost.append documentation> 
+append ::
+       (MonadIO m, ToJSString url, ToJSString content) =>
+         InspectorFrontendHost -> url -> content -> m ()
+append self url content
+  = liftIO (js_append self (toJSString url) (toJSString content))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"close\"]($2); })" js_close ::
+        InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.close Mozilla InspectorFrontendHost.close documentation> 
+close ::
+      (MonadIO m, ToJSString url) => InspectorFrontendHost -> url -> m ()
+close self url = liftIO (js_close self (toJSString url))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"platform\"](); })" js_platform
+        :: InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
+platform ::
+         (MonadIO m, FromJSString result) =>
+           InspectorFrontendHost -> m result
+platform self = liftIO (fromJSString <$> (js_platform self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.platform Mozilla InspectorFrontendHost.platform documentation> 
+platform_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+platform_ self = liftIO (void (js_platform self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port\"](); })" js_port ::
+        InspectorFrontendHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
+port ::
+     (MonadIO m, FromJSString result) =>
+       InspectorFrontendHost -> m result
+port self = liftIO (fromJSString <$> (js_port self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.port Mozilla InspectorFrontendHost.port documentation> 
+port_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+port_ self = liftIO (void (js_port self))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"showContextMenu\"]($2, $3); })"
+        js_showContextMenu ::
+        InspectorFrontendHost -> MouseEvent -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.showContextMenu Mozilla InspectorFrontendHost.showContextMenu documentation> 
+showContextMenu ::
+                (MonadIO m, IsMouseEvent event, ToJSVal items) =>
+                  InspectorFrontendHost -> event -> items -> m ()
+showContextMenu self event items
+  = liftIO
+      (toJSVal items >>=
+         \ items' -> js_showContextMenu self (toMouseEvent event) items')
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"dispatchEventAsContextMenuEvent\"]($2); })"
+        js_dispatchEventAsContextMenuEvent ::
+        InspectorFrontendHost -> Optional Event -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.dispatchEventAsContextMenuEvent Mozilla InspectorFrontendHost.dispatchEventAsContextMenuEvent documentation> 
+dispatchEventAsContextMenuEvent ::
+                                (MonadIO m, IsEvent event) =>
+                                  InspectorFrontendHost -> Maybe event -> m ()
+dispatchEventAsContextMenuEvent self event
+  = liftIO
+      (js_dispatchEventAsContextMenuEvent self
+         (maybeToOptional (fmap toEvent event)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"sendMessageToBackend\"]($2); })"
+        js_sendMessageToBackend ::
+        InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.sendMessageToBackend Mozilla InspectorFrontendHost.sendMessageToBackend documentation> 
+sendMessageToBackend ::
+                     (MonadIO m, ToJSString message) =>
+                       InspectorFrontendHost -> message -> m ()
+sendMessageToBackend self message
+  = liftIO (js_sendMessageToBackend self (toJSString message))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"unbufferedLog\"]($2); })"
+        js_unbufferedLog :: InspectorFrontendHost -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.unbufferedLog Mozilla InspectorFrontendHost.unbufferedLog documentation> 
+unbufferedLog ::
+              (MonadIO m, ToJSString message) =>
+                InspectorFrontendHost -> message -> m ()
+unbufferedLog self message
+  = liftIO (js_unbufferedLog self (toJSString message))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isUnderTest\"]() ? 1 : 0); })"
+        js_isUnderTest :: InspectorFrontendHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
+isUnderTest :: (MonadIO m) => InspectorFrontendHost -> m Bool
+isUnderTest self = liftIO (js_isUnderTest self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.isUnderTest Mozilla InspectorFrontendHost.isUnderTest documentation> 
+isUnderTest_ :: (MonadIO m) => InspectorFrontendHost -> m ()
+isUnderTest_ self = liftIO (void (js_isUnderTest self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"beep\"](); })" js_beep ::
+        InspectorFrontendHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost.beep Mozilla InspectorFrontendHost.beep documentation> 
+beep :: (MonadIO m) => InspectorFrontendHost -> m ()
+beep self = liftIO (js_beep self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserver.hs
@@ -0,0 +1,125 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IntersectionObserver
+       (js_newIntersectionObserver, newIntersectionObserver, js_observe,
+        observe, js_unobserve, unobserve, js_disconnect, disconnect,
+        js_takeRecords, takeRecords, takeRecords_, js_getRoot, getRoot,
+        getRootUnsafe, getRootUnchecked, js_getRootMargin, getRootMargin,
+        js_getThresholds, getThresholds, IntersectionObserver(..),
+        gTypeIntersectionObserver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"IntersectionObserver\"]($1,\n$2); })"
+        js_newIntersectionObserver ::
+        IntersectionObserverCallback ->
+          Optional IntersectionObserverInit -> IO IntersectionObserver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver Mozilla IntersectionObserver documentation> 
+newIntersectionObserver ::
+                        (MonadIO m) =>
+                          IntersectionObserverCallback ->
+                            Maybe IntersectionObserverInit -> m IntersectionObserver
+newIntersectionObserver callback options
+  = liftIO
+      (js_newIntersectionObserver callback (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"observe\"]($2); })" js_observe
+        :: IntersectionObserver -> Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.observe Mozilla IntersectionObserver.observe documentation> 
+observe ::
+        (MonadIO m, IsElement target) =>
+          IntersectionObserver -> target -> m ()
+observe self target = liftIO (js_observe self (toElement target))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"unobserve\"]($2); })"
+        js_unobserve :: IntersectionObserver -> Element -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.unobserve Mozilla IntersectionObserver.unobserve documentation> 
+unobserve ::
+          (MonadIO m, IsElement target) =>
+            IntersectionObserver -> target -> m ()
+unobserve self target
+  = liftIO (js_unobserve self (toElement target))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect :: IntersectionObserver -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.disconnect Mozilla IntersectionObserver.disconnect documentation> 
+disconnect :: (MonadIO m) => IntersectionObserver -> m ()
+disconnect self = liftIO (js_disconnect self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"takeRecords\"](); })"
+        js_takeRecords :: IntersectionObserver -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
+takeRecords ::
+            (MonadIO m) =>
+              IntersectionObserver -> m [IntersectionObserverEntry]
+takeRecords self
+  = liftIO ((js_takeRecords self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.takeRecords Mozilla IntersectionObserver.takeRecords documentation> 
+takeRecords_ :: (MonadIO m) => IntersectionObserver -> m ()
+takeRecords_ self = liftIO (void (js_takeRecords self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
+        IntersectionObserver -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
+getRoot :: (MonadIO m) => IntersectionObserver -> m (Maybe Element)
+getRoot self = liftIO (nullableToMaybe <$> (js_getRoot self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
+getRootUnsafe ::
+              (MonadIO m, HasCallStack) => IntersectionObserver -> m Element
+getRootUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRoot self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.root Mozilla IntersectionObserver.root documentation> 
+getRootUnchecked ::
+                 (MonadIO m) => IntersectionObserver -> m Element
+getRootUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getRoot self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rootMargin\"]; })"
+        js_getRootMargin :: IntersectionObserver -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.rootMargin Mozilla IntersectionObserver.rootMargin documentation> 
+getRootMargin ::
+              (MonadIO m, FromJSString result) =>
+                IntersectionObserver -> m result
+getRootMargin self
+  = liftIO (fromJSString <$> (js_getRootMargin self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"thresholds\"]; })"
+        js_getThresholds :: IntersectionObserver -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver.thresholds Mozilla IntersectionObserver.thresholds documentation> 
+getThresholds :: (MonadIO m) => IntersectionObserver -> m [Double]
+getThresholds self
+  = liftIO ((js_getThresholds self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverCallback.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IntersectionObserverCallback
+       (newIntersectionObserverCallback,
+        newIntersectionObserverCallbackSync,
+        newIntersectionObserverCallbackAsync, IntersectionObserverCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
+newIntersectionObserverCallback ::
+                                (MonadIO m) =>
+                                  ([IntersectionObserverEntry] -> IntersectionObserver -> IO ()) ->
+                                    m IntersectionObserverCallback
+newIntersectionObserverCallback callback
+  = liftIO
+      (IntersectionObserverCallback <$>
+         syncCallback2 ThrowWouldBlock
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
+newIntersectionObserverCallbackSync ::
+                                    (MonadIO m) =>
+                                      ([IntersectionObserverEntry] -> IntersectionObserver -> IO ())
+                                        -> m IntersectionObserverCallback
+newIntersectionObserverCallbackSync callback
+  = liftIO
+      (IntersectionObserverCallback <$>
+         syncCallback2 ContinueAsync
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverCallback Mozilla IntersectionObserverCallback documentation> 
+newIntersectionObserverCallbackAsync ::
+                                     (MonadIO m) =>
+                                       ([IntersectionObserverEntry] ->
+                                          IntersectionObserver -> IO ())
+                                         -> m IntersectionObserverCallback
+newIntersectionObserverCallbackAsync callback
+  = liftIO
+      (IntersectionObserverCallback <$>
+         asyncCallback2
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/IntersectionObserverEntry.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.IntersectionObserverEntry
+       (js_newIntersectionObserverEntry, newIntersectionObserverEntry,
+        js_getTime, getTime, js_getRootBounds, getRootBounds,
+        js_getBoundingClientRect, getBoundingClientRect,
+        js_getIntersectionRect, getIntersectionRect,
+        js_getIntersectionRatio, getIntersectionRatio, js_getTarget,
+        getTarget, IntersectionObserverEntry(..),
+        gTypeIntersectionObserverEntry)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"IntersectionObserverEntry\"]($1); })"
+        js_newIntersectionObserverEntry ::
+        IntersectionObserverEntryInit -> IO IntersectionObserverEntry
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry Mozilla IntersectionObserverEntry documentation> 
+newIntersectionObserverEntry ::
+                             (MonadIO m) =>
+                               IntersectionObserverEntryInit -> m IntersectionObserverEntry
+newIntersectionObserverEntry intersectionObserverEntryInit
+  = liftIO
+      (js_newIntersectionObserverEntry intersectionObserverEntryInit)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"time\"]; })" js_getTime ::
+        IntersectionObserverEntry -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.time Mozilla IntersectionObserverEntry.time documentation> 
+getTime ::
+        (MonadIO m) => IntersectionObserverEntry -> m DOMHighResTimeStamp
+getTime self = liftIO (js_getTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rootBounds\"]; })"
+        js_getRootBounds :: IntersectionObserverEntry -> IO DOMRectReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.rootBounds Mozilla IntersectionObserverEntry.rootBounds documentation> 
+getRootBounds ::
+              (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getRootBounds self = liftIO (js_getRootBounds self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"boundingClientRect\"]; })"
+        js_getBoundingClientRect ::
+        IntersectionObserverEntry -> IO DOMRectReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.boundingClientRect Mozilla IntersectionObserverEntry.boundingClientRect documentation> 
+getBoundingClientRect ::
+                      (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getBoundingClientRect self = liftIO (js_getBoundingClientRect self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"intersectionRect\"]; })"
+        js_getIntersectionRect ::
+        IntersectionObserverEntry -> IO DOMRectReadOnly
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRect Mozilla IntersectionObserverEntry.intersectionRect documentation> 
+getIntersectionRect ::
+                    (MonadIO m) => IntersectionObserverEntry -> m DOMRectReadOnly
+getIntersectionRect self = liftIO (js_getIntersectionRect self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"intersectionRatio\"]; })"
+        js_getIntersectionRatio :: IntersectionObserverEntry -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.intersectionRatio Mozilla IntersectionObserverEntry.intersectionRatio documentation> 
+getIntersectionRatio ::
+                     (MonadIO m) => IntersectionObserverEntry -> m Double
+getIntersectionRatio self = liftIO (js_getIntersectionRatio self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        IntersectionObserverEntry -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry.target Mozilla IntersectionObserverEntry.target documentation> 
+getTarget :: (MonadIO m) => IntersectionObserverEntry -> m Element
+getTarget self = liftIO (js_getTarget self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyboardEvent.hs
@@ -0,0 +1,215 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.KeyboardEvent
+       (js_newKeyboardEvent, newKeyboardEvent, js_getModifierState,
+        getModifierState, getModifierState_, js_initKeyboardEvent,
+        initKeyboardEvent, pattern DOM_KEY_LOCATION_STANDARD,
+        pattern DOM_KEY_LOCATION_LEFT, pattern DOM_KEY_LOCATION_RIGHT,
+        pattern DOM_KEY_LOCATION_NUMPAD, js_getKey, getKey, js_getCode,
+        getCode, js_getLocation, getLocation, js_getCtrlKey, getCtrlKey,
+        js_getShiftKey, getShiftKey, js_getAltKey, getAltKey,
+        js_getMetaKey, getMetaKey, js_getRepeat, getRepeat,
+        js_getIsComposing, getIsComposing, js_getKeyIdentifier,
+        getKeyIdentifier, js_getKeyLocation, getKeyLocation,
+        js_getAltGraphKey, getAltGraphKey, js_getCharCode, getCharCode,
+        js_getKeyCode, getKeyCode, js_getWhich, getWhich,
+        KeyboardEvent(..), gTypeKeyboardEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"KeyboardEvent\"]($1,\n$2); })" js_newKeyboardEvent ::
+        JSString -> Optional KeyboardEventInit -> IO KeyboardEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation> 
+newKeyboardEvent ::
+                 (MonadIO m, ToJSString type') =>
+                   type' -> Maybe KeyboardEventInit -> m KeyboardEvent
+newKeyboardEvent type' eventInitDict
+  = liftIO
+      (js_newKeyboardEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"getModifierState\"]($2) ? 1 : 0); })" js_getModifierState ::
+        KeyboardEvent -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
+getModifierState ::
+                 (MonadIO m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m Bool
+getModifierState self keyArg
+  = liftIO (js_getModifierState self (toJSString keyArg))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.getModifierState Mozilla KeyboardEvent.getModifierState documentation> 
+getModifierState_ ::
+                  (MonadIO m, ToJSString keyArg) => KeyboardEvent -> keyArg -> m ()
+getModifierState_ self keyArg
+  = liftIO (void (js_getModifierState self (toJSString keyArg)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"initKeyboardEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
+        js_initKeyboardEvent ::
+        KeyboardEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional Window ->
+                  Optional JSString ->
+                    Optional Word -> Bool -> Bool -> Bool -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.initKeyboardEvent Mozilla KeyboardEvent.initKeyboardEvent documentation> 
+initKeyboardEvent ::
+                  (MonadIO m, ToJSString type', ToJSString keyIdentifier) =>
+                    KeyboardEvent ->
+                      Maybe type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe Window ->
+                              Maybe keyIdentifier ->
+                                Maybe Word -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
+initKeyboardEvent self type' canBubble cancelable view
+  keyIdentifier location ctrlKey altKey shiftKey metaKey altGraphKey
+  = liftIO
+      (js_initKeyboardEvent self (toOptionalJSString type') canBubble
+         cancelable
+         (maybeToOptional view)
+         (toOptionalJSString keyIdentifier)
+         (maybeToOptional location)
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey
+         altGraphKey)
+pattern DOM_KEY_LOCATION_STANDARD = 0
+pattern DOM_KEY_LOCATION_LEFT = 1
+pattern DOM_KEY_LOCATION_RIGHT = 2
+pattern DOM_KEY_LOCATION_NUMPAD = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
+        KeyboardEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.key Mozilla KeyboardEvent.key documentation> 
+getKey ::
+       (MonadIO m, FromJSString result) => KeyboardEvent -> m result
+getKey self = liftIO (fromJSString <$> (js_getKey self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        KeyboardEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.code Mozilla KeyboardEvent.code documentation> 
+getCode ::
+        (MonadIO m, FromJSString result) => KeyboardEvent -> m result
+getCode self = liftIO (fromJSString <$> (js_getCode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
+        :: KeyboardEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.location Mozilla KeyboardEvent.location documentation> 
+getLocation :: (MonadIO m) => KeyboardEvent -> m Word
+getLocation self = liftIO (js_getLocation self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
+        js_getCtrlKey :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.ctrlKey Mozilla KeyboardEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadIO m) => KeyboardEvent -> m Bool
+getCtrlKey self = liftIO (js_getCtrlKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
+        js_getShiftKey :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.shiftKey Mozilla KeyboardEvent.shiftKey documentation> 
+getShiftKey :: (MonadIO m) => KeyboardEvent -> m Bool
+getShiftKey self = liftIO (js_getShiftKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
+        js_getAltKey :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altKey Mozilla KeyboardEvent.altKey documentation> 
+getAltKey :: (MonadIO m) => KeyboardEvent -> m Bool
+getAltKey self = liftIO (js_getAltKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
+        js_getMetaKey :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.metaKey Mozilla KeyboardEvent.metaKey documentation> 
+getMetaKey :: (MonadIO m) => KeyboardEvent -> m Bool
+getMetaKey self = liftIO (js_getMetaKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"repeat\"] ? 1 : 0); })"
+        js_getRepeat :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.repeat Mozilla KeyboardEvent.repeat documentation> 
+getRepeat :: (MonadIO m) => KeyboardEvent -> m Bool
+getRepeat self = liftIO (js_getRepeat self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isComposing\"] ? 1 : 0); })"
+        js_getIsComposing :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.isComposing Mozilla KeyboardEvent.isComposing documentation> 
+getIsComposing :: (MonadIO m) => KeyboardEvent -> m Bool
+getIsComposing self = liftIO (js_getIsComposing self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyIdentifier\"]; })"
+        js_getKeyIdentifier :: KeyboardEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyIdentifier Mozilla KeyboardEvent.keyIdentifier documentation> 
+getKeyIdentifier ::
+                 (MonadIO m, FromJSString result) => KeyboardEvent -> m result
+getKeyIdentifier self
+  = liftIO (fromJSString <$> (js_getKeyIdentifier self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyLocation\"]; })"
+        js_getKeyLocation :: KeyboardEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyLocation Mozilla KeyboardEvent.keyLocation documentation> 
+getKeyLocation :: (MonadIO m) => KeyboardEvent -> m Word
+getKeyLocation self = liftIO (js_getKeyLocation self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"altGraphKey\"] ? 1 : 0); })"
+        js_getAltGraphKey :: KeyboardEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.altGraphKey Mozilla KeyboardEvent.altGraphKey documentation> 
+getAltGraphKey :: (MonadIO m) => KeyboardEvent -> m Bool
+getAltGraphKey self = liftIO (js_getAltGraphKey self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charCode\"]; })" js_getCharCode
+        :: KeyboardEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.charCode Mozilla KeyboardEvent.charCode documentation> 
+getCharCode :: (MonadIO m) => KeyboardEvent -> m Word
+getCharCode self = liftIO (js_getCharCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyCode\"]; })" js_getKeyCode ::
+        KeyboardEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.keyCode Mozilla KeyboardEvent.keyCode documentation> 
+getKeyCode :: (MonadIO m) => KeyboardEvent -> m Word
+getKeyCode self = liftIO (js_getKeyCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })" js_getWhich ::
+        KeyboardEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent.which Mozilla KeyboardEvent.which documentation> 
+getWhich :: (MonadIO m) => KeyboardEvent -> m Word
+getWhich self = liftIO (js_getWhich self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/KeyframeEffect.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.KeyframeEffect
+       (js_newKeyframeEffect, newKeyframeEffect, KeyframeEffect(..),
+        gTypeKeyframeEffect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"KeyframeEffect\"]($1); })" js_newKeyframeEffect ::
+        Optional Element -> IO KeyframeEffect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect Mozilla KeyframeEffect documentation> 
+newKeyframeEffect ::
+                  (MonadIO m, IsElement target) => Maybe target -> m KeyframeEffect
+newKeyframeEffect target
+  = liftIO
+      (js_newKeyframeEffect (maybeToOptional (fmap toElement target)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Location.hs b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Location.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Location
+       (js_assign, assign, js_replace, replace, js_reload, reload,
+        js_setHref, setHref, js_getHref, getHref, js_setProtocol,
+        setProtocol, js_getProtocol, getProtocol, js_setHost, setHost,
+        js_getHost, getHost, js_setHostname, setHostname, js_getHostname,
+        getHostname, js_setPort, setPort, js_getPort, getPort,
+        js_setPathname, setPathname, js_getPathname, getPathname,
+        js_setSearch, setSearch, js_getSearch, getSearch, js_setHash,
+        setHash, js_getHash, getHash, js_getOrigin, getOrigin,
+        js_getAncestorOrigins, getAncestorOrigins, Location(..),
+        gTypeLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"assign\"]($2); })" js_assign ::
+        Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.assign Mozilla Location.assign documentation> 
+assign :: (MonadIO m, ToJSString url) => Location -> url -> m ()
+assign self url = liftIO (js_assign self (toJSString url))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"replace\"]($2); })" js_replace
+        :: Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.replace Mozilla Location.replace documentation> 
+replace :: (MonadIO m, ToJSString url) => Location -> url -> m ()
+replace self url = liftIO (js_replace self (toJSString url))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reload\"](); })" js_reload ::
+        Location -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.reload Mozilla Location.reload documentation> 
+reload :: (MonadIO m) => Location -> m ()
+reload self = liftIO (js_reload self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
+        Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
+setHref :: (MonadIO m, ToJSString val) => Location -> val -> m ()
+setHref self val = liftIO (js_setHref self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.href Mozilla Location.href documentation> 
+getHref :: (MonadIO m, FromJSString result) => Location -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
+setProtocol ::
+            (MonadIO m, ToJSString val) => Location -> val -> m ()
+setProtocol self val
+  = liftIO (js_setProtocol self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.protocol Mozilla Location.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => Location -> m result
+getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
+        Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
+setHost :: (MonadIO m, ToJSString val) => Location -> val -> m ()
+setHost self val = liftIO (js_setHost self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.host Mozilla Location.host documentation> 
+getHost :: (MonadIO m, FromJSString result) => Location -> m result
+getHost self = liftIO (fromJSString <$> (js_getHost self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
+setHostname ::
+            (MonadIO m, ToJSString val) => Location -> val -> m ()
+setHostname self val
+  = liftIO (js_setHostname self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
+        :: Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hostname Mozilla Location.hostname documentation> 
+getHostname ::
+            (MonadIO m, FromJSString result) => Location -> m result
+getHostname self = liftIO (fromJSString <$> (js_getHostname self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
+        Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
+setPort :: (MonadIO m, ToJSString val) => Location -> val -> m ()
+setPort self val = liftIO (js_setPort self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.port Mozilla Location.port documentation> 
+getPort :: (MonadIO m, FromJSString result) => Location -> m result
+getPort self = liftIO (fromJSString <$> (js_getPort self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
+setPathname ::
+            (MonadIO m, ToJSString val) => Location -> val -> m ()
+setPathname self val
+  = liftIO (js_setPathname self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
+        :: Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.pathname Mozilla Location.pathname documentation> 
+getPathname ::
+            (MonadIO m, FromJSString result) => Location -> m result
+getPathname self = liftIO (fromJSString <$> (js_getPathname self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
+setSearch :: (MonadIO m, ToJSString val) => Location -> val -> m ()
+setSearch self val = liftIO (js_setSearch self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.search Mozilla Location.search documentation> 
+getSearch ::
+          (MonadIO m, FromJSString result) => Location -> m result
+getSearch self = liftIO (fromJSString <$> (js_getSearch self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
+        Location -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
+setHash :: (MonadIO m, ToJSString val) => Location -> val -> m ()
+setHash self val = liftIO (js_setHash self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.hash Mozilla Location.hash documentation> 
+getHash :: (MonadIO m, FromJSString result) => Location -> m result
+getHash self = liftIO (fromJSString <$> (js_getHash self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        Location -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.origin Mozilla Location.origin documentation> 
+getOrigin ::
+          (MonadIO m, FromJSString result) => Location -> m result
+getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ancestorOrigins\"]; })"
+        js_getAncestorOrigins :: Location -> IO DOMStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Location.ancestorOrigins Mozilla Location.ancestorOrigins documentation> 
+getAncestorOrigins :: (MonadIO m) => Location -> m DOMStringList
+getAncestorOrigins self = liftIO (js_getAncestorOrigins self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaController.hs
@@ -0,0 +1,184 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaController
+       (js_newMediaController, newMediaController, js_play, play,
+        js_pause, pause, js_unpause, unpause, js_getBuffered, getBuffered,
+        js_getSeekable, getSeekable, js_getDuration, getDuration,
+        js_setCurrentTime, setCurrentTime, js_getCurrentTime,
+        getCurrentTime, js_getPaused, getPaused, js_getPlayed, getPlayed,
+        js_getPlaybackState, getPlaybackState, js_setDefaultPlaybackRate,
+        setDefaultPlaybackRate, js_getDefaultPlaybackRate,
+        getDefaultPlaybackRate, js_setPlaybackRate, setPlaybackRate,
+        js_getPlaybackRate, getPlaybackRate, js_setVolume, setVolume,
+        js_getVolume, getVolume, js_setMuted, setMuted, js_getMuted,
+        getMuted, MediaController(..), gTypeMediaController)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"MediaController\"](); })" js_newMediaController ::
+        IO MediaController
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation> 
+newMediaController :: (MonadIO m) => m MediaController
+newMediaController = liftIO (js_newMediaController)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"play\"](); })" js_play ::
+        MediaController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.play Mozilla MediaController.play documentation> 
+play :: (MonadIO m) => MediaController -> m ()
+play self = liftIO (js_play self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
+        MediaController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.pause Mozilla MediaController.pause documentation> 
+pause :: (MonadIO m) => MediaController -> m ()
+pause self = liftIO (js_pause self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unpause\"](); })" js_unpause ::
+        MediaController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.unpause Mozilla MediaController.unpause documentation> 
+unpause :: (MonadIO m) => MediaController -> m ()
+unpause self = liftIO (js_unpause self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered
+        :: MediaController -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.buffered Mozilla MediaController.buffered documentation> 
+getBuffered :: (MonadIO m) => MediaController -> m TimeRanges
+getBuffered self = liftIO (js_getBuffered self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"seekable\"]; })" js_getSeekable
+        :: MediaController -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.seekable Mozilla MediaController.seekable documentation> 
+getSeekable :: (MonadIO m) => MediaController -> m TimeRanges
+getSeekable self = liftIO (js_getSeekable self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: MediaController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.duration Mozilla MediaController.duration documentation> 
+getDuration :: (MonadIO m) => MediaController -> m Double
+getDuration self = liftIO (js_getDuration self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"currentTime\"] = $2; })"
+        js_setCurrentTime :: MediaController -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
+setCurrentTime :: (MonadIO m) => MediaController -> Double -> m ()
+setCurrentTime self val = liftIO (js_setCurrentTime self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentTime\"]; })"
+        js_getCurrentTime :: MediaController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.currentTime Mozilla MediaController.currentTime documentation> 
+getCurrentTime :: (MonadIO m) => MediaController -> m Double
+getCurrentTime self = liftIO (js_getCurrentTime self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
+        js_getPaused :: MediaController -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.paused Mozilla MediaController.paused documentation> 
+getPaused :: (MonadIO m) => MediaController -> m Bool
+getPaused self = liftIO (js_getPaused self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"played\"]; })" js_getPlayed ::
+        MediaController -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.played Mozilla MediaController.played documentation> 
+getPlayed :: (MonadIO m) => MediaController -> m TimeRanges
+getPlayed self = liftIO (js_getPlayed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
+        js_getPlaybackState :: MediaController -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackState Mozilla MediaController.playbackState documentation> 
+getPlaybackState ::
+                 (MonadIO m, FromJSString result) => MediaController -> m result
+getPlaybackState self
+  = liftIO (fromJSString <$> (js_getPlaybackState self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"defaultPlaybackRate\"] = $2; })" js_setDefaultPlaybackRate ::
+        MediaController -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
+setDefaultPlaybackRate ::
+                       (MonadIO m) => MediaController -> Double -> m ()
+setDefaultPlaybackRate self val
+  = liftIO (js_setDefaultPlaybackRate self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultPlaybackRate\"]; })"
+        js_getDefaultPlaybackRate :: MediaController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.defaultPlaybackRate Mozilla MediaController.defaultPlaybackRate documentation> 
+getDefaultPlaybackRate ::
+                       (MonadIO m) => MediaController -> m Double
+getDefaultPlaybackRate self
+  = liftIO (js_getDefaultPlaybackRate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"playbackRate\"] = $2; })"
+        js_setPlaybackRate :: MediaController -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
+setPlaybackRate :: (MonadIO m) => MediaController -> Double -> m ()
+setPlaybackRate self val = liftIO (js_setPlaybackRate self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackRate\"]; })"
+        js_getPlaybackRate :: MediaController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.playbackRate Mozilla MediaController.playbackRate documentation> 
+getPlaybackRate :: (MonadIO m) => MediaController -> m Double
+getPlaybackRate self = liftIO (js_getPlaybackRate self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"volume\"] = $2; })" js_setVolume
+        :: MediaController -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
+setVolume :: (MonadIO m) => MediaController -> Double -> m ()
+setVolume self val = liftIO (js_setVolume self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
+        MediaController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.volume Mozilla MediaController.volume documentation> 
+getVolume :: (MonadIO m) => MediaController -> m Double
+getVolume self = liftIO (js_getVolume self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"muted\"] = $2; })" js_setMuted
+        :: MediaController -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
+setMuted :: (MonadIO m) => MediaController -> Bool -> m ()
+setMuted self val = liftIO (js_setMuted self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
+        js_getMuted :: MediaController -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaController.muted Mozilla MediaController.muted documentation> 
+getMuted :: (MonadIO m) => MediaController -> m Bool
+getMuted self = liftIO (js_getMuted self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaControlsHost.hs
@@ -0,0 +1,338 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaControlsHost
+       (js_sortedTrackListForMenu, sortedTrackListForMenu,
+        sortedTrackListForMenu_, js_sortedTrackListForMenuAudio,
+        sortedTrackListForMenuAudio, sortedTrackListForMenuAudio_,
+        js_displayNameForTrack, displayNameForTrack, displayNameForTrack_,
+        js_setSelectedTextTrack, setSelectedTextTrack,
+        js_setPreparedToReturnVideoLayerToInline,
+        setPreparedToReturnVideoLayerToInline, js_updateTextTrackContainer,
+        updateTextTrackContainer, js_enteredFullscreen, enteredFullscreen,
+        js_exitedFullscreen, exitedFullscreen, js_generateUUID,
+        generateUUID, generateUUID_, js_base64StringForIconNameAndType,
+        base64StringForIconNameAndType, base64StringForIconNameAndType_,
+        js_getCaptionMenuOffItem, getCaptionMenuOffItem,
+        js_getCaptionMenuAutomaticItem, getCaptionMenuAutomaticItem,
+        js_getCaptionDisplayMode, getCaptionDisplayMode,
+        js_getTextTrackContainer, getTextTrackContainer,
+        js_getAllowsInlineMediaPlayback, getAllowsInlineMediaPlayback,
+        js_getSupportsFullscreen, getSupportsFullscreen,
+        js_getIsVideoLayerInline, getIsVideoLayerInline,
+        js_getUserGestureRequired, getUserGestureRequired,
+        js_getIsInMediaDocument, getIsInMediaDocument,
+        js_getShouldForceControlsDisplay, getShouldForceControlsDisplay,
+        js_getExternalDeviceDisplayName, getExternalDeviceDisplayName,
+        js_getExternalDeviceType, getExternalDeviceType,
+        js_setControlsDependOnPageScaleFactor,
+        setControlsDependOnPageScaleFactor,
+        js_getControlsDependOnPageScaleFactor,
+        getControlsDependOnPageScaleFactor, js_getShadowRootCSSText,
+        getShadowRootCSSText, MediaControlsHost(..),
+        gTypeMediaControlsHost)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"sortedTrackListForMenu\"]($2); })" js_sortedTrackListForMenu ::
+        MediaControlsHost -> TextTrackList -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenu ::
+                       (MonadIO m) => MediaControlsHost -> TextTrackList -> m [TextTrack]
+sortedTrackListForMenu self trackList
+  = liftIO
+      ((js_sortedTrackListForMenu self trackList) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenu_ ::
+                        (MonadIO m) => MediaControlsHost -> TextTrackList -> m ()
+sortedTrackListForMenu_ self trackList
+  = liftIO (void (js_sortedTrackListForMenu self trackList))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"sortedTrackListForMenu\"]($2); })" js_sortedTrackListForMenuAudio
+        :: MediaControlsHost -> AudioTrackList -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenuAudio ::
+                            (MonadIO m) =>
+                              MediaControlsHost -> AudioTrackList -> m [AudioTrack]
+sortedTrackListForMenuAudio self trackList
+  = liftIO
+      ((js_sortedTrackListForMenuAudio self trackList) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.sortedTrackListForMenu Mozilla MediaControlsHost.sortedTrackListForMenu documentation> 
+sortedTrackListForMenuAudio_ ::
+                             (MonadIO m) => MediaControlsHost -> AudioTrackList -> m ()
+sortedTrackListForMenuAudio_ self trackList
+  = liftIO (void (js_sortedTrackListForMenuAudio self trackList))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"displayNameForTrack\"]($2); })"
+        js_displayNameForTrack ::
+        MediaControlsHost -> Optional Track -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrack ::
+                    (MonadIO m, IsTrack track, FromJSString result) =>
+                      MediaControlsHost -> Maybe track -> m result
+displayNameForTrack self track
+  = liftIO
+      (fromJSString <$>
+         (mapM toJSVal track >>=
+            \ track' ->
+              js_displayNameForTrack self (maybeToOptional (fmap Track track'))))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.displayNameForTrack Mozilla MediaControlsHost.displayNameForTrack documentation> 
+displayNameForTrack_ ::
+                     (MonadIO m, IsTrack track) =>
+                       MediaControlsHost -> Maybe track -> m ()
+displayNameForTrack_ self track
+  = liftIO
+      (void
+         (mapM toJSVal track >>=
+            \ track' ->
+              js_displayNameForTrack self (maybeToOptional (fmap Track track'))))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setSelectedTextTrack\"]($2); })"
+        js_setSelectedTextTrack ::
+        MediaControlsHost -> Optional TextTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setSelectedTextTrack Mozilla MediaControlsHost.setSelectedTextTrack documentation> 
+setSelectedTextTrack ::
+                     (MonadIO m) => MediaControlsHost -> Maybe TextTrack -> m ()
+setSelectedTextTrack self track
+  = liftIO (js_setSelectedTextTrack self (maybeToOptional track))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setPreparedToReturnVideoLayerToInline\"]($2); })"
+        js_setPreparedToReturnVideoLayerToInline ::
+        MediaControlsHost -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.setPreparedToReturnVideoLayerToInline Mozilla MediaControlsHost.setPreparedToReturnVideoLayerToInline documentation> 
+setPreparedToReturnVideoLayerToInline ::
+                                      (MonadIO m) => MediaControlsHost -> Bool -> m ()
+setPreparedToReturnVideoLayerToInline self prepared
+  = liftIO (js_setPreparedToReturnVideoLayerToInline self prepared)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"updateTextTrackContainer\"](); })" js_updateTextTrackContainer ::
+        MediaControlsHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.updateTextTrackContainer Mozilla MediaControlsHost.updateTextTrackContainer documentation> 
+updateTextTrackContainer ::
+                         (MonadIO m) => MediaControlsHost -> m ()
+updateTextTrackContainer self
+  = liftIO (js_updateTextTrackContainer self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"enteredFullscreen\"](); })"
+        js_enteredFullscreen :: MediaControlsHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.enteredFullscreen Mozilla MediaControlsHost.enteredFullscreen documentation> 
+enteredFullscreen :: (MonadIO m) => MediaControlsHost -> m ()
+enteredFullscreen self = liftIO (js_enteredFullscreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"exitedFullscreen\"](); })"
+        js_exitedFullscreen :: MediaControlsHost -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.exitedFullscreen Mozilla MediaControlsHost.exitedFullscreen documentation> 
+exitedFullscreen :: (MonadIO m) => MediaControlsHost -> m ()
+exitedFullscreen self = liftIO (js_exitedFullscreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"generateUUID\"](); })"
+        js_generateUUID :: MediaControlsHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
+generateUUID ::
+             (MonadIO m, FromJSString result) => MediaControlsHost -> m result
+generateUUID self
+  = liftIO (fromJSString <$> (js_generateUUID self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.generateUUID Mozilla MediaControlsHost.generateUUID documentation> 
+generateUUID_ :: (MonadIO m) => MediaControlsHost -> m ()
+generateUUID_ self = liftIO (void (js_generateUUID self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"base64StringForIconNameAndType\"]($2,\n$3); })"
+        js_base64StringForIconNameAndType ::
+        MediaControlsHost -> JSString -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
+base64StringForIconNameAndType ::
+                               (MonadIO m, ToJSString iconName, ToJSString iconType,
+                                FromJSString result) =>
+                                 MediaControlsHost -> iconName -> iconType -> m result
+base64StringForIconNameAndType self iconName iconType
+  = liftIO
+      (fromJSString <$>
+         (js_base64StringForIconNameAndType self (toJSString iconName)
+            (toJSString iconType)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.base64StringForIconNameAndType Mozilla MediaControlsHost.base64StringForIconNameAndType documentation> 
+base64StringForIconNameAndType_ ::
+                                (MonadIO m, ToJSString iconName, ToJSString iconType) =>
+                                  MediaControlsHost -> iconName -> iconType -> m ()
+base64StringForIconNameAndType_ self iconName iconType
+  = liftIO
+      (void
+         (js_base64StringForIconNameAndType self (toJSString iconName)
+            (toJSString iconType)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"captionMenuOffItem\"]; })"
+        js_getCaptionMenuOffItem :: MediaControlsHost -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuOffItem Mozilla MediaControlsHost.captionMenuOffItem documentation> 
+getCaptionMenuOffItem ::
+                      (MonadIO m) => MediaControlsHost -> m TextTrack
+getCaptionMenuOffItem self = liftIO (js_getCaptionMenuOffItem self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"captionMenuAutomaticItem\"]; })"
+        js_getCaptionMenuAutomaticItem :: MediaControlsHost -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionMenuAutomaticItem Mozilla MediaControlsHost.captionMenuAutomaticItem documentation> 
+getCaptionMenuAutomaticItem ::
+                            (MonadIO m) => MediaControlsHost -> m TextTrack
+getCaptionMenuAutomaticItem self
+  = liftIO (js_getCaptionMenuAutomaticItem self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"captionDisplayMode\"]; })"
+        js_getCaptionDisplayMode :: MediaControlsHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.captionDisplayMode Mozilla MediaControlsHost.captionDisplayMode documentation> 
+getCaptionDisplayMode ::
+                      (MonadIO m, FromJSString result) => MediaControlsHost -> m result
+getCaptionDisplayMode self
+  = liftIO (fromJSString <$> (js_getCaptionDisplayMode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textTrackContainer\"]; })"
+        js_getTextTrackContainer :: MediaControlsHost -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.textTrackContainer Mozilla MediaControlsHost.textTrackContainer documentation> 
+getTextTrackContainer ::
+                      (MonadIO m) => MediaControlsHost -> m HTMLElement
+getTextTrackContainer self = liftIO (js_getTextTrackContainer self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"allowsInlineMediaPlayback\"] ? 1 : 0); })"
+        js_getAllowsInlineMediaPlayback :: MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.allowsInlineMediaPlayback Mozilla MediaControlsHost.allowsInlineMediaPlayback documentation> 
+getAllowsInlineMediaPlayback ::
+                             (MonadIO m) => MediaControlsHost -> m Bool
+getAllowsInlineMediaPlayback self
+  = liftIO (js_getAllowsInlineMediaPlayback self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"supportsFullscreen\"] ? 1 : 0); })" js_getSupportsFullscreen ::
+        MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.supportsFullscreen Mozilla MediaControlsHost.supportsFullscreen documentation> 
+getSupportsFullscreen :: (MonadIO m) => MediaControlsHost -> m Bool
+getSupportsFullscreen self = liftIO (js_getSupportsFullscreen self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"isVideoLayerInline\"] ? 1 : 0); })" js_getIsVideoLayerInline ::
+        MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isVideoLayerInline Mozilla MediaControlsHost.isVideoLayerInline documentation> 
+getIsVideoLayerInline :: (MonadIO m) => MediaControlsHost -> m Bool
+getIsVideoLayerInline self = liftIO (js_getIsVideoLayerInline self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"userGestureRequired\"] ? 1 : 0); })" js_getUserGestureRequired
+        :: MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.userGestureRequired Mozilla MediaControlsHost.userGestureRequired documentation> 
+getUserGestureRequired ::
+                       (MonadIO m) => MediaControlsHost -> m Bool
+getUserGestureRequired self
+  = liftIO (js_getUserGestureRequired self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"isInMediaDocument\"] ? 1 : 0); })" js_getIsInMediaDocument ::
+        MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.isInMediaDocument Mozilla MediaControlsHost.isInMediaDocument documentation> 
+getIsInMediaDocument :: (MonadIO m) => MediaControlsHost -> m Bool
+getIsInMediaDocument self = liftIO (js_getIsInMediaDocument self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"shouldForceControlsDisplay\"] ? 1 : 0); })"
+        js_getShouldForceControlsDisplay :: MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shouldForceControlsDisplay Mozilla MediaControlsHost.shouldForceControlsDisplay documentation> 
+getShouldForceControlsDisplay ::
+                              (MonadIO m) => MediaControlsHost -> m Bool
+getShouldForceControlsDisplay self
+  = liftIO (js_getShouldForceControlsDisplay self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"externalDeviceDisplayName\"]; })" js_getExternalDeviceDisplayName
+        :: MediaControlsHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceDisplayName Mozilla MediaControlsHost.externalDeviceDisplayName documentation> 
+getExternalDeviceDisplayName ::
+                             (MonadIO m, FromJSString result) => MediaControlsHost -> m result
+getExternalDeviceDisplayName self
+  = liftIO (fromJSString <$> (js_getExternalDeviceDisplayName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"externalDeviceType\"]; })"
+        js_getExternalDeviceType :: MediaControlsHost -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.externalDeviceType Mozilla MediaControlsHost.externalDeviceType documentation> 
+getExternalDeviceType ::
+                      (MonadIO m) => MediaControlsHost -> m DeviceType
+getExternalDeviceType self
+  = liftIO ((js_getExternalDeviceType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"controlsDependOnPageScaleFactor\"] = $2; })"
+        js_setControlsDependOnPageScaleFactor ::
+        MediaControlsHost -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
+setControlsDependOnPageScaleFactor ::
+                                   (MonadIO m) => MediaControlsHost -> Bool -> m ()
+setControlsDependOnPageScaleFactor self val
+  = liftIO (js_setControlsDependOnPageScaleFactor self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"controlsDependOnPageScaleFactor\"] ? 1 : 0); })"
+        js_getControlsDependOnPageScaleFactor ::
+        MediaControlsHost -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.controlsDependOnPageScaleFactor Mozilla MediaControlsHost.controlsDependOnPageScaleFactor documentation> 
+getControlsDependOnPageScaleFactor ::
+                                   (MonadIO m) => MediaControlsHost -> m Bool
+getControlsDependOnPageScaleFactor self
+  = liftIO (js_getControlsDependOnPageScaleFactor self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"shadowRootCSSText\"]; })"
+        js_getShadowRootCSSText :: MediaControlsHost -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost.shadowRootCSSText Mozilla MediaControlsHost.shadowRootCSSText documentation> 
+getShadowRootCSSText ::
+                     (MonadIO m, FromJSString result) => MediaControlsHost -> m result
+getShadowRootCSSText self
+  = liftIO (fromJSString <$> (js_getShadowRootCSSText self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDeviceInfo.hs
@@ -0,0 +1,77 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaDeviceInfo
+       (js_newMediaDeviceInfo, newMediaDeviceInfo, js_getDeviceId,
+        getDeviceId, js_getKind, getKind, js_getLabel, getLabel,
+        js_getGroupId, getGroupId, MediaDeviceInfo(..),
+        gTypeMediaDeviceInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"MediaDeviceInfo\"]($1,\n$2, $3, $4); })"
+        js_newMediaDeviceInfo ::
+        JSString -> JSString -> JSString -> JSVal -> IO MediaDeviceInfo
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo Mozilla MediaDeviceInfo documentation> 
+newMediaDeviceInfo ::
+                   (MonadIO m, ToJSString deviceId, ToJSString label,
+                    ToJSString groupId) =>
+                     deviceId ->
+                       label -> groupId -> MediaDeviceKind -> m MediaDeviceInfo
+newMediaDeviceInfo deviceId label groupId kind
+  = liftIO
+      (js_newMediaDeviceInfo (toJSString deviceId) (toJSString label)
+         (toJSString groupId)
+         (pToJSVal kind))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deviceId\"]; })" js_getDeviceId
+        :: MediaDeviceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.deviceId Mozilla MediaDeviceInfo.deviceId documentation> 
+getDeviceId ::
+            (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
+getDeviceId self = liftIO (fromJSString <$> (js_getDeviceId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        MediaDeviceInfo -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.kind Mozilla MediaDeviceInfo.kind documentation> 
+getKind :: (MonadIO m) => MediaDeviceInfo -> m MediaDeviceKind
+getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        MediaDeviceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.label Mozilla MediaDeviceInfo.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"groupId\"]; })" js_getGroupId ::
+        MediaDeviceInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo.groupId Mozilla MediaDeviceInfo.groupId documentation> 
+getGroupId ::
+           (MonadIO m, FromJSString result) => MediaDeviceInfo -> m result
+getGroupId self = liftIO (fromJSString <$> (js_getGroupId self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaDevices.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaDevices
+       (js_enumerateDevices, enumerateDevices, enumerateDevices_,
+        js_getSupportedConstraints, getSupportedConstraints,
+        getSupportedConstraints_, js_getUserMedia, getUserMedia,
+        getUserMedia_, devicechange, MediaDevices(..), gTypeMediaDevices)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"enumerateDevices\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_enumerateDevices :: MediaDevices -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
+enumerateDevices ::
+                 (MonadIO m) => MediaDevices -> m [MediaDeviceInfo]
+enumerateDevices self
+  = liftIO
+      (((js_enumerateDevices self) >>= checkPromiseResult) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.enumerateDevices Mozilla MediaDevices.enumerateDevices documentation> 
+enumerateDevices_ :: (MonadIO m) => MediaDevices -> m ()
+enumerateDevices_ self = liftIO (void (js_enumerateDevices self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"getSupportedConstraints\"](); })" js_getSupportedConstraints ::
+        MediaDevices -> IO MediaTrackSupportedConstraints
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
+getSupportedConstraints ::
+                        (MonadIO m) => MediaDevices -> m MediaTrackSupportedConstraints
+getSupportedConstraints self
+  = liftIO (js_getSupportedConstraints self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getSupportedConstraints Mozilla MediaDevices.getSupportedConstraints documentation> 
+getSupportedConstraints_ :: (MonadIO m) => MediaDevices -> m ()
+getSupportedConstraints_ self
+  = liftIO (void (js_getSupportedConstraints self))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"getUserMedia\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getUserMedia ::
+        MediaDevices ->
+          Optional MediaStreamConstraints -> IO (JSVal, MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
+getUserMedia ::
+             (MonadIO m) =>
+               MediaDevices -> Maybe MediaStreamConstraints -> m MediaStream
+getUserMedia self constraints
+  = liftIO
+      ((js_getUserMedia self (maybeToOptional constraints)) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.getUserMedia Mozilla MediaDevices.getUserMedia documentation> 
+getUserMedia_ ::
+              (MonadIO m) => MediaDevices -> Maybe MediaStreamConstraints -> m ()
+getUserMedia_ self constraints
+  = liftIO
+      (void (js_getUserMedia self (maybeToOptional constraints)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices.ondevicechange Mozilla MediaDevices.ondevicechange documentation> 
+devicechange :: EventName MediaDevices ondevicechange
+devicechange = unsafeEventName (toJSString "devicechange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaElementAudioSourceNode.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaElementAudioSourceNode
+       (js_getMediaElement, getMediaElement,
+        MediaElementAudioSourceNode(..), gTypeMediaElementAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaElement\"]; })"
+        js_getMediaElement ::
+        MediaElementAudioSourceNode -> IO HTMLMediaElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode.mediaElement Mozilla MediaElementAudioSourceNode.mediaElement documentation> 
+getMediaElement ::
+                (MonadIO m) => MediaElementAudioSourceNode -> m HTMLMediaElement
+getMediaElement self = liftIO (js_getMediaElement self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaEncryptedEvent.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaEncryptedEvent
+       (js_newMediaEncryptedEvent, newMediaEncryptedEvent,
+        js_getInitDataType, getInitDataType, js_getInitData, getInitData,
+        getInitDataUnsafe, getInitDataUnchecked, MediaEncryptedEvent(..),
+        gTypeMediaEncryptedEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"MediaEncryptedEvent\"]($1,\n$2); })"
+        js_newMediaEncryptedEvent ::
+        JSString ->
+          Optional MediaEncryptedEventInit -> IO MediaEncryptedEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation> 
+newMediaEncryptedEvent ::
+                       (MonadIO m, ToJSString type') =>
+                         type' -> Maybe MediaEncryptedEventInit -> m MediaEncryptedEvent
+newMediaEncryptedEvent type' eventInitDict
+  = liftIO
+      (js_newMediaEncryptedEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"initDataType\"]; })"
+        js_getInitDataType :: MediaEncryptedEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initDataType Mozilla MediaEncryptedEvent.initDataType documentation> 
+getInitDataType ::
+                (MonadIO m, FromJSString result) => MediaEncryptedEvent -> m result
+getInitDataType self
+  = liftIO (fromJSString <$> (js_getInitDataType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })" js_getInitData
+        :: MediaEncryptedEvent -> IO (Nullable ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
+getInitData ::
+            (MonadIO m) => MediaEncryptedEvent -> m (Maybe ArrayBuffer)
+getInitData self
+  = liftIO (nullableToMaybe <$> (js_getInitData self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
+getInitDataUnsafe ::
+                  (MonadIO m, HasCallStack) => MediaEncryptedEvent -> m ArrayBuffer
+getInitDataUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getInitData self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent.initData Mozilla MediaEncryptedEvent.initData documentation> 
+getInitDataUnchecked ::
+                     (MonadIO m) => MediaEncryptedEvent -> m ArrayBuffer
+getInitDataUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getInitData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaError.hs
@@ -0,0 +1,39 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaError
+       (pattern MEDIA_ERR_ABORTED, pattern MEDIA_ERR_NETWORK,
+        pattern MEDIA_ERR_DECODE, pattern MEDIA_ERR_SRC_NOT_SUPPORTED,
+        js_getCode, getCode, MediaError(..), gTypeMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern MEDIA_ERR_ABORTED = 1
+pattern MEDIA_ERR_NETWORK = 2
+pattern MEDIA_ERR_DECODE = 3
+pattern MEDIA_ERR_SRC_NOT_SUPPORTED = 4
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        MediaError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaError.code Mozilla MediaError.code documentation> 
+getCode :: (MonadIO m) => MediaError -> m Word
+getCode self = liftIO (js_getCode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyMessageEvent.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyMessageEvent
+       (js_newMediaKeyMessageEvent, newMediaKeyMessageEvent,
+        js_getMessageType, getMessageType, js_getMessage, getMessage,
+        MediaKeyMessageEvent(..), gTypeMediaKeyMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitMediaKeyMessageEvent\"]($1,\n$2); })"
+        js_newMediaKeyMessageEvent ::
+        JSString -> MediaKeyMessageEventInit -> IO MediaKeyMessageEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
+newMediaKeyMessageEvent ::
+                        (MonadIO m, ToJSString type') =>
+                          type' -> MediaKeyMessageEventInit -> m MediaKeyMessageEvent
+newMediaKeyMessageEvent type' eventInitDict
+  = liftIO
+      (js_newMediaKeyMessageEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"messageType\"]; })"
+        js_getMessageType :: MediaKeyMessageEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.messageType Mozilla WebKitMediaKeyMessageEvent.messageType documentation> 
+getMessageType ::
+               (MonadIO m) => MediaKeyMessageEvent -> m MediaKeyMessageType
+getMessageType self
+  = liftIO ((js_getMessageType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        MediaKeyMessageEvent -> IO ArrayBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+getMessage :: (MonadIO m) => MediaKeyMessageEvent -> m ArrayBuffer
+getMessage self = liftIO (js_getMessage self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySession.hs
@@ -0,0 +1,137 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeySession
+       (js_generateRequest, generateRequest, js_load, load, load_,
+        js_update, update, js_close, close, js_remove, remove,
+        js_getSessionId, getSessionId, js_getExpiration, getExpiration,
+        js_getClosed, getClosed, js_getKeyStatuses, getKeyStatuses,
+        keystatuseschange, message, MediaKeySession(..),
+        gTypeMediaKeySession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"generateRequest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateRequest ::
+        MediaKeySession -> JSString -> BufferSource -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.generateRequest Mozilla WebKitMediaKeySession.generateRequest documentation> 
+generateRequest ::
+                (MonadIO m, ToJSString initDataType, IsBufferSource initData) =>
+                  MediaKeySession -> initDataType -> initData -> m ()
+generateRequest self initDataType initData
+  = liftIO
+      ((js_generateRequest self (toJSString initDataType)
+          (toBufferSource initData))
+         >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"load\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_load :: MediaKeySession -> JSString -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
+load ::
+     (MonadIO m, ToJSString sessionId) =>
+       MediaKeySession -> sessionId -> m Bool
+load self sessionId
+  = liftIO
+      ((js_load self (toJSString sessionId)) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.load Mozilla WebKitMediaKeySession.load documentation> 
+load_ ::
+      (MonadIO m, ToJSString sessionId) =>
+        MediaKeySession -> sessionId -> m ()
+load_ self sessionId
+  = liftIO (void (js_load self (toJSString sessionId)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"update\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_update :: MediaKeySession -> BufferSource -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
+update ::
+       (MonadIO m, IsBufferSource response) =>
+         MediaKeySession -> response -> m ()
+update self response
+  = liftIO
+      ((js_update self (toBufferSource response)) >>=
+         maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: MediaKeySession -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
+close :: (MonadIO m) => MediaKeySession -> m ()
+close self = liftIO ((js_close self) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"remove\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_remove :: MediaKeySession -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.remove Mozilla WebKitMediaKeySession.remove documentation> 
+remove :: (MonadIO m) => MediaKeySession -> m ()
+remove self
+  = liftIO ((js_remove self) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sessionId\"]; })"
+        js_getSessionId :: MediaKeySession -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
+getSessionId ::
+             (MonadIO m, FromJSString result) => MediaKeySession -> m result
+getSessionId self
+  = liftIO (fromJSString <$> (js_getSessionId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"expiration\"]; })"
+        js_getExpiration :: MediaKeySession -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.expiration Mozilla WebKitMediaKeySession.expiration documentation> 
+getExpiration :: (MonadIO m) => MediaKeySession -> m Double
+getExpiration self = liftIO (js_getExpiration self)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: MediaKeySession -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.closed Mozilla WebKitMediaKeySession.closed documentation> 
+getClosed :: (MonadIO m) => MediaKeySession -> m ()
+getClosed self
+  = liftIO ((js_getClosed self) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keyStatuses\"]; })"
+        js_getKeyStatuses :: MediaKeySession -> IO MediaKeyStatusMap
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keyStatuses Mozilla WebKitMediaKeySession.keyStatuses documentation> 
+getKeyStatuses ::
+               (MonadIO m) => MediaKeySession -> m MediaKeyStatusMap
+getKeyStatuses self = liftIO (js_getKeyStatuses self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onkeystatuseschange Mozilla WebKitMediaKeySession.onkeystatuseschange documentation> 
+keystatuseschange :: EventName MediaKeySession onkeystatuseschange
+keystatuseschange
+  = unsafeEventName (toJSString "keystatuseschange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onmessage Mozilla WebKitMediaKeySession.onmessage documentation> 
+message :: EventName MediaKeySession MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeyStatusMap.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeyStatusMap
+       (js_has, has, has_, js_get, get, get_, js_getSize, getSize,
+        MediaKeyStatusMap(..), gTypeMediaKeyStatusMap)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
+        :: MediaKeyStatusMap -> BufferSource -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
+has ::
+    (MonadIO m, IsBufferSource keyId) =>
+      MediaKeyStatusMap -> keyId -> m Bool
+has self keyId = liftIO (js_has self (toBufferSource keyId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.has Mozilla MediaKeyStatusMap.has documentation> 
+has_ ::
+     (MonadIO m, IsBufferSource keyId) =>
+       MediaKeyStatusMap -> keyId -> m ()
+has_ self keyId
+  = liftIO (void (js_has self (toBufferSource keyId)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        MediaKeyStatusMap -> BufferSource -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
+get ::
+    (MonadIO m, IsBufferSource keyId) =>
+      MediaKeyStatusMap -> keyId -> m JSVal
+get self keyId = liftIO (js_get self (toBufferSource keyId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.get Mozilla MediaKeyStatusMap.get documentation> 
+get_ ::
+     (MonadIO m, IsBufferSource keyId) =>
+       MediaKeyStatusMap -> keyId -> m ()
+get_ self keyId
+  = liftIO (void (js_get self (toBufferSource keyId)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        MediaKeyStatusMap -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap.size Mozilla MediaKeyStatusMap.size documentation> 
+getSize :: (MonadIO m) => MediaKeyStatusMap -> m Word
+getSize self = liftIO (js_getSize self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeySystemAccess.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeySystemAccess
+       (js_getConfiguration, getConfiguration, getConfiguration_,
+        js_createMediaKeys, createMediaKeys, createMediaKeys_,
+        js_getKeySystem, getKeySystem, MediaKeySystemAccess(..),
+        gTypeMediaKeySystemAccess)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getConfiguration\"](); })"
+        js_getConfiguration ::
+        MediaKeySystemAccess -> IO MediaKeySystemConfiguration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
+getConfiguration ::
+                 (MonadIO m) =>
+                   MediaKeySystemAccess -> m MediaKeySystemConfiguration
+getConfiguration self = liftIO (js_getConfiguration self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.getConfiguration Mozilla MediaKeySystemAccess.getConfiguration documentation> 
+getConfiguration_ :: (MonadIO m) => MediaKeySystemAccess -> m ()
+getConfiguration_ self = liftIO (void (js_getConfiguration self))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"createMediaKeys\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createMediaKeys :: MediaKeySystemAccess -> IO (JSVal, MediaKeys)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
+createMediaKeys ::
+                (MonadIO m) => MediaKeySystemAccess -> m MediaKeys
+createMediaKeys self
+  = liftIO ((js_createMediaKeys self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.createMediaKeys Mozilla MediaKeySystemAccess.createMediaKeys documentation> 
+createMediaKeys_ :: (MonadIO m) => MediaKeySystemAccess -> m ()
+createMediaKeys_ self = liftIO (void (js_createMediaKeys self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
+        js_getKeySystem :: MediaKeySystemAccess -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess.keySystem Mozilla MediaKeySystemAccess.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) =>
+               MediaKeySystemAccess -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaKeys.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaKeys
+       (js_createSession, createSession, createSession_,
+        js_setServerCertificate, setServerCertificate,
+        setServerCertificate_, MediaKeys(..), gTypeMediaKeys)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"createSession\"]($2); })"
+        js_createSession ::
+        MediaKeys -> Optional MediaKeySessionType -> IO MediaKeySession
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession ::
+              (MonadIO m) =>
+                MediaKeys -> Maybe MediaKeySessionType -> m MediaKeySession
+createSession self sessionType
+  = liftIO (js_createSession self (maybeToOptional sessionType))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession_ ::
+               (MonadIO m) => MediaKeys -> Maybe MediaKeySessionType -> m ()
+createSession_ self sessionType
+  = liftIO
+      (void (js_createSession self (maybeToOptional sessionType)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"setServerCertificate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setServerCertificate ::
+        MediaKeys -> BufferSource -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
+setServerCertificate ::
+                     (MonadIO m, IsBufferSource serverCertificate) =>
+                       MediaKeys -> serverCertificate -> m Bool
+setServerCertificate self serverCertificate
+  = liftIO
+      ((js_setServerCertificate self (toBufferSource serverCertificate))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.setServerCertificate Mozilla WebKitMediaKeys.setServerCertificate documentation> 
+setServerCertificate_ ::
+                      (MonadIO m, IsBufferSource serverCertificate) =>
+                        MediaKeys -> serverCertificate -> m ()
+setServerCertificate_ self serverCertificate
+  = liftIO
+      (void
+         (js_setServerCertificate self (toBufferSource serverCertificate)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaList.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_deleteMedium,
+        deleteMedium, js_appendMedium, appendMedium, js_setMediaText,
+        setMediaText, js_getMediaText, getMediaText, js_getLength,
+        getLength, MediaList(..), gTypeMediaList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        MediaList -> Word -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+item ::
+     (MonadIO m, FromJSString result) =>
+       MediaList -> Word -> m (Maybe result)
+item self index
+  = liftIO (fromMaybeJSString <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+item_ :: (MonadIO m) => MediaList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack, FromJSString result) =>
+             MediaList -> Word -> m result
+itemUnsafe self index
+  = liftIO
+      ((fromMaybeJSString <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.item Mozilla MediaList.item documentation> 
+itemUnchecked ::
+              (MonadIO m, FromJSString result) => MediaList -> Word -> m result
+itemUnchecked self index
+  = liftIO (fromJust . fromMaybeJSString <$> (js_item self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"deleteMedium\"]($2); })"
+        js_deleteMedium :: MediaList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.deleteMedium Mozilla MediaList.deleteMedium documentation> 
+deleteMedium ::
+             (MonadIO m, ToJSString oldMedium) => MediaList -> oldMedium -> m ()
+deleteMedium self oldMedium
+  = liftIO (js_deleteMedium self (toJSString oldMedium))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendMedium\"]($2); })"
+        js_appendMedium :: MediaList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.appendMedium Mozilla MediaList.appendMedium documentation> 
+appendMedium ::
+             (MonadIO m, ToJSString newMedium) => MediaList -> newMedium -> m ()
+appendMedium self newMedium
+  = liftIO (js_appendMedium self (toJSString newMedium))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"mediaText\"] = $2; })"
+        js_setMediaText :: MediaList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+setMediaText ::
+             (MonadIO m, ToJSString val) => MediaList -> val -> m ()
+setMediaText self val
+  = liftIO (js_setMediaText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaText\"]; })"
+        js_getMediaText :: MediaList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.mediaText Mozilla MediaList.mediaText documentation> 
+getMediaText ::
+             (MonadIO m, FromJSString result) => MediaList -> m result
+getMediaText self
+  = liftIO (fromJSString <$> (js_getMediaText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        MediaList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaList.length Mozilla MediaList.length documentation> 
+getLength :: (MonadIO m) => MediaList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryList.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaQueryList
+       (js_addListener, addListener, js_removeListener, removeListener,
+        js_getMedia, getMedia, js_getMatches, getMatches,
+        MediaQueryList(..), gTypeMediaQueryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addListener\"]($2); })"
+        js_addListener ::
+        MediaQueryList -> Optional MediaQueryListListener -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.addListener Mozilla MediaQueryList.addListener documentation> 
+addListener ::
+            (MonadIO m) =>
+              MediaQueryList -> Maybe MediaQueryListListener -> m ()
+addListener self listener
+  = liftIO (js_addListener self (maybeToOptional listener))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"removeListener\"]($2); })"
+        js_removeListener ::
+        MediaQueryList -> Optional MediaQueryListListener -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.removeListener Mozilla MediaQueryList.removeListener documentation> 
+removeListener ::
+               (MonadIO m) =>
+                 MediaQueryList -> Maybe MediaQueryListListener -> m ()
+removeListener self listener
+  = liftIO (js_removeListener self (maybeToOptional listener))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        MediaQueryList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.media Mozilla MediaQueryList.media documentation> 
+getMedia ::
+         (MonadIO m, FromJSString result) => MediaQueryList -> m result
+getMedia self = liftIO (fromJSString <$> (js_getMedia self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"matches\"] ? 1 : 0); })"
+        js_getMatches :: MediaQueryList -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList.matches Mozilla MediaQueryList.matches documentation> 
+getMatches :: (MonadIO m) => MediaQueryList -> m Bool
+getMatches self = liftIO (js_getMatches self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaQueryListListener.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaQueryListListener
+       (newMediaQueryListListener, newMediaQueryListListenerSync,
+        newMediaQueryListListenerAsync, MediaQueryListListener)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListener ::
+                          (MonadIO m) =>
+                            (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
+newMediaQueryListListener callback
+  = liftIO
+      (MediaQueryListListener <$>
+         syncCallback1 ThrowWouldBlock
+           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListenerSync ::
+                              (MonadIO m) =>
+                                (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
+newMediaQueryListListenerSync callback
+  = liftIO
+      (MediaQueryListListener <$>
+         syncCallback1 ContinueAsync
+           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryListListener Mozilla MediaQueryListListener documentation> 
+newMediaQueryListListenerAsync ::
+                               (MonadIO m) =>
+                                 (Maybe MediaQueryList -> IO ()) -> m MediaQueryListListener
+newMediaQueryListListenerAsync callback
+  = liftIO
+      (MediaQueryListListener <$>
+         asyncCallback1
+           (\ list -> fromJSValUnchecked list >>= \ list' -> callback list'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaRemoteControls.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaRemoteControls
+       (js_newMediaRemoteControls, newMediaRemoteControls,
+        js_setPreviousTrackEnabled, setPreviousTrackEnabled,
+        js_getPreviousTrackEnabled, getPreviousTrackEnabled,
+        js_setNextTrackEnabled, setNextTrackEnabled,
+        js_getNextTrackEnabled, getNextTrackEnabled, previoustrack,
+        nexttrack, MediaRemoteControls(..), gTypeMediaRemoteControls)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"MediaRemoteControls\"](); })" js_newMediaRemoteControls
+        :: IO MediaRemoteControls
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls Mozilla MediaRemoteControls documentation> 
+newMediaRemoteControls :: (MonadIO m) => m MediaRemoteControls
+newMediaRemoteControls = liftIO (js_newMediaRemoteControls)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"previousTrackEnabled\"] = $2; })" js_setPreviousTrackEnabled ::
+        MediaRemoteControls -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
+setPreviousTrackEnabled ::
+                        (MonadIO m) => MediaRemoteControls -> Bool -> m ()
+setPreviousTrackEnabled self val
+  = liftIO (js_setPreviousTrackEnabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"previousTrackEnabled\"] ? 1 : 0); })" js_getPreviousTrackEnabled
+        :: MediaRemoteControls -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.previousTrackEnabled Mozilla MediaRemoteControls.previousTrackEnabled documentation> 
+getPreviousTrackEnabled ::
+                        (MonadIO m) => MediaRemoteControls -> m Bool
+getPreviousTrackEnabled self
+  = liftIO (js_getPreviousTrackEnabled self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"nextTrackEnabled\"] = $2; })"
+        js_setNextTrackEnabled :: MediaRemoteControls -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
+setNextTrackEnabled ::
+                    (MonadIO m) => MediaRemoteControls -> Bool -> m ()
+setNextTrackEnabled self val
+  = liftIO (js_setNextTrackEnabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"nextTrackEnabled\"] ? 1 : 0); })" js_getNextTrackEnabled ::
+        MediaRemoteControls -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.nextTrackEnabled Mozilla MediaRemoteControls.nextTrackEnabled documentation> 
+getNextTrackEnabled :: (MonadIO m) => MediaRemoteControls -> m Bool
+getNextTrackEnabled self = liftIO (js_getNextTrackEnabled self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.onprevioustrack Mozilla MediaRemoteControls.onprevioustrack documentation> 
+previoustrack :: EventName MediaRemoteControls onprevioustrack
+previoustrack = unsafeEventName (toJSString "previoustrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls.onnexttrack Mozilla MediaRemoteControls.onnexttrack documentation> 
+nexttrack :: EventName MediaRemoteControls onnexttrack
+nexttrack = unsafeEventName (toJSString "nexttrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSession.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaSession
+       (js_newMediaSession, newMediaSession, js_setMetadata, setMetadata,
+        js_deactivate, deactivate, js_getKind, getKind, js_getControls,
+        getControls, getControlsUnsafe, getControlsUnchecked,
+        MediaSession(..), gTypeMediaSession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"MediaSession\"]($1); })"
+        js_newMediaSession :: Optional MediaSessionKind -> IO MediaSession
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession Mozilla MediaSession documentation> 
+newMediaSession ::
+                (MonadIO m) => Maybe MediaSessionKind -> m MediaSession
+newMediaSession kind
+  = liftIO (js_newMediaSession (maybeToOptional kind))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setMetadata\"]($2); })"
+        js_setMetadata :: MediaSession -> Optional MediaMetadata -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.setMetadata Mozilla MediaSession.setMetadata documentation> 
+setMetadata ::
+            (MonadIO m) => MediaSession -> Maybe MediaMetadata -> m ()
+setMetadata self metadata
+  = liftIO (js_setMetadata self (maybeToOptional metadata))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deactivate\"](); })"
+        js_deactivate :: MediaSession -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.deactivate Mozilla MediaSession.deactivate documentation> 
+deactivate :: (MonadIO m) => MediaSession -> m ()
+deactivate self = liftIO (js_deactivate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        MediaSession -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.kind Mozilla MediaSession.kind documentation> 
+getKind :: (MonadIO m) => MediaSession -> m MediaSessionKind
+getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"controls\"]; })" js_getControls
+        :: MediaSession -> IO (Nullable MediaRemoteControls)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
+getControls ::
+            (MonadIO m) => MediaSession -> m (Maybe MediaRemoteControls)
+getControls self
+  = liftIO (nullableToMaybe <$> (js_getControls self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
+getControlsUnsafe ::
+                  (MonadIO m, HasCallStack) => MediaSession -> m MediaRemoteControls
+getControlsUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getControls self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession.controls Mozilla MediaSession.controls documentation> 
+getControlsUnchecked ::
+                     (MonadIO m) => MediaSession -> m MediaRemoteControls
+getControlsUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getControls self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaSource.hs
@@ -0,0 +1,160 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaSource
+       (js_newMediaSource, newMediaSource, js_addSourceBuffer,
+        addSourceBuffer, addSourceBuffer_, js_removeSourceBuffer,
+        removeSourceBuffer, js_endOfStream, endOfStream,
+        js_isTypeSupported, isTypeSupported, isTypeSupported_,
+        js_setLiveSeekableRange, setLiveSeekableRange,
+        js_clearLiveSeekableRange, clearLiveSeekableRange,
+        js_getSourceBuffers, getSourceBuffers, js_getActiveSourceBuffers,
+        getActiveSourceBuffers, js_setDuration, setDuration,
+        js_getDuration, getDuration, js_getReadyState, getReadyState,
+        sourceopen, sourceended, sourceclose, MediaSource(..),
+        gTypeMediaSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"MediaSource\"](); })"
+        js_newMediaSource :: IO MediaSource
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation> 
+newMediaSource :: (MonadIO m) => m MediaSource
+newMediaSource = liftIO (js_newMediaSource)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"addSourceBuffer\"]($2); })"
+        js_addSourceBuffer :: MediaSource -> JSString -> IO SourceBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
+addSourceBuffer ::
+                (MonadIO m, ToJSString type') =>
+                  MediaSource -> type' -> m SourceBuffer
+addSourceBuffer self type'
+  = liftIO (js_addSourceBuffer self (toJSString type'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.addSourceBuffer Mozilla MediaSource.addSourceBuffer documentation> 
+addSourceBuffer_ ::
+                 (MonadIO m, ToJSString type') => MediaSource -> type' -> m ()
+addSourceBuffer_ self type'
+  = liftIO (void (js_addSourceBuffer self (toJSString type')))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeSourceBuffer\"]($2); })"
+        js_removeSourceBuffer :: MediaSource -> SourceBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.removeSourceBuffer Mozilla MediaSource.removeSourceBuffer documentation> 
+removeSourceBuffer ::
+                   (MonadIO m) => MediaSource -> SourceBuffer -> m ()
+removeSourceBuffer self buffer
+  = liftIO (js_removeSourceBuffer self buffer)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"endOfStream\"]($2); })"
+        js_endOfStream :: MediaSource -> Optional EndOfStreamError -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.endOfStream Mozilla MediaSource.endOfStream documentation> 
+endOfStream ::
+            (MonadIO m) => MediaSource -> Maybe EndOfStreamError -> m ()
+endOfStream self error
+  = liftIO (js_endOfStream self (maybeToOptional error))
+ 
+foreign import javascript unsafe
+        "(($1) => { return (window[\"MediaSource\"][\"isTypeSupported\"]($1) ? 1 : 0); })"
+        js_isTypeSupported :: JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
+isTypeSupported :: (MonadIO m, ToJSString type') => type' -> m Bool
+isTypeSupported type'
+  = liftIO (js_isTypeSupported (toJSString type'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.isTypeSupported Mozilla MediaSource.isTypeSupported documentation> 
+isTypeSupported_ :: (MonadIO m, ToJSString type') => type' -> m ()
+isTypeSupported_ type'
+  = liftIO (void (js_isTypeSupported (toJSString type')))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"setLiveSeekableRange\"]($2,\n$3); })" js_setLiveSeekableRange ::
+        MediaSource -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.setLiveSeekableRange Mozilla MediaSource.setLiveSeekableRange documentation> 
+setLiveSeekableRange ::
+                     (MonadIO m) => MediaSource -> Double -> Double -> m ()
+setLiveSeekableRange self start end
+  = liftIO (js_setLiveSeekableRange self start end)
+ 
+foreign import javascript safe "(($1) => { return $1[\"clearLiveSeekableRange\"](); })"
+        js_clearLiveSeekableRange :: MediaSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.clearLiveSeekableRange Mozilla MediaSource.clearLiveSeekableRange documentation> 
+clearLiveSeekableRange :: (MonadIO m) => MediaSource -> m ()
+clearLiveSeekableRange self
+  = liftIO (js_clearLiveSeekableRange self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffers\"]; })"
+        js_getSourceBuffers :: MediaSource -> IO SourceBufferList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.sourceBuffers Mozilla MediaSource.sourceBuffers documentation> 
+getSourceBuffers ::
+                 (MonadIO m) => MediaSource -> m SourceBufferList
+getSourceBuffers self = liftIO (js_getSourceBuffers self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"activeSourceBuffers\"]; })"
+        js_getActiveSourceBuffers :: MediaSource -> IO SourceBufferList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.activeSourceBuffers Mozilla MediaSource.activeSourceBuffers documentation> 
+getActiveSourceBuffers ::
+                       (MonadIO m) => MediaSource -> m SourceBufferList
+getActiveSourceBuffers self
+  = liftIO (js_getActiveSourceBuffers self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"duration\"] = $2; })"
+        js_setDuration :: MediaSource -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+setDuration :: (MonadIO m) => MediaSource -> Double -> m ()
+setDuration self val = liftIO (js_setDuration self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: MediaSource -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.duration Mozilla MediaSource.duration documentation> 
+getDuration :: (MonadIO m) => MediaSource -> m Double
+getDuration self = liftIO (js_getDuration self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: MediaSource -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.readyState Mozilla MediaSource.readyState documentation> 
+getReadyState :: (MonadIO m) => MediaSource -> m ReadyState
+getReadyState self
+  = liftIO ((js_getReadyState self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceopen Mozilla MediaSource.onsourceopen documentation> 
+sourceopen :: EventName MediaSource onsourceopen
+sourceopen = unsafeEventName (toJSString "sourceopen")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceended Mozilla MediaSource.onsourceended documentation> 
+sourceended :: EventName MediaSource onsourceended
+sourceended = unsafeEventName (toJSString "sourceended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource.onsourceclose Mozilla MediaSource.onsourceclose documentation> 
+sourceclose :: EventName MediaSource onsourceclose
+sourceclose = unsafeEventName (toJSString "sourceclose")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStream.hs
@@ -0,0 +1,177 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStream
+       (js_newMediaStream, newMediaStream, js_newMediaStream',
+        newMediaStream', js_newMediaStream'', newMediaStream'',
+        js_getAudioTracks, getAudioTracks, getAudioTracks_,
+        js_getVideoTracks, getVideoTracks, getVideoTracks_, js_getTracks,
+        getTracks, getTracks_, js_getTrackById, getTrackById,
+        getTrackById_, js_addTrack, addTrack, js_removeTrack, removeTrack,
+        js_clone, clone, clone_, js_getId, getId, js_getActive, getActive,
+        addTrackEvent, removeTrackEvent, active, inactive, MediaStream(..),
+        gTypeMediaStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"webkitMediaStream\"](); })" js_newMediaStream ::
+        IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream :: (MonadIO m) => m MediaStream
+newMediaStream = liftIO (js_newMediaStream)
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"webkitMediaStream\"]($1); })" js_newMediaStream' ::
+        MediaStream -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream' :: (MonadIO m) => MediaStream -> m MediaStream
+newMediaStream' stream = liftIO (js_newMediaStream' stream)
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"webkitMediaStream\"]($1); })" js_newMediaStream'' ::
+        JSVal -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation> 
+newMediaStream'' ::
+                 (MonadIO m, IsMediaStreamTrack tracks) => [tracks] -> m MediaStream
+newMediaStream'' tracks
+  = liftIO
+      (toJSVal tracks >>= \ tracks' -> js_newMediaStream'' tracks')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAudioTracks\"](); })"
+        js_getAudioTracks :: MediaStream -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
+getAudioTracks ::
+               (MonadIO m) => MediaStream -> m [MediaStreamTrack]
+getAudioTracks self
+  = liftIO ((js_getAudioTracks self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getAudioTracks Mozilla webkitMediaStream.getAudioTracks documentation> 
+getAudioTracks_ :: (MonadIO m) => MediaStream -> m ()
+getAudioTracks_ self = liftIO (void (js_getAudioTracks self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getVideoTracks\"](); })"
+        js_getVideoTracks :: MediaStream -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
+getVideoTracks ::
+               (MonadIO m) => MediaStream -> m [MediaStreamTrack]
+getVideoTracks self
+  = liftIO ((js_getVideoTracks self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getVideoTracks Mozilla webkitMediaStream.getVideoTracks documentation> 
+getVideoTracks_ :: (MonadIO m) => MediaStream -> m ()
+getVideoTracks_ self = liftIO (void (js_getVideoTracks self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getTracks\"](); })" js_getTracks
+        :: MediaStream -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
+getTracks :: (MonadIO m) => MediaStream -> m [MediaStreamTrack]
+getTracks self
+  = liftIO ((js_getTracks self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTracks Mozilla webkitMediaStream.getTracks documentation> 
+getTracks_ :: (MonadIO m) => MediaStream -> m ()
+getTracks_ self = liftIO (void (js_getTracks self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: MediaStream -> JSString -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString trackId) =>
+               MediaStream -> trackId -> m MediaStreamTrack
+getTrackById self trackId
+  = liftIO (js_getTrackById self (toJSString trackId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.getTrackById Mozilla webkitMediaStream.getTrackById documentation> 
+getTrackById_ ::
+              (MonadIO m, ToJSString trackId) => MediaStream -> trackId -> m ()
+getTrackById_ self trackId
+  = liftIO (void (js_getTrackById self (toJSString trackId)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addTrack\"]($2); })" js_addTrack
+        :: MediaStream -> MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.addTrack Mozilla webkitMediaStream.addTrack documentation> 
+addTrack ::
+         (MonadIO m, IsMediaStreamTrack track) =>
+           MediaStream -> track -> m ()
+addTrack self track
+  = liftIO (js_addTrack self (toMediaStreamTrack track))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
+        js_removeTrack :: MediaStream -> MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.removeTrack Mozilla webkitMediaStream.removeTrack documentation> 
+removeTrack ::
+            (MonadIO m, IsMediaStreamTrack track) =>
+              MediaStream -> track -> m ()
+removeTrack self track
+  = liftIO (js_removeTrack self (toMediaStreamTrack track))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
+        MediaStream -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
+clone :: (MonadIO m) => MediaStream -> m MediaStream
+clone self = liftIO (js_clone self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.clone Mozilla webkitMediaStream.clone documentation> 
+clone_ :: (MonadIO m) => MediaStream -> m ()
+clone_ self = liftIO (void (js_clone self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        MediaStream -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.id Mozilla webkitMediaStream.id documentation> 
+getId ::
+      (MonadIO m, FromJSString result) => MediaStream -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"active\"] ? 1 : 0); })"
+        js_getActive :: MediaStream -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.active Mozilla webkitMediaStream.active documentation> 
+getActive :: (MonadIO m) => MediaStream -> m Bool
+getActive self = liftIO (js_getActive self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onaddtrack Mozilla webkitMediaStream.onaddtrack documentation> 
+addTrackEvent :: EventName MediaStream Event
+addTrackEvent = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onremovetrack Mozilla webkitMediaStream.onremovetrack documentation> 
+removeTrackEvent :: EventName MediaStream Event
+removeTrackEvent = unsafeEventName (toJSString "removetrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.onactive Mozilla webkitMediaStream.onactive documentation> 
+active :: EventName MediaStream Event
+active = unsafeEventName (toJSString "active")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream.oninactive Mozilla webkitMediaStream.oninactive documentation> 
+inactive :: EventName MediaStream Event
+inactive = unsafeEventName (toJSString "inactive")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioDestinationNode.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioDestinationNode
+       (js_getStream, getStream, MediaStreamAudioDestinationNode(..),
+        gTypeMediaStreamAudioDestinationNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })" js_getStream ::
+        MediaStreamAudioDestinationNode -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode.stream Mozilla MediaStreamAudioDestinationNode.stream documentation> 
+getStream ::
+          (MonadIO m) => MediaStreamAudioDestinationNode -> m MediaStream
+getStream self = liftIO (js_getStream self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamAudioSourceNode.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamAudioSourceNode
+       (js_getMediaStream, getMediaStream, MediaStreamAudioSourceNode(..),
+        gTypeMediaStreamAudioSourceNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaStream\"]; })"
+        js_getMediaStream :: MediaStreamAudioSourceNode -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode.mediaStream Mozilla MediaStreamAudioSourceNode.mediaStream documentation> 
+getMediaStream ::
+               (MonadIO m) => MediaStreamAudioSourceNode -> m MediaStream
+getMediaStream self = liftIO (js_getMediaStream self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamEvent.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamEvent
+       (js_newMediaStreamEvent, newMediaStreamEvent, js_getStream,
+        getStream, getStreamUnsafe, getStreamUnchecked,
+        MediaStreamEvent(..), gTypeMediaStreamEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"MediaStreamEvent\"]($1,\n$2); })" js_newMediaStreamEvent
+        :: JSString -> Optional MediaStreamEventInit -> IO MediaStreamEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation> 
+newMediaStreamEvent ::
+                    (MonadIO m, ToJSString type') =>
+                      type' -> Maybe MediaStreamEventInit -> m MediaStreamEvent
+newMediaStreamEvent type' eventInitDict
+  = liftIO
+      (js_newMediaStreamEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stream\"]; })" js_getStream ::
+        MediaStreamEvent -> IO (Nullable MediaStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
+getStream ::
+          (MonadIO m) => MediaStreamEvent -> m (Maybe MediaStream)
+getStream self = liftIO (nullableToMaybe <$> (js_getStream self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
+getStreamUnsafe ::
+                (MonadIO m, HasCallStack) => MediaStreamEvent -> m MediaStream
+getStreamUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getStream self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent.stream Mozilla MediaStreamEvent.stream documentation> 
+getStreamUnchecked ::
+                   (MonadIO m) => MediaStreamEvent -> m MediaStream
+getStreamUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getStream self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrack.hs
@@ -0,0 +1,206 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrack
+       (js_clone, clone, clone_, js_stop, stop, js_getCapabilities,
+        getCapabilities, getCapabilities_, js_getConstraints,
+        getConstraints, getConstraints_, js_getSettings, getSettings,
+        getSettings_, js_applyConstraints, applyConstraints, js_getKind,
+        getKind, js_getId, getId, js_getLabel, getLabel, js_setEnabled,
+        setEnabled, js_getEnabled, getEnabled, js_getMuted, getMuted, mute,
+        unmute, js_getReadyState, getReadyState, ended, overConstrained,
+        MediaStreamTrack(..), gTypeMediaStreamTrack, IsMediaStreamTrack,
+        toMediaStreamTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
+        MediaStreamTrack -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
+clone ::
+      (MonadIO m, IsMediaStreamTrack self) => self -> m MediaStreamTrack
+clone self = liftIO (js_clone (toMediaStreamTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.clone Mozilla MediaStreamTrack.clone documentation> 
+clone_ :: (MonadIO m, IsMediaStreamTrack self) => self -> m ()
+clone_ self = liftIO (void (js_clone (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
+        MediaStreamTrack -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.stop Mozilla MediaStreamTrack.stop documentation> 
+stop :: (MonadIO m, IsMediaStreamTrack self) => self -> m ()
+stop self = liftIO (js_stop (toMediaStreamTrack self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getCapabilities\"](); })"
+        js_getCapabilities :: MediaStreamTrack -> IO MediaTrackCapabilities
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
+getCapabilities ::
+                (MonadIO m, IsMediaStreamTrack self) =>
+                  self -> m MediaTrackCapabilities
+getCapabilities self
+  = liftIO (js_getCapabilities (toMediaStreamTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getCapabilities Mozilla MediaStreamTrack.getCapabilities documentation> 
+getCapabilities_ ::
+                 (MonadIO m, IsMediaStreamTrack self) => self -> m ()
+getCapabilities_ self
+  = liftIO (void (js_getCapabilities (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getConstraints\"](); })"
+        js_getConstraints :: MediaStreamTrack -> IO MediaTrackConstraints
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
+getConstraints ::
+               (MonadIO m, IsMediaStreamTrack self) =>
+                 self -> m MediaTrackConstraints
+getConstraints self
+  = liftIO (js_getConstraints (toMediaStreamTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getConstraints Mozilla MediaStreamTrack.getConstraints documentation> 
+getConstraints_ ::
+                (MonadIO m, IsMediaStreamTrack self) => self -> m ()
+getConstraints_ self
+  = liftIO (void (js_getConstraints (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSettings\"](); })"
+        js_getSettings :: MediaStreamTrack -> IO MediaTrackSettings
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
+getSettings ::
+            (MonadIO m, IsMediaStreamTrack self) =>
+              self -> m MediaTrackSettings
+getSettings self
+  = liftIO (js_getSettings (toMediaStreamTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.getSettings Mozilla MediaStreamTrack.getSettings documentation> 
+getSettings_ ::
+             (MonadIO m, IsMediaStreamTrack self) => self -> m ()
+getSettings_ self
+  = liftIO (void (js_getSettings (toMediaStreamTrack self)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"applyConstraints\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_applyConstraints ::
+        MediaStreamTrack -> Optional MediaTrackConstraints -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.applyConstraints Mozilla MediaStreamTrack.applyConstraints documentation> 
+applyConstraints ::
+                 (MonadIO m, IsMediaStreamTrack self) =>
+                   self -> Maybe MediaTrackConstraints -> m ()
+applyConstraints self constraints
+  = liftIO
+      ((js_applyConstraints (toMediaStreamTrack self)
+          (maybeToOptional constraints))
+         >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        MediaStreamTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.kind Mozilla MediaStreamTrack.kind documentation> 
+getKind ::
+        (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
+          self -> m result
+getKind self
+  = liftIO (fromJSString <$> (js_getKind (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        MediaStreamTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.id Mozilla MediaStreamTrack.id documentation> 
+getId ::
+      (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftIO (fromJSString <$> (js_getId (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        MediaStreamTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.label Mozilla MediaStreamTrack.label documentation> 
+getLabel ::
+         (MonadIO m, IsMediaStreamTrack self, FromJSString result) =>
+           self -> m result
+getLabel self
+  = liftIO (fromJSString <$> (js_getLabel (toMediaStreamTrack self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"enabled\"] = $2; })"
+        js_setEnabled :: MediaStreamTrack -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
+setEnabled ::
+           (MonadIO m, IsMediaStreamTrack self) => self -> Bool -> m ()
+setEnabled self val
+  = liftIO (js_setEnabled (toMediaStreamTrack self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"enabled\"] ? 1 : 0); })"
+        js_getEnabled :: MediaStreamTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.enabled Mozilla MediaStreamTrack.enabled documentation> 
+getEnabled ::
+           (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
+getEnabled self = liftIO (js_getEnabled (toMediaStreamTrack self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"muted\"] ? 1 : 0); })"
+        js_getMuted :: MediaStreamTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.muted Mozilla MediaStreamTrack.muted documentation> 
+getMuted :: (MonadIO m, IsMediaStreamTrack self) => self -> m Bool
+getMuted self = liftIO (js_getMuted (toMediaStreamTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onmute Mozilla MediaStreamTrack.onmute documentation> 
+mute ::
+     (IsMediaStreamTrack self, IsEventTarget self) =>
+       EventName self Event
+mute = unsafeEventName (toJSString "mute")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onunmute Mozilla MediaStreamTrack.onunmute documentation> 
+unmute ::
+       (IsMediaStreamTrack self, IsEventTarget self) =>
+         EventName self Event
+unmute = unsafeEventName (toJSString "unmute")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: MediaStreamTrack -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.readyState Mozilla MediaStreamTrack.readyState documentation> 
+getReadyState ::
+              (MonadIO m, IsMediaStreamTrack self) =>
+                self -> m MediaStreamTrackState
+getReadyState self
+  = liftIO
+      ((js_getReadyState (toMediaStreamTrack self)) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onended Mozilla MediaStreamTrack.onended documentation> 
+ended ::
+      (IsMediaStreamTrack self, IsEventTarget self) =>
+        EventName self Event
+ended = unsafeEventName (toJSString "ended")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack.onoverconstrained Mozilla MediaStreamTrack.onoverconstrained documentation> 
+overConstrained ::
+                (IsMediaStreamTrack self, IsEventTarget self) =>
+                  EventName self Event
+overConstrained = unsafeEventName (toJSString "overconstrained")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MediaStreamTrackEvent.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MediaStreamTrackEvent
+       (js_newMediaStreamTrackEvent, newMediaStreamTrackEvent,
+        js_getTrack, getTrack, MediaStreamTrackEvent(..),
+        gTypeMediaStreamTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"MediaStreamTrackEvent\"]($1,\n$2); })"
+        js_newMediaStreamTrackEvent ::
+        JSString -> MediaStreamTrackEventInit -> IO MediaStreamTrackEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation> 
+newMediaStreamTrackEvent ::
+                         (MonadIO m, ToJSString type') =>
+                           type' -> MediaStreamTrackEventInit -> m MediaStreamTrackEvent
+newMediaStreamTrackEvent type' eventInitDict
+  = liftIO
+      (js_newMediaStreamTrackEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        MediaStreamTrackEvent -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent.track Mozilla MediaStreamTrackEvent.track documentation> 
+getTrack ::
+         (MonadIO m) => MediaStreamTrackEvent -> m MediaStreamTrack
+getTrack self = liftIO (js_getTrack self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageChannel.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MessageChannel
+       (js_newMessageChannel, newMessageChannel, js_getPort1, getPort1,
+        js_getPort2, getPort2, MessageChannel(..), gTypeMessageChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"MessageChannel\"](); })"
+        js_newMessageChannel :: IO MessageChannel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation> 
+newMessageChannel :: (MonadIO m) => m MessageChannel
+newMessageChannel = liftIO (js_newMessageChannel)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port1\"]; })" js_getPort1 ::
+        MessageChannel -> IO MessagePort
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port1 Mozilla MessageChannel.port1 documentation> 
+getPort1 :: (MonadIO m) => MessageChannel -> m MessagePort
+getPort1 self = liftIO (js_getPort1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port2\"]; })" js_getPort2 ::
+        MessageChannel -> IO MessagePort
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel.port2 Mozilla MessageChannel.port2 documentation> 
+getPort2 :: (MonadIO m) => MessageChannel -> m MessagePort
+getPort2 self = liftIO (js_getPort2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessageEvent.hs
@@ -0,0 +1,132 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MessageEvent
+       (js_newMessageEvent, newMessageEvent, js_initMessageEvent,
+        initMessageEvent, js_getOrigin, getOrigin, js_getLastEventId,
+        getLastEventId, js_getSource, getSource, getSourceUnsafe,
+        getSourceUnchecked, js_getData, getData, js_getPorts, getPorts,
+        MessageEvent(..), gTypeMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"MessageEvent\"]($1,\n$2); })" js_newMessageEvent ::
+        JSString -> Optional MessageEventInit -> IO MessageEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation> 
+newMessageEvent ::
+                (MonadIO m, ToJSString type') =>
+                  type' -> Maybe MessageEventInit -> m MessageEvent
+newMessageEvent type' eventInitDict
+  = liftIO
+      (js_newMessageEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initMessageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
+        js_initMessageEvent ::
+        MessageEvent ->
+          JSString ->
+            Bool ->
+              Bool ->
+                Optional JSVal ->
+                  Optional JSString ->
+                    Optional JSString -> Optional MessageEventSource -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.initMessageEvent Mozilla MessageEvent.initMessageEvent documentation> 
+initMessageEvent ::
+                 (MonadIO m, ToJSString type', ToJSVal data', ToJSString originArg,
+                  ToJSString lastEventId, IsMessageEventSource source) =>
+                   MessageEvent ->
+                     type' ->
+                       Bool ->
+                         Bool ->
+                           Maybe data' ->
+                             Maybe originArg ->
+                               Maybe lastEventId -> Maybe source -> [MessagePort] -> m ()
+initMessageEvent self type' bubbles cancelable data' originArg
+  lastEventId source messagePorts
+  = liftIO
+      (toJSVal messagePorts >>=
+         \ messagePorts' ->
+           mapM toJSVal source >>=
+             \ source' ->
+               mapM toJSVal data' >>=
+                 \ data'' ->
+                   js_initMessageEvent self (toJSString type') bubbles cancelable
+                     (maybeToOptional data'')
+                 (toOptionalJSString originArg)
+                 (toOptionalJSString lastEventId)
+                 (maybeToOptional (fmap MessageEventSource source'))
+             messagePorts')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        MessageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.origin Mozilla MessageEvent.origin documentation> 
+getOrigin ::
+          (MonadIO m, FromJSString result) => MessageEvent -> m result
+getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastEventId\"]; })"
+        js_getLastEventId :: MessageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.lastEventId Mozilla MessageEvent.lastEventId documentation> 
+getLastEventId ::
+               (MonadIO m, FromJSString result) => MessageEvent -> m result
+getLastEventId self
+  = liftIO (fromJSString <$> (js_getLastEventId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"source\"]; })" js_getSource ::
+        MessageEvent -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
+getSource :: (MonadIO m) => MessageEvent -> m (Maybe EventTarget)
+getSource self = liftIO (nullableToMaybe <$> (js_getSource self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
+getSourceUnsafe ::
+                (MonadIO m, HasCallStack) => MessageEvent -> m EventTarget
+getSourceUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSource self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.source Mozilla MessageEvent.source documentation> 
+getSourceUnchecked :: (MonadIO m) => MessageEvent -> m EventTarget
+getSourceUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getSource self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        MessageEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.data Mozilla MessageEvent.data documentation> 
+getData :: (MonadIO m) => MessageEvent -> m JSVal
+getData self = liftIO (js_getData self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ports\"]; })" js_getPorts ::
+        MessageEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent.ports Mozilla MessageEvent.ports documentation> 
+getPorts :: (MonadIO m) => MessageEvent -> m [MessagePort]
+getPorts self = liftIO ((js_getPorts self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MessagePort.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MessagePort
+       (js_postMessage, postMessage, js_start, start, js_close, close,
+        message, MessagePort(..), gTypeMessagePort)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessage :: MessagePort -> JSVal -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.postMessage Mozilla MessagePort.postMessage documentation> 
+postMessage ::
+            (MonadIO m, ToJSVal message, IsGObject transfer) =>
+              MessagePort -> message -> [transfer] -> m ()
+postMessage self message transfer
+  = liftIO
+      (toJSVal transfer >>=
+         \ transfer' ->
+           toJSVal message >>= \ message' -> js_postMessage self message'
+             transfer')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"start\"](); })" js_start ::
+        MessagePort -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.start Mozilla MessagePort.start documentation> 
+start :: (MonadIO m) => MessagePort -> m ()
+start self = liftIO (js_start self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        MessagePort -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.close Mozilla MessagePort.close documentation> 
+close :: (MonadIO m) => MessagePort -> m ()
+close self = liftIO (js_close self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort.onmessage Mozilla MessagePort.onmessage documentation> 
+message :: EventName MessagePort MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeType.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MimeType
+       (js_getType, getType, js_getSuffixes, getSuffixes,
+        js_getDescription, getDescription, js_getEnabledPlugin,
+        getEnabledPlugin, MimeType(..), gTypeMimeType)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        MimeType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.type Mozilla MimeType.type documentation> 
+getType :: (MonadIO m, FromJSString result) => MimeType -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"suffixes\"]; })" js_getSuffixes
+        :: MimeType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.suffixes Mozilla MimeType.suffixes documentation> 
+getSuffixes ::
+            (MonadIO m, FromJSString result) => MimeType -> m result
+getSuffixes self = liftIO (fromJSString <$> (js_getSuffixes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: MimeType -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.description Mozilla MimeType.description documentation> 
+getDescription ::
+               (MonadIO m, FromJSString result) => MimeType -> m result
+getDescription self
+  = liftIO (fromJSString <$> (js_getDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"enabledPlugin\"]; })"
+        js_getEnabledPlugin :: MimeType -> IO Plugin
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeType.enabledPlugin Mozilla MimeType.enabledPlugin documentation> 
+getEnabledPlugin :: (MonadIO m) => MimeType -> m Plugin
+getEnabledPlugin self = liftIO (js_getEnabledPlugin self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MimeTypeArray.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MimeTypeArray
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_getLength, getLength, MimeTypeArray(..), gTypeMimeTypeArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        MimeTypeArray -> Word -> IO (Nullable MimeType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+item :: (MonadIO m) => MimeTypeArray -> Word -> m (Maybe MimeType)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+item_ :: (MonadIO m) => MimeTypeArray -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => MimeTypeArray -> Word -> m MimeType
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.item Mozilla MimeTypeArray.item documentation> 
+itemUnchecked :: (MonadIO m) => MimeTypeArray -> Word -> m MimeType
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        MimeTypeArray -> JSString -> IO (Nullable MimeType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            MimeTypeArray -> name -> m (Maybe MimeType)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) => MimeTypeArray -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  MimeTypeArray -> name -> m MimeType
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.namedItem Mozilla MimeTypeArray.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) => MimeTypeArray -> name -> m MimeType
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        MimeTypeArray -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray.length Mozilla MimeTypeArray.length documentation> 
+getLength :: (MonadIO m) => MimeTypeArray -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MouseEvent.hs
@@ -0,0 +1,331 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MouseEvent
+       (js_newMouseEvent, newMouseEvent, js_initMouseEvent,
+        initMouseEvent, pattern WEBKIT_FORCE_AT_MOUSE_DOWN,
+        pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN, js_getScreenX,
+        getScreenX, js_getScreenY, getScreenY, js_getClientX, getClientX,
+        js_getClientY, getClientY, js_getCtrlKey, getCtrlKey,
+        js_getShiftKey, getShiftKey, js_getAltKey, getAltKey,
+        js_getMetaKey, getMetaKey, js_getButton, getButton,
+        js_getRelatedTarget, getRelatedTarget, getRelatedTargetUnsafe,
+        getRelatedTargetUnchecked, js_getMovementX, getMovementX,
+        js_getMovementY, getMovementY, js_getWebkitForce, getWebkitForce,
+        js_getOffsetX, getOffsetX, js_getOffsetY, getOffsetY, js_getX,
+        getX, js_getY, getY, js_getFromElement, getFromElement,
+        getFromElementUnsafe, getFromElementUnchecked, js_getToElement,
+        getToElement, getToElementUnsafe, getToElementUnchecked,
+        js_getDataTransfer, getDataTransfer, getDataTransferUnsafe,
+        getDataTransferUnchecked, MouseEvent(..), gTypeMouseEvent,
+        IsMouseEvent, toMouseEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"MouseEvent\"]($1, $2); })" js_newMouseEvent ::
+        JSString -> Optional MouseEventInit -> IO MouseEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation> 
+newMouseEvent ::
+              (MonadIO m, ToJSString type', IsMouseEventInit eventInitDict) =>
+                type' -> Maybe eventInitDict -> m MouseEvent
+newMouseEvent type' eventInitDict
+  = liftIO
+      (js_newMouseEvent (toJSString type')
+         (maybeToOptional (fmap toMouseEventInit eventInitDict)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16) => { return $1[\"initMouseEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14, $15, $16); })"
+        js_initMouseEvent ::
+        MouseEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional Window ->
+                  Optional Int ->
+                    Optional Int ->
+                      Optional Int ->
+                        Optional Int ->
+                          Optional Int ->
+                            Bool ->
+                              Bool -> Bool -> Bool -> Optional Word -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.initMouseEvent Mozilla MouseEvent.initMouseEvent documentation> 
+initMouseEvent ::
+               (MonadIO m, IsMouseEvent self, ToJSString type',
+                ToJSVal relatedTarget) =>
+                 self ->
+                   Maybe type' ->
+                     Bool ->
+                       Bool ->
+                         Maybe Window ->
+                           Maybe Int ->
+                             Maybe Int ->
+                               Maybe Int ->
+                                 Maybe Int ->
+                                   Maybe Int ->
+                                     Bool ->
+                                       Bool ->
+                                         Bool -> Bool -> Maybe Word -> Maybe relatedTarget -> m ()
+initMouseEvent self type' canBubble cancelable view detail screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey button
+  relatedTarget
+  = liftIO
+      (mapM toJSVal relatedTarget >>=
+         \ relatedTarget' ->
+           js_initMouseEvent (toMouseEvent self) (toOptionalJSString type')
+             canBubble
+             cancelable
+             (maybeToOptional view)
+             (maybeToOptional detail)
+             (maybeToOptional screenX)
+             (maybeToOptional screenY)
+             (maybeToOptional clientX)
+             (maybeToOptional clientY)
+             ctrlKey
+             altKey
+             shiftKey
+             metaKey
+             (maybeToOptional button)
+             (maybeToOptional relatedTarget'))
+pattern WEBKIT_FORCE_AT_MOUSE_DOWN = 1
+pattern WEBKIT_FORCE_AT_FORCE_MOUSE_DOWN = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenX Mozilla MouseEvent.screenX documentation> 
+getScreenX :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getScreenX self = liftIO (js_getScreenX (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.screenY Mozilla MouseEvent.screenY documentation> 
+getScreenY :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getScreenY self = liftIO (js_getScreenY (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })" js_getClientX ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientX Mozilla MouseEvent.clientX documentation> 
+getClientX :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getClientX self = liftIO (js_getClientX (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })" js_getClientY ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.clientY Mozilla MouseEvent.clientY documentation> 
+getClientY :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getClientY self = liftIO (js_getClientY (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
+        js_getCtrlKey :: MouseEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.ctrlKey Mozilla MouseEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
+getCtrlKey self = liftIO (js_getCtrlKey (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
+        js_getShiftKey :: MouseEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.shiftKey Mozilla MouseEvent.shiftKey documentation> 
+getShiftKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
+getShiftKey self = liftIO (js_getShiftKey (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
+        js_getAltKey :: MouseEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.altKey Mozilla MouseEvent.altKey documentation> 
+getAltKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
+getAltKey self = liftIO (js_getAltKey (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
+        js_getMetaKey :: MouseEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.metaKey Mozilla MouseEvent.metaKey documentation> 
+getMetaKey :: (MonadIO m, IsMouseEvent self) => self -> m Bool
+getMetaKey self = liftIO (js_getMetaKey (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"button\"]; })" js_getButton ::
+        MouseEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.button Mozilla MouseEvent.button documentation> 
+getButton :: (MonadIO m, IsMouseEvent self) => self -> m Word
+getButton self = liftIO (js_getButton (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relatedTarget\"]; })"
+        js_getRelatedTarget :: MouseEvent -> IO (Nullable EventTarget)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
+getRelatedTarget ::
+                 (MonadIO m, IsMouseEvent self) => self -> m (Maybe EventTarget)
+getRelatedTarget self
+  = liftIO
+      (nullableToMaybe <$> (js_getRelatedTarget (toMouseEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
+getRelatedTargetUnsafe ::
+                       (MonadIO m, IsMouseEvent self, HasCallStack) =>
+                         self -> m EventTarget
+getRelatedTargetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRelatedTarget (toMouseEvent self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.relatedTarget Mozilla MouseEvent.relatedTarget documentation> 
+getRelatedTargetUnchecked ::
+                          (MonadIO m, IsMouseEvent self) => self -> m EventTarget
+getRelatedTargetUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getRelatedTarget (toMouseEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"movementX\"]; })"
+        js_getMovementX :: MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementX Mozilla MouseEvent.movementX documentation> 
+getMovementX :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getMovementX self = liftIO (js_getMovementX (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"movementY\"]; })"
+        js_getMovementY :: MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.movementY Mozilla MouseEvent.movementY documentation> 
+getMovementY :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getMovementY self = liftIO (js_getMovementY (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitForce\"]; })"
+        js_getWebkitForce :: MouseEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.webkitForce Mozilla MouseEvent.webkitForce documentation> 
+getWebkitForce ::
+               (MonadIO m, IsMouseEvent self) => self -> m Double
+getWebkitForce self
+  = liftIO (js_getWebkitForce (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetX\"]; })" js_getOffsetX ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetX Mozilla MouseEvent.offsetX documentation> 
+getOffsetX :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getOffsetX self = liftIO (js_getOffsetX (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offsetY\"]; })" js_getOffsetY ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.offsetY Mozilla MouseEvent.offsetY documentation> 
+getOffsetY :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getOffsetY self = liftIO (js_getOffsetY (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.x Mozilla MouseEvent.x documentation> 
+getX :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getX self = liftIO (js_getX (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        MouseEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.y Mozilla MouseEvent.y documentation> 
+getY :: (MonadIO m, IsMouseEvent self) => self -> m Int
+getY self = liftIO (js_getY (toMouseEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fromElement\"]; })"
+        js_getFromElement :: MouseEvent -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
+getFromElement ::
+               (MonadIO m, IsMouseEvent self) => self -> m (Maybe Node)
+getFromElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getFromElement (toMouseEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
+getFromElementUnsafe ::
+                     (MonadIO m, IsMouseEvent self, HasCallStack) => self -> m Node
+getFromElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFromElement (toMouseEvent self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.fromElement Mozilla MouseEvent.fromElement documentation> 
+getFromElementUnchecked ::
+                        (MonadIO m, IsMouseEvent self) => self -> m Node
+getFromElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getFromElement (toMouseEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toElement\"]; })"
+        js_getToElement :: MouseEvent -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
+getToElement ::
+             (MonadIO m, IsMouseEvent self) => self -> m (Maybe Node)
+getToElement self
+  = liftIO
+      (nullableToMaybe <$> (js_getToElement (toMouseEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
+getToElementUnsafe ::
+                   (MonadIO m, IsMouseEvent self, HasCallStack) => self -> m Node
+getToElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getToElement (toMouseEvent self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.toElement Mozilla MouseEvent.toElement documentation> 
+getToElementUnchecked ::
+                      (MonadIO m, IsMouseEvent self) => self -> m Node
+getToElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getToElement (toMouseEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dataTransfer\"]; })"
+        js_getDataTransfer :: MouseEvent -> IO (Nullable DataTransfer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
+getDataTransfer ::
+                (MonadIO m, IsMouseEvent self) => self -> m (Maybe DataTransfer)
+getDataTransfer self
+  = liftIO
+      (nullableToMaybe <$> (js_getDataTransfer (toMouseEvent self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
+getDataTransferUnsafe ::
+                      (MonadIO m, IsMouseEvent self, HasCallStack) =>
+                        self -> m DataTransfer
+getDataTransferUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getDataTransfer (toMouseEvent self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent.dataTransfer Mozilla MouseEvent.dataTransfer documentation> 
+getDataTransferUnchecked ::
+                         (MonadIO m, IsMouseEvent self) => self -> m DataTransfer
+getDataTransferUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getDataTransfer (toMouseEvent self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationEvent.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MutationEvent
+       (js_initMutationEvent, initMutationEvent, pattern MODIFICATION,
+        pattern ADDITION, pattern REMOVAL, js_getRelatedNode,
+        getRelatedNode, getRelatedNodeUnsafe, getRelatedNodeUnchecked,
+        js_getPrevValue, getPrevValue, js_getNewValue, getNewValue,
+        js_getAttrName, getAttrName, js_getAttrChange, getAttrChange,
+        MutationEvent(..), gTypeMutationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initMutationEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
+        js_initMutationEvent ::
+        MutationEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional Node ->
+                  Optional JSString ->
+                    Optional JSString -> Optional JSString -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.initMutationEvent Mozilla MutationEvent.initMutationEvent documentation> 
+initMutationEvent ::
+                  (MonadIO m, ToJSString type', IsNode relatedNode,
+                   ToJSString prevValue, ToJSString newValue, ToJSString attrName) =>
+                    MutationEvent ->
+                      Maybe type' ->
+                        Bool ->
+                          Bool ->
+                            Maybe relatedNode ->
+                              Maybe prevValue ->
+                                Maybe newValue -> Maybe attrName -> Maybe Word -> m ()
+initMutationEvent self type' canBubble cancelable relatedNode
+  prevValue newValue attrName attrChange
+  = liftIO
+      (js_initMutationEvent self (toOptionalJSString type') canBubble
+         cancelable
+         (maybeToOptional (fmap toNode relatedNode))
+         (toOptionalJSString prevValue)
+         (toOptionalJSString newValue)
+         (toOptionalJSString attrName)
+         (maybeToOptional attrChange))
+pattern MODIFICATION = 1
+pattern ADDITION = 2
+pattern REMOVAL = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"relatedNode\"]; })"
+        js_getRelatedNode :: MutationEvent -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
+getRelatedNode :: (MonadIO m) => MutationEvent -> m (Maybe Node)
+getRelatedNode self
+  = liftIO (nullableToMaybe <$> (js_getRelatedNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
+getRelatedNodeUnsafe ::
+                     (MonadIO m, HasCallStack) => MutationEvent -> m Node
+getRelatedNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRelatedNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.relatedNode Mozilla MutationEvent.relatedNode documentation> 
+getRelatedNodeUnchecked :: (MonadIO m) => MutationEvent -> m Node
+getRelatedNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getRelatedNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"prevValue\"]; })"
+        js_getPrevValue :: MutationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.prevValue Mozilla MutationEvent.prevValue documentation> 
+getPrevValue ::
+             (MonadIO m, FromJSString result) => MutationEvent -> m result
+getPrevValue self
+  = liftIO (fromJSString <$> (js_getPrevValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })" js_getNewValue
+        :: MutationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.newValue Mozilla MutationEvent.newValue documentation> 
+getNewValue ::
+            (MonadIO m, FromJSString result) => MutationEvent -> m result
+getNewValue self = liftIO (fromJSString <$> (js_getNewValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attrName\"]; })" js_getAttrName
+        :: MutationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrName Mozilla MutationEvent.attrName documentation> 
+getAttrName ::
+            (MonadIO m, FromJSString result) => MutationEvent -> m result
+getAttrName self = liftIO (fromJSString <$> (js_getAttrName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attrChange\"]; })"
+        js_getAttrChange :: MutationEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent.attrChange Mozilla MutationEvent.attrChange documentation> 
+getAttrChange :: (MonadIO m) => MutationEvent -> m Word
+getAttrChange self = liftIO (js_getAttrChange self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationObserver.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MutationObserver
+       (js_newMutationObserver, newMutationObserver, js_observe, observe,
+        js_disconnect, disconnect, js_takeRecords, takeRecords,
+        takeRecords_, MutationObserver(..), gTypeMutationObserver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"MutationObserver\"]($1); })" js_newMutationObserver ::
+        MutationCallback -> IO MutationObserver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation> 
+newMutationObserver ::
+                    (MonadIO m, IsMutationCallback callback) =>
+                      callback -> m MutationObserver
+newMutationObserver callback
+  = liftIO (js_newMutationObserver (toMutationCallback callback))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"observe\"]($2, $3); })" js_observe
+        ::
+        MutationObserver -> Node -> Optional MutationObserverInit -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.observe Mozilla MutationObserver.observe documentation> 
+observe ::
+        (MonadIO m, IsNode target) =>
+          MutationObserver -> target -> Maybe MutationObserverInit -> m ()
+observe self target options
+  = liftIO
+      (js_observe self (toNode target) (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect :: MutationObserver -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.disconnect Mozilla MutationObserver.disconnect documentation> 
+disconnect :: (MonadIO m) => MutationObserver -> m ()
+disconnect self = liftIO (js_disconnect self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"takeRecords\"](); })"
+        js_takeRecords :: MutationObserver -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
+takeRecords ::
+            (MonadIO m) => MutationObserver -> m [MutationRecord]
+takeRecords self
+  = liftIO ((js_takeRecords self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver.takeRecords Mozilla MutationObserver.takeRecords documentation> 
+takeRecords_ :: (MonadIO m) => MutationObserver -> m ()
+takeRecords_ self = liftIO (void (js_takeRecords self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/MutationRecord.hs
@@ -0,0 +1,188 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.MutationRecord
+       (js_getType, getType, js_getTarget, getTarget, js_getAddedNodes,
+        getAddedNodes, js_getRemovedNodes, getRemovedNodes,
+        js_getPreviousSibling, getPreviousSibling,
+        getPreviousSiblingUnsafe, getPreviousSiblingUnchecked,
+        js_getNextSibling, getNextSibling, getNextSiblingUnsafe,
+        getNextSiblingUnchecked, js_getAttributeName, getAttributeName,
+        getAttributeNameUnsafe, getAttributeNameUnchecked,
+        js_getAttributeNamespace, getAttributeNamespace,
+        getAttributeNamespaceUnsafe, getAttributeNamespaceUnchecked,
+        js_getOldValue, getOldValue, getOldValueUnsafe,
+        getOldValueUnchecked, MutationRecord(..), gTypeMutationRecord)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        MutationRecord -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.type Mozilla MutationRecord.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => MutationRecord -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        MutationRecord -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.target Mozilla MutationRecord.target documentation> 
+getTarget :: (MonadIO m) => MutationRecord -> m Node
+getTarget self = liftIO (js_getTarget self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"addedNodes\"]; })"
+        js_getAddedNodes :: MutationRecord -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.addedNodes Mozilla MutationRecord.addedNodes documentation> 
+getAddedNodes :: (MonadIO m) => MutationRecord -> m NodeList
+getAddedNodes self = liftIO (js_getAddedNodes self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"removedNodes\"]; })"
+        js_getRemovedNodes :: MutationRecord -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.removedNodes Mozilla MutationRecord.removedNodes documentation> 
+getRemovedNodes :: (MonadIO m) => MutationRecord -> m NodeList
+getRemovedNodes self = liftIO (js_getRemovedNodes self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"]; })"
+        js_getPreviousSibling :: MutationRecord -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
+getPreviousSibling ::
+                   (MonadIO m) => MutationRecord -> m (Maybe Node)
+getPreviousSibling self
+  = liftIO (nullableToMaybe <$> (js_getPreviousSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
+getPreviousSiblingUnsafe ::
+                         (MonadIO m, HasCallStack) => MutationRecord -> m Node
+getPreviousSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getPreviousSibling self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.previousSibling Mozilla MutationRecord.previousSibling documentation> 
+getPreviousSiblingUnchecked ::
+                            (MonadIO m) => MutationRecord -> m Node
+getPreviousSiblingUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getPreviousSibling self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"]; })"
+        js_getNextSibling :: MutationRecord -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+getNextSibling :: (MonadIO m) => MutationRecord -> m (Maybe Node)
+getNextSibling self
+  = liftIO (nullableToMaybe <$> (js_getNextSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+getNextSiblingUnsafe ::
+                     (MonadIO m, HasCallStack) => MutationRecord -> m Node
+getNextSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getNextSibling self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.nextSibling Mozilla MutationRecord.nextSibling documentation> 
+getNextSiblingUnchecked :: (MonadIO m) => MutationRecord -> m Node
+getNextSiblingUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getNextSibling self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attributeName\"]; })"
+        js_getAttributeName :: MutationRecord -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
+getAttributeName ::
+                 (MonadIO m, FromJSString result) =>
+                   MutationRecord -> m (Maybe result)
+getAttributeName self
+  = liftIO (fromMaybeJSString <$> (js_getAttributeName self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
+getAttributeNameUnsafe ::
+                       (MonadIO m, HasCallStack, FromJSString result) =>
+                         MutationRecord -> m result
+getAttributeNameUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getAttributeName self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeName Mozilla MutationRecord.attributeName documentation> 
+getAttributeNameUnchecked ::
+                          (MonadIO m, FromJSString result) => MutationRecord -> m result
+getAttributeNameUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getAttributeName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"attributeNamespace\"]; })"
+        js_getAttributeNamespace ::
+        MutationRecord -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
+getAttributeNamespace ::
+                      (MonadIO m, FromJSString result) =>
+                        MutationRecord -> m (Maybe result)
+getAttributeNamespace self
+  = liftIO (fromMaybeJSString <$> (js_getAttributeNamespace self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
+getAttributeNamespaceUnsafe ::
+                            (MonadIO m, HasCallStack, FromJSString result) =>
+                              MutationRecord -> m result
+getAttributeNamespaceUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getAttributeNamespace self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.attributeNamespace Mozilla MutationRecord.attributeNamespace documentation> 
+getAttributeNamespaceUnchecked ::
+                               (MonadIO m, FromJSString result) => MutationRecord -> m result
+getAttributeNamespaceUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getAttributeNamespace self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })" js_getOldValue
+        :: MutationRecord -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
+getOldValue ::
+            (MonadIO m, FromJSString result) =>
+              MutationRecord -> m (Maybe result)
+getOldValue self
+  = liftIO (fromMaybeJSString <$> (js_getOldValue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
+getOldValueUnsafe ::
+                  (MonadIO m, HasCallStack, FromJSString result) =>
+                    MutationRecord -> m result
+getOldValueUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getOldValue self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord.oldValue Mozilla MutationRecord.oldValue documentation> 
+getOldValueUnchecked ::
+                     (MonadIO m, FromJSString result) => MutationRecord -> m result
+getOldValueUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getOldValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NamedNodeMap.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NamedNodeMap
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getNamedItem,
+        getNamedItem, getNamedItem_, getNamedItemUnsafe,
+        getNamedItemUnchecked, js_getNamedItemNS, getNamedItemNS,
+        getNamedItemNS_, getNamedItemNSUnsafe, getNamedItemNSUnchecked,
+        js_setNamedItem, setNamedItem, setNamedItem_, setNamedItemUnsafe,
+        setNamedItemUnchecked, js_setNamedItemNS, setNamedItemNS,
+        setNamedItemNS_, setNamedItemNSUnsafe, setNamedItemNSUnchecked,
+        js_removeNamedItem, removeNamedItem, removeNamedItem_,
+        js_removeNamedItemNS, removeNamedItemNS, removeNamedItemNS_,
+        js_getLength, getLength, NamedNodeMap(..), gTypeNamedNodeMap)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        NamedNodeMap -> Word -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+item :: (MonadIO m) => NamedNodeMap -> Word -> m (Maybe Attr)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+item_ :: (MonadIO m) => NamedNodeMap -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => NamedNodeMap -> Word -> m Attr
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.item Mozilla NamedNodeMap.item documentation> 
+itemUnchecked :: (MonadIO m) => NamedNodeMap -> Word -> m Attr
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_getNamedItem ::
+        NamedNodeMap -> JSString -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItem ::
+             (MonadIO m, ToJSString qualifiedName) =>
+               NamedNodeMap -> qualifiedName -> m (Maybe Attr)
+getNamedItem self qualifiedName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getNamedItem self (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItem_ ::
+              (MonadIO m, ToJSString qualifiedName) =>
+                NamedNodeMap -> qualifiedName -> m ()
+getNamedItem_ self qualifiedName
+  = liftIO (void (js_getNamedItem self (toJSString qualifiedName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItemUnsafe ::
+                   (MonadIO m, ToJSString qualifiedName, HasCallStack) =>
+                     NamedNodeMap -> qualifiedName -> m Attr
+getNamedItemUnsafe self qualifiedName
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getNamedItem self (toJSString qualifiedName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItem Mozilla NamedNodeMap.getNamedItem documentation> 
+getNamedItemUnchecked ::
+                      (MonadIO m, ToJSString qualifiedName) =>
+                        NamedNodeMap -> qualifiedName -> m Attr
+getNamedItemUnchecked self qualifiedName
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getNamedItem self (toJSString qualifiedName)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getNamedItemNS\"]($2, $3); })"
+        js_getNamedItemNS ::
+        NamedNodeMap -> Optional JSString -> JSString -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNS ::
+               (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                 NamedNodeMap -> Maybe namespaceURI -> localName -> m (Maybe Attr)
+getNamedItemNS self namespaceURI localName
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNS_ ::
+                (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                  NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
+getNamedItemNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNSUnsafe ::
+                     (MonadIO m, ToJSString namespaceURI, ToJSString localName,
+                      HasCallStack) =>
+                       NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
+getNamedItemNSUnsafe self namespaceURI localName
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getNamedItemNS self (toOptionalJSString namespaceURI)
+             (toJSString localName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.getNamedItemNS Mozilla NamedNodeMap.getNamedItemNS documentation> 
+getNamedItemNSUnchecked ::
+                        (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                          NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
+getNamedItemNSUnchecked self namespaceURI localName
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getNamedItemNS self (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItem\"]($2); })"
+        js_setNamedItem :: NamedNodeMap -> Attr -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItem ::
+             (MonadIO m) => NamedNodeMap -> Attr -> m (Maybe Attr)
+setNamedItem self attr
+  = liftIO (nullableToMaybe <$> (js_setNamedItem self attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItem_ :: (MonadIO m) => NamedNodeMap -> Attr -> m ()
+setNamedItem_ self attr = liftIO (void (js_setNamedItem self attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItemUnsafe ::
+                   (MonadIO m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
+setNamedItemUnsafe self attr
+  = liftIO
+      ((nullableToMaybe <$> (js_setNamedItem self attr)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItem Mozilla NamedNodeMap.setNamedItem documentation> 
+setNamedItemUnchecked ::
+                      (MonadIO m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemUnchecked self attr
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_setNamedItem self attr))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setNamedItemNS\"]($2); })"
+        js_setNamedItemNS :: NamedNodeMap -> Attr -> IO (Nullable Attr)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNS ::
+               (MonadIO m) => NamedNodeMap -> Attr -> m (Maybe Attr)
+setNamedItemNS self attr
+  = liftIO (nullableToMaybe <$> (js_setNamedItemNS self attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNS_ :: (MonadIO m) => NamedNodeMap -> Attr -> m ()
+setNamedItemNS_ self attr
+  = liftIO (void (js_setNamedItemNS self attr))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNSUnsafe ::
+                     (MonadIO m, HasCallStack) => NamedNodeMap -> Attr -> m Attr
+setNamedItemNSUnsafe self attr
+  = liftIO
+      ((nullableToMaybe <$> (js_setNamedItemNS self attr)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.setNamedItemNS Mozilla NamedNodeMap.setNamedItemNS documentation> 
+setNamedItemNSUnchecked ::
+                        (MonadIO m) => NamedNodeMap -> Attr -> m Attr
+setNamedItemNSUnchecked self attr
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_setNamedItemNS self attr))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeNamedItem\"]($2); })"
+        js_removeNamedItem :: NamedNodeMap -> JSString -> IO Attr
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
+removeNamedItem ::
+                (MonadIO m, ToJSString qualifiedName) =>
+                  NamedNodeMap -> qualifiedName -> m Attr
+removeNamedItem self qualifiedName
+  = liftIO (js_removeNamedItem self (toJSString qualifiedName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItem Mozilla NamedNodeMap.removeNamedItem documentation> 
+removeNamedItem_ ::
+                 (MonadIO m, ToJSString qualifiedName) =>
+                   NamedNodeMap -> qualifiedName -> m ()
+removeNamedItem_ self qualifiedName
+  = liftIO
+      (void (js_removeNamedItem self (toJSString qualifiedName)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"removeNamedItemNS\"]($2, $3); })"
+        js_removeNamedItemNS ::
+        NamedNodeMap -> Optional JSString -> JSString -> IO Attr
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
+removeNamedItemNS ::
+                  (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                    NamedNodeMap -> Maybe namespaceURI -> localName -> m Attr
+removeNamedItemNS self namespaceURI localName
+  = liftIO
+      (js_removeNamedItemNS self (toOptionalJSString namespaceURI)
+         (toJSString localName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.removeNamedItemNS Mozilla NamedNodeMap.removeNamedItemNS documentation> 
+removeNamedItemNS_ ::
+                   (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                     NamedNodeMap -> Maybe namespaceURI -> localName -> m ()
+removeNamedItemNS_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_removeNamedItemNS self (toOptionalJSString namespaceURI)
+            (toJSString localName)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        NamedNodeMap -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap.length Mozilla NamedNodeMap.length documentation> 
+getLength :: (MonadIO m) => NamedNodeMap -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Navigator.hs
@@ -0,0 +1,264 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Navigator
+       (js_requestMediaKeySystemAccess, requestMediaKeySystemAccess,
+        requestMediaKeySystemAccess_, js_getGamepads, getGamepads,
+        getGamepads_, js_getUserMedia, getUserMedia,
+        js_registerProtocolHandler, registerProtocolHandler,
+        js_isProtocolHandlerRegistered, isProtocolHandlerRegistered,
+        isProtocolHandlerRegistered_, js_unregisterProtocolHandler,
+        unregisterProtocolHandler, js_vibratePattern, vibratePattern,
+        vibratePattern_, js_vibrate, vibrate, vibrate_, js_javaEnabled,
+        javaEnabled, javaEnabled_, js_getStorageUpdates, getStorageUpdates,
+        js_getGeolocation, getGeolocation, js_getMediaDevices,
+        getMediaDevices, js_getWebkitTemporaryStorage,
+        getWebkitTemporaryStorage, js_getWebkitPersistentStorage,
+        getWebkitPersistentStorage, js_getWebdriver, getWebdriver,
+        js_getPlugins, getPlugins, js_getMimeTypes, getMimeTypes,
+        js_getCookieEnabled, getCookieEnabled, Navigator(..),
+        gTypeNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"requestMediaKeySystemAccess\"]($2,\n$3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_requestMediaKeySystemAccess ::
+        Navigator -> JSString -> JSVal -> IO (JSVal, MediaKeySystemAccess)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
+requestMediaKeySystemAccess ::
+                            (MonadIO m, ToJSString keySystem) =>
+                              Navigator ->
+                                keySystem ->
+                                  [MediaKeySystemConfiguration] -> m MediaKeySystemAccess
+requestMediaKeySystemAccess self keySystem supportedConfiguration
+  = liftIO
+      ((toJSVal supportedConfiguration >>=
+          \ supportedConfiguration' ->
+            js_requestMediaKeySystemAccess self (toJSString keySystem)
+              supportedConfiguration')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.requestMediaKeySystemAccess Mozilla Navigator.requestMediaKeySystemAccess documentation> 
+requestMediaKeySystemAccess_ ::
+                             (MonadIO m, ToJSString keySystem) =>
+                               Navigator -> keySystem -> [MediaKeySystemConfiguration] -> m ()
+requestMediaKeySystemAccess_ self keySystem supportedConfiguration
+  = liftIO
+      (void
+         (toJSVal supportedConfiguration >>=
+            \ supportedConfiguration' ->
+              js_requestMediaKeySystemAccess self (toJSString keySystem)
+                supportedConfiguration'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getGamepads\"](); })"
+        js_getGamepads :: Navigator -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
+getGamepads :: (MonadIO m) => Navigator -> m [Gamepad]
+getGamepads self
+  = liftIO ((js_getGamepads self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getGamepads Mozilla Navigator.getGamepads documentation> 
+getGamepads_ :: (MonadIO m) => Navigator -> m ()
+getGamepads_ self = liftIO (void (js_getGamepads self))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"getUserMedia\"]($2, $3, $4); })"
+        js_getUserMedia ::
+        Navigator ->
+          MediaStreamConstraints ->
+            NavigatorUserMediaSuccessCallback ->
+              NavigatorUserMediaErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getUserMedia Mozilla Navigator.getUserMedia documentation> 
+getUserMedia ::
+             (MonadIO m) =>
+               Navigator ->
+                 MediaStreamConstraints ->
+                   NavigatorUserMediaSuccessCallback ->
+                     NavigatorUserMediaErrorCallback -> m ()
+getUserMedia self constraints successCallback errorCallback
+  = liftIO
+      (js_getUserMedia self constraints successCallback errorCallback)
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4) => { return $1[\"registerProtocolHandler\"]($2,\n$3, $4); })"
+        js_registerProtocolHandler ::
+        Navigator -> JSString -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.registerProtocolHandler Mozilla Navigator.registerProtocolHandler documentation> 
+registerProtocolHandler ::
+                        (MonadIO m, ToJSString scheme, ToJSString url, ToJSString title) =>
+                          Navigator -> scheme -> url -> title -> m ()
+registerProtocolHandler self scheme url title
+  = liftIO
+      (js_registerProtocolHandler self (toJSString scheme)
+         (toJSString url)
+         (toJSString title))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"isProtocolHandlerRegistered\"]($2,\n$3); })"
+        js_isProtocolHandlerRegistered ::
+        Navigator -> JSString -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
+isProtocolHandlerRegistered ::
+                            (MonadIO m, ToJSString scheme, ToJSString url,
+                             FromJSString result) =>
+                              Navigator -> scheme -> url -> m result
+isProtocolHandlerRegistered self scheme url
+  = liftIO
+      (fromJSString <$>
+         (js_isProtocolHandlerRegistered self (toJSString scheme)
+            (toJSString url)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.isProtocolHandlerRegistered Mozilla Navigator.isProtocolHandlerRegistered documentation> 
+isProtocolHandlerRegistered_ ::
+                             (MonadIO m, ToJSString scheme, ToJSString url) =>
+                               Navigator -> scheme -> url -> m ()
+isProtocolHandlerRegistered_ self scheme url
+  = liftIO
+      (void
+         (js_isProtocolHandlerRegistered self (toJSString scheme)
+            (toJSString url)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"unregisterProtocolHandler\"]($2,\n$3); })"
+        js_unregisterProtocolHandler ::
+        Navigator -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.unregisterProtocolHandler Mozilla Navigator.unregisterProtocolHandler documentation> 
+unregisterProtocolHandler ::
+                          (MonadIO m, ToJSString scheme, ToJSString url) =>
+                            Navigator -> scheme -> url -> m ()
+unregisterProtocolHandler self scheme url
+  = liftIO
+      (js_unregisterProtocolHandler self (toJSString scheme)
+         (toJSString url))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"vibrate\"]($2) ? 1 : 0); })"
+        js_vibratePattern :: Navigator -> JSVal -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibratePattern :: (MonadIO m) => Navigator -> [Word] -> m Bool
+vibratePattern self pattern'
+  = liftIO
+      (toJSVal pattern' >>=
+         \ pattern'' -> js_vibratePattern self pattern'')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibratePattern_ :: (MonadIO m) => Navigator -> [Word] -> m ()
+vibratePattern_ self pattern'
+  = liftIO
+      (void
+         (toJSVal pattern' >>=
+            \ pattern'' -> js_vibratePattern self pattern''))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"vibrate\"]($2) ? 1 : 0); })"
+        js_vibrate :: Navigator -> Word -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibrate :: (MonadIO m) => Navigator -> Word -> m Bool
+vibrate self time = liftIO (js_vibrate self time)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.vibrate Mozilla Navigator.vibrate documentation> 
+vibrate_ :: (MonadIO m) => Navigator -> Word -> m ()
+vibrate_ self time = liftIO (void (js_vibrate self time))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"javaEnabled\"]() ? 1 : 0); })"
+        js_javaEnabled :: Navigator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
+javaEnabled :: (MonadIO m) => Navigator -> m Bool
+javaEnabled self = liftIO (js_javaEnabled self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.javaEnabled Mozilla Navigator.javaEnabled documentation> 
+javaEnabled_ :: (MonadIO m) => Navigator -> m ()
+javaEnabled_ self = liftIO (void (js_javaEnabled self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getStorageUpdates\"](); })"
+        js_getStorageUpdates :: Navigator -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.getStorageUpdates Mozilla Navigator.getStorageUpdates documentation> 
+getStorageUpdates :: (MonadIO m) => Navigator -> m ()
+getStorageUpdates self = liftIO (js_getStorageUpdates self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"geolocation\"]; })"
+        js_getGeolocation :: Navigator -> IO Geolocation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.geolocation Mozilla Navigator.geolocation documentation> 
+getGeolocation :: (MonadIO m) => Navigator -> m Geolocation
+getGeolocation self = liftIO (js_getGeolocation self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mediaDevices\"]; })"
+        js_getMediaDevices :: Navigator -> IO MediaDevices
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mediaDevices Mozilla Navigator.mediaDevices documentation> 
+getMediaDevices :: (MonadIO m) => Navigator -> m MediaDevices
+getMediaDevices self = liftIO (js_getMediaDevices self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitTemporaryStorage\"]; })"
+        js_getWebkitTemporaryStorage :: Navigator -> IO StorageQuota
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitTemporaryStorage Mozilla Navigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadIO m) => Navigator -> m StorageQuota
+getWebkitTemporaryStorage self
+  = liftIO (js_getWebkitTemporaryStorage self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitPersistentStorage\"]; })"
+        js_getWebkitPersistentStorage :: Navigator -> IO StorageQuota
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitPersistentStorage Mozilla Navigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadIO m) => Navigator -> m StorageQuota
+getWebkitPersistentStorage self
+  = liftIO (js_getWebkitPersistentStorage self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"webdriver\"] ? 1 : 0); })"
+        js_getWebdriver :: Navigator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webdriver Mozilla Navigator.webdriver documentation> 
+getWebdriver :: (MonadIO m) => Navigator -> m Bool
+getWebdriver self = liftIO (js_getWebdriver self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"plugins\"]; })" js_getPlugins ::
+        Navigator -> IO PluginArray
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.plugins Mozilla Navigator.plugins documentation> 
+getPlugins :: (MonadIO m) => Navigator -> m PluginArray
+getPlugins self = liftIO (js_getPlugins self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mimeTypes\"]; })"
+        js_getMimeTypes :: Navigator -> IO MimeTypeArray
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.mimeTypes Mozilla Navigator.mimeTypes documentation> 
+getMimeTypes :: (MonadIO m) => Navigator -> m MimeTypeArray
+getMimeTypes self = liftIO (js_getMimeTypes self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"cookieEnabled\"] ? 1 : 0); })"
+        js_getCookieEnabled :: Navigator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.cookieEnabled Mozilla Navigator.cookieEnabled documentation> 
+getCookieEnabled :: (MonadIO m) => Navigator -> m Bool
+getCookieEnabled self = liftIO (js_getCookieEnabled self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorConcurrentHardware.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorConcurrentHardware
+       (js_getHardwareConcurrency, getHardwareConcurrency,
+        NavigatorConcurrentHardware(..), gTypeNavigatorConcurrentHardware,
+        IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hardwareConcurrency\"]; })"
+        js_getHardwareConcurrency ::
+        NavigatorConcurrentHardware -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorConcurrentHardware.hardwareConcurrency Mozilla NavigatorConcurrentHardware.hardwareConcurrency documentation> 
+getHardwareConcurrency ::
+                       (MonadIO m, IsNavigatorConcurrentHardware self) => self -> m Word64
+getHardwareConcurrency self
+  = liftIO
+      (round <$>
+         (js_getHardwareConcurrency (toNavigatorConcurrentHardware self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorID.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorID
+       (js_getAppCodeName, getAppCodeName, js_getAppName, getAppName,
+        js_getAppVersion, getAppVersion, js_getPlatform, getPlatform,
+        js_getProduct, getProduct, js_getProductSub, getProductSub,
+        js_getUserAgent, getUserAgent, js_getVendor, getVendor,
+        js_getVendorSub, getVendorSub, NavigatorID(..), gTypeNavigatorID,
+        IsNavigatorID, toNavigatorID)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"appCodeName\"]; })"
+        js_getAppCodeName :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appCodeName Mozilla NavigatorID.appCodeName documentation> 
+getAppCodeName ::
+               (MonadIO m, IsNavigatorID self, FromJSString result) =>
+                 self -> m result
+getAppCodeName self
+  = liftIO
+      (fromJSString <$> (js_getAppCodeName (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"appName\"]; })" js_getAppName ::
+        NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appName Mozilla NavigatorID.appName documentation> 
+getAppName ::
+           (MonadIO m, IsNavigatorID self, FromJSString result) =>
+             self -> m result
+getAppName self
+  = liftIO (fromJSString <$> (js_getAppName (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"appVersion\"]; })"
+        js_getAppVersion :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.appVersion Mozilla NavigatorID.appVersion documentation> 
+getAppVersion ::
+              (MonadIO m, IsNavigatorID self, FromJSString result) =>
+                self -> m result
+getAppVersion self
+  = liftIO (fromJSString <$> (js_getAppVersion (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"platform\"]; })" js_getPlatform
+        :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.platform Mozilla NavigatorID.platform documentation> 
+getPlatform ::
+            (MonadIO m, IsNavigatorID self, FromJSString result) =>
+              self -> m result
+getPlatform self
+  = liftIO (fromJSString <$> (js_getPlatform (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"product\"]; })" js_getProduct ::
+        NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.product Mozilla NavigatorID.product documentation> 
+getProduct ::
+           (MonadIO m, IsNavigatorID self, FromJSString result) =>
+             self -> m result
+getProduct self
+  = liftIO (fromJSString <$> (js_getProduct (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"productSub\"]; })"
+        js_getProductSub :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.productSub Mozilla NavigatorID.productSub documentation> 
+getProductSub ::
+              (MonadIO m, IsNavigatorID self, FromJSString result) =>
+                self -> m result
+getProductSub self
+  = liftIO (fromJSString <$> (js_getProductSub (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"userAgent\"]; })"
+        js_getUserAgent :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.userAgent Mozilla NavigatorID.userAgent documentation> 
+getUserAgent ::
+             (MonadIO m, IsNavigatorID self, FromJSString result) =>
+               self -> m result
+getUserAgent self
+  = liftIO (fromJSString <$> (js_getUserAgent (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vendor\"]; })" js_getVendor ::
+        NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendor Mozilla NavigatorID.vendor documentation> 
+getVendor ::
+          (MonadIO m, IsNavigatorID self, FromJSString result) =>
+            self -> m result
+getVendor self
+  = liftIO (fromJSString <$> (js_getVendor (toNavigatorID self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vendorSub\"]; })"
+        js_getVendorSub :: NavigatorID -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID.vendorSub Mozilla NavigatorID.vendorSub documentation> 
+getVendorSub ::
+             (MonadIO m, IsNavigatorID self, FromJSString result) =>
+               self -> m result
+getVendorSub self
+  = liftIO (fromJSString <$> (js_getVendorSub (toNavigatorID self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorLanguage.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorLanguage
+       (js_getLanguage, getLanguage, js_getLanguages, getLanguages,
+        NavigatorLanguage(..), gTypeNavigatorLanguage, IsNavigatorLanguage,
+        toNavigatorLanguage)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
+        :: NavigatorLanguage -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.language Mozilla NavigatorLanguage.language documentation> 
+getLanguage ::
+            (MonadIO m, IsNavigatorLanguage self, FromJSString result) =>
+              self -> m result
+getLanguage self
+  = liftIO
+      (fromJSString <$> (js_getLanguage (toNavigatorLanguage self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"languages\"]; })"
+        js_getLanguages :: NavigatorLanguage -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage.languages Mozilla NavigatorLanguage.languages documentation> 
+getLanguages ::
+             (MonadIO m, IsNavigatorLanguage self, FromJSString result) =>
+               self -> m [result]
+getLanguages self
+  = liftIO
+      ((js_getLanguages (toNavigatorLanguage self)) >>=
+         fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorOnLine.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorOnLine
+       (js_getOnLine, getOnLine, NavigatorOnLine(..),
+        gTypeNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"onLine\"] ? 1 : 0); })"
+        js_getOnLine :: NavigatorOnLine -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine.onLine Mozilla NavigatorOnLine.onLine documentation> 
+getOnLine :: (MonadIO m, IsNavigatorOnLine self) => self -> m Bool
+getOnLine self = liftIO (js_getOnLine (toNavigatorOnLine self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaError.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError
+       (js_getConstraintName, getConstraintName,
+        NavigatorUserMediaError(..), gTypeNavigatorUserMediaError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"constraintName\"]; })"
+        js_getConstraintName :: NavigatorUserMediaError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError.constraintName Mozilla NavigatorUserMediaError.constraintName documentation> 
+getConstraintName ::
+                  (MonadIO m, FromJSString result) =>
+                    NavigatorUserMediaError -> m result
+getConstraintName self
+  = liftIO (fromJSString <$> (js_getConstraintName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaErrorCallback.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaErrorCallback
+       (newNavigatorUserMediaErrorCallback,
+        newNavigatorUserMediaErrorCallbackSync,
+        newNavigatorUserMediaErrorCallbackAsync,
+        NavigatorUserMediaErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallback ::
+                                   (MonadIO m) =>
+                                     (NavigatorUserMediaError -> IO ()) ->
+                                       m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallback callback
+  = liftIO
+      (NavigatorUserMediaErrorCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallbackSync ::
+                                       (MonadIO m) =>
+                                         (NavigatorUserMediaError -> IO ()) ->
+                                           m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallbackSync callback
+  = liftIO
+      (NavigatorUserMediaErrorCallback <$>
+         syncCallback1 ContinueAsync
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaErrorCallback Mozilla NavigatorUserMediaErrorCallback documentation> 
+newNavigatorUserMediaErrorCallbackAsync ::
+                                        (MonadIO m) =>
+                                          (NavigatorUserMediaError -> IO ()) ->
+                                            m NavigatorUserMediaErrorCallback
+newNavigatorUserMediaErrorCallbackAsync callback
+  = liftIO
+      (NavigatorUserMediaErrorCallback <$>
+         asyncCallback1
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NavigatorUserMediaSuccessCallback.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaSuccessCallback
+       (newNavigatorUserMediaSuccessCallback,
+        newNavigatorUserMediaSuccessCallbackSync,
+        newNavigatorUserMediaSuccessCallbackAsync,
+        NavigatorUserMediaSuccessCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallback ::
+                                     (MonadIO m) =>
+                                       (MediaStream -> IO ()) -> m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallback callback
+  = liftIO
+      (NavigatorUserMediaSuccessCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ stream ->
+              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallbackSync ::
+                                         (MonadIO m) =>
+                                           (MediaStream -> IO ()) ->
+                                             m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallbackSync callback
+  = liftIO
+      (NavigatorUserMediaSuccessCallback <$>
+         syncCallback1 ContinueAsync
+           (\ stream ->
+              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaSuccessCallback Mozilla NavigatorUserMediaSuccessCallback documentation> 
+newNavigatorUserMediaSuccessCallbackAsync ::
+                                          (MonadIO m) =>
+                                            (MediaStream -> IO ()) ->
+                                              m NavigatorUserMediaSuccessCallback
+newNavigatorUserMediaSuccessCallbackAsync callback
+  = liftIO
+      (NavigatorUserMediaSuccessCallback <$>
+         asyncCallback1
+           (\ stream ->
+              fromJSValUnchecked stream >>= \ stream' -> callback stream'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Node.hs b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Node.hs
@@ -0,0 +1,676 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Node
+       (js_getRootNode, getRootNode, getRootNode_, js_hasChildNodes,
+        hasChildNodes, hasChildNodes_, js_normalize, normalize,
+        js_cloneNode, cloneNode, cloneNode_, js_isEqualNode, isEqualNode,
+        isEqualNode_, js_isSameNode, isSameNode, isSameNode_,
+        js_compareDocumentPosition, compareDocumentPosition,
+        compareDocumentPosition_, js_contains, contains, contains_,
+        js_lookupPrefix, lookupPrefix, lookupPrefix_, lookupPrefixUnsafe,
+        lookupPrefixUnchecked, js_lookupNamespaceURI, lookupNamespaceURI,
+        lookupNamespaceURI_, lookupNamespaceURIUnsafe,
+        lookupNamespaceURIUnchecked, js_isDefaultNamespace,
+        isDefaultNamespace, isDefaultNamespace_, js_insertBefore,
+        insertBefore, insertBefore_, js_appendChild, appendChild,
+        appendChild_, js_replaceChild, replaceChild, replaceChild_,
+        js_removeChild, removeChild, removeChild_, pattern ELEMENT_NODE,
+        pattern ATTRIBUTE_NODE, pattern TEXT_NODE,
+        pattern CDATA_SECTION_NODE, pattern ENTITY_REFERENCE_NODE,
+        pattern ENTITY_NODE, pattern PROCESSING_INSTRUCTION_NODE,
+        pattern COMMENT_NODE, pattern DOCUMENT_NODE,
+        pattern DOCUMENT_TYPE_NODE, pattern DOCUMENT_FRAGMENT_NODE,
+        pattern NOTATION_NODE, pattern DOCUMENT_POSITION_DISCONNECTED,
+        pattern DOCUMENT_POSITION_PRECEDING,
+        pattern DOCUMENT_POSITION_FOLLOWING,
+        pattern DOCUMENT_POSITION_CONTAINS,
+        pattern DOCUMENT_POSITION_CONTAINED_BY,
+        pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, js_getNodeType,
+        getNodeType, js_getNodeName, getNodeName, js_getBaseURI,
+        getBaseURI, js_getIsConnected, getIsConnected, js_getOwnerDocument,
+        getOwnerDocument, getOwnerDocumentUnsafe,
+        getOwnerDocumentUnchecked, js_getParentNode, getParentNode,
+        getParentNodeUnsafe, getParentNodeUnchecked, js_getParentElement,
+        getParentElement, getParentElementUnsafe,
+        getParentElementUnchecked, js_getChildNodes, getChildNodes,
+        js_getFirstChild, getFirstChild, getFirstChildUnsafe,
+        getFirstChildUnchecked, js_getLastChild, getLastChild,
+        getLastChildUnsafe, getLastChildUnchecked, js_getPreviousSibling,
+        getPreviousSibling, getPreviousSiblingUnsafe,
+        getPreviousSiblingUnchecked, js_getNextSibling, getNextSibling,
+        getNextSiblingUnsafe, getNextSiblingUnchecked, js_setNodeValue,
+        setNodeValue, js_getNodeValue, getNodeValue, getNodeValueUnsafe,
+        getNodeValueUnchecked, js_setTextContent, setTextContent,
+        js_getTextContent, getTextContent, getTextContentUnsafe,
+        getTextContentUnchecked, Node(..), gTypeNode, IsNode, toNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getRootNode\"]($2); })"
+        js_getRootNode :: Node -> Optional GetRootNodeOptions -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
+getRootNode ::
+            (MonadIO m, IsNode self) =>
+              self -> Maybe GetRootNodeOptions -> m Node
+getRootNode self options
+  = liftIO (js_getRootNode (toNode self) (maybeToOptional options))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.getRootNode Mozilla Node.getRootNode documentation> 
+getRootNode_ ::
+             (MonadIO m, IsNode self) =>
+               self -> Maybe GetRootNodeOptions -> m ()
+getRootNode_ self options
+  = liftIO
+      (void (js_getRootNode (toNode self) (maybeToOptional options)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"hasChildNodes\"]() ? 1 : 0); })" js_hasChildNodes ::
+        Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
+hasChildNodes :: (MonadIO m, IsNode self) => self -> m Bool
+hasChildNodes self = liftIO (js_hasChildNodes (toNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.hasChildNodes Mozilla Node.hasChildNodes documentation> 
+hasChildNodes_ :: (MonadIO m, IsNode self) => self -> m ()
+hasChildNodes_ self
+  = liftIO (void (js_hasChildNodes (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"normalize\"](); })" js_normalize
+        :: Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.normalize Mozilla Node.normalize documentation> 
+normalize :: (MonadIO m, IsNode self) => self -> m ()
+normalize self = liftIO (js_normalize (toNode self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"cloneNode\"]($2); })" js_cloneNode
+        :: Node -> Bool -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
+cloneNode :: (MonadIO m, IsNode self) => self -> Bool -> m Node
+cloneNode self deep = liftIO (js_cloneNode (toNode self) deep)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.cloneNode Mozilla Node.cloneNode documentation> 
+cloneNode_ :: (MonadIO m, IsNode self) => self -> Bool -> m ()
+cloneNode_ self deep
+  = liftIO (void (js_cloneNode (toNode self) deep))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"isEqualNode\"]($2) ? 1 : 0); })" js_isEqualNode ::
+        Node -> Optional Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
+isEqualNode ::
+            (MonadIO m, IsNode self, IsNode other) =>
+              self -> Maybe other -> m Bool
+isEqualNode self other
+  = liftIO
+      (js_isEqualNode (toNode self)
+         (maybeToOptional (fmap toNode other)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isEqualNode Mozilla Node.isEqualNode documentation> 
+isEqualNode_ ::
+             (MonadIO m, IsNode self, IsNode other) =>
+               self -> Maybe other -> m ()
+isEqualNode_ self other
+  = liftIO
+      (void
+         (js_isEqualNode (toNode self)
+            (maybeToOptional (fmap toNode other))))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"isSameNode\"]($2) ? 1 : 0); })"
+        js_isSameNode :: Node -> Optional Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
+isSameNode ::
+           (MonadIO m, IsNode self, IsNode other) =>
+             self -> Maybe other -> m Bool
+isSameNode self other
+  = liftIO
+      (js_isSameNode (toNode self) (maybeToOptional (fmap toNode other)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isSameNode Mozilla Node.isSameNode documentation> 
+isSameNode_ ::
+            (MonadIO m, IsNode self, IsNode other) =>
+              self -> Maybe other -> m ()
+isSameNode_ self other
+  = liftIO
+      (void
+         (js_isSameNode (toNode self)
+            (maybeToOptional (fmap toNode other))))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"compareDocumentPosition\"]($2); })" js_compareDocumentPosition ::
+        Node -> Node -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
+compareDocumentPosition ::
+                        (MonadIO m, IsNode self, IsNode other) => self -> other -> m Word
+compareDocumentPosition self other
+  = liftIO (js_compareDocumentPosition (toNode self) (toNode other))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.compareDocumentPosition Mozilla Node.compareDocumentPosition documentation> 
+compareDocumentPosition_ ::
+                         (MonadIO m, IsNode self, IsNode other) => self -> other -> m ()
+compareDocumentPosition_ self other
+  = liftIO
+      (void (js_compareDocumentPosition (toNode self) (toNode other)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"contains\"]($2) ? 1 : 0); })"
+        js_contains :: Node -> Optional Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
+contains ::
+         (MonadIO m, IsNode self, IsNode other) =>
+           self -> Maybe other -> m Bool
+contains self other
+  = liftIO
+      (js_contains (toNode self) (maybeToOptional (fmap toNode other)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.contains Mozilla Node.contains documentation> 
+contains_ ::
+          (MonadIO m, IsNode self, IsNode other) =>
+            self -> Maybe other -> m ()
+contains_ self other
+  = liftIO
+      (void
+         (js_contains (toNode self) (maybeToOptional (fmap toNode other))))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupPrefix\"]($2); })"
+        js_lookupPrefix ::
+        Node -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefix ::
+             (MonadIO m, IsNode self, ToJSString namespaceURI,
+              FromJSString result) =>
+               self -> Maybe namespaceURI -> m (Maybe result)
+lookupPrefix self namespaceURI
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefix_ ::
+              (MonadIO m, IsNode self, ToJSString namespaceURI) =>
+                self -> Maybe namespaceURI -> m ()
+lookupPrefix_ self namespaceURI
+  = liftIO
+      (void
+         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefixUnsafe ::
+                   (MonadIO m, IsNode self, ToJSString namespaceURI, HasCallStack,
+                    FromJSString result) =>
+                     self -> Maybe namespaceURI -> m result
+lookupPrefixUnsafe self namespaceURI
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupPrefix Mozilla Node.lookupPrefix documentation> 
+lookupPrefixUnchecked ::
+                      (MonadIO m, IsNode self, ToJSString namespaceURI,
+                       FromJSString result) =>
+                        self -> Maybe namespaceURI -> m result
+lookupPrefixUnchecked self namespaceURI
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_lookupPrefix (toNode self) (toOptionalJSString namespaceURI)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupNamespaceURI\"]($2); })"
+        js_lookupNamespaceURI ::
+        Node -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURI ::
+                   (MonadIO m, IsNode self, ToJSString prefix, FromJSString result) =>
+                     self -> Maybe prefix -> m (Maybe result)
+lookupNamespaceURI self prefix
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURI_ ::
+                    (MonadIO m, IsNode self, ToJSString prefix) =>
+                      self -> Maybe prefix -> m ()
+lookupNamespaceURI_ self prefix
+  = liftIO
+      (void
+         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnsafe ::
+                         (MonadIO m, IsNode self, ToJSString prefix, HasCallStack,
+                          FromJSString result) =>
+                           self -> Maybe prefix -> m result
+lookupNamespaceURIUnsafe self prefix
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lookupNamespaceURI Mozilla Node.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnchecked ::
+                            (MonadIO m, IsNode self, ToJSString prefix, FromJSString result) =>
+                              self -> Maybe prefix -> m result
+lookupNamespaceURIUnchecked self prefix
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_lookupNamespaceURI (toNode self) (toOptionalJSString prefix)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"isDefaultNamespace\"]($2) ? 1 : 0); })" js_isDefaultNamespace ::
+        Node -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
+isDefaultNamespace ::
+                   (MonadIO m, IsNode self, ToJSString namespaceURI) =>
+                     self -> Maybe namespaceURI -> m Bool
+isDefaultNamespace self namespaceURI
+  = liftIO
+      (js_isDefaultNamespace (toNode self)
+         (toOptionalJSString namespaceURI))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isDefaultNamespace Mozilla Node.isDefaultNamespace documentation> 
+isDefaultNamespace_ ::
+                    (MonadIO m, IsNode self, ToJSString namespaceURI) =>
+                      self -> Maybe namespaceURI -> m ()
+isDefaultNamespace_ self namespaceURI
+  = liftIO
+      (void
+         (js_isDefaultNamespace (toNode self)
+            (toOptionalJSString namespaceURI)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertBefore\"]($2, $3); })"
+        js_insertBefore :: Node -> Node -> Optional Node -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
+insertBefore ::
+             (MonadIO m, IsNode self, IsNode node, IsNode child) =>
+               self -> node -> Maybe child -> m Node
+insertBefore self node child
+  = liftIO
+      (js_insertBefore (toNode self) (toNode node)
+         (maybeToOptional (fmap toNode child)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.insertBefore Mozilla Node.insertBefore documentation> 
+insertBefore_ ::
+              (MonadIO m, IsNode self, IsNode node, IsNode child) =>
+                self -> node -> Maybe child -> m ()
+insertBefore_ self node child
+  = liftIO
+      (void
+         (js_insertBefore (toNode self) (toNode node)
+            (maybeToOptional (fmap toNode child))))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendChild\"]($2); })"
+        js_appendChild :: Node -> Node -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
+appendChild ::
+            (MonadIO m, IsNode self, IsNode node) => self -> node -> m Node
+appendChild self node
+  = liftIO (js_appendChild (toNode self) (toNode node))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.appendChild Mozilla Node.appendChild documentation> 
+appendChild_ ::
+             (MonadIO m, IsNode self, IsNode node) => self -> node -> m ()
+appendChild_ self node
+  = liftIO (void (js_appendChild (toNode self) (toNode node)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceChild\"]($2, $3); })"
+        js_replaceChild :: Node -> Node -> Node -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
+replaceChild ::
+             (MonadIO m, IsNode self, IsNode node, IsNode child) =>
+               self -> node -> child -> m Node
+replaceChild self node child
+  = liftIO
+      (js_replaceChild (toNode self) (toNode node) (toNode child))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.replaceChild Mozilla Node.replaceChild documentation> 
+replaceChild_ ::
+              (MonadIO m, IsNode self, IsNode node, IsNode child) =>
+                self -> node -> child -> m ()
+replaceChild_ self node child
+  = liftIO
+      (void (js_replaceChild (toNode self) (toNode node) (toNode child)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeChild\"]($2); })"
+        js_removeChild :: Node -> Node -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
+removeChild ::
+            (MonadIO m, IsNode self, IsNode child) => self -> child -> m Node
+removeChild self child
+  = liftIO (js_removeChild (toNode self) (toNode child))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.removeChild Mozilla Node.removeChild documentation> 
+removeChild_ ::
+             (MonadIO m, IsNode self, IsNode child) => self -> child -> m ()
+removeChild_ self child
+  = liftIO (void (js_removeChild (toNode self) (toNode child)))
+pattern ELEMENT_NODE = 1
+pattern ATTRIBUTE_NODE = 2
+pattern TEXT_NODE = 3
+pattern CDATA_SECTION_NODE = 4
+pattern ENTITY_REFERENCE_NODE = 5
+pattern ENTITY_NODE = 6
+pattern PROCESSING_INSTRUCTION_NODE = 7
+pattern COMMENT_NODE = 8
+pattern DOCUMENT_NODE = 9
+pattern DOCUMENT_TYPE_NODE = 10
+pattern DOCUMENT_FRAGMENT_NODE = 11
+pattern NOTATION_NODE = 12
+pattern DOCUMENT_POSITION_DISCONNECTED = 1
+pattern DOCUMENT_POSITION_PRECEDING = 2
+pattern DOCUMENT_POSITION_FOLLOWING = 4
+pattern DOCUMENT_POSITION_CONTAINS = 8
+pattern DOCUMENT_POSITION_CONTAINED_BY = 16
+pattern DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 32
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nodeType\"]; })" js_getNodeType
+        :: Node -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeType Mozilla Node.nodeType documentation> 
+getNodeType :: (MonadIO m, IsNode self) => self -> m Word
+getNodeType self = liftIO (js_getNodeType (toNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nodeName\"]; })" js_getNodeName
+        :: Node -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeName Mozilla Node.nodeName documentation> 
+getNodeName ::
+            (MonadIO m, IsNode self, FromJSString result) => self -> m result
+getNodeName self
+  = liftIO (fromJSString <$> (js_getNodeName (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseURI\"]; })" js_getBaseURI ::
+        Node -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.baseURI Mozilla Node.baseURI documentation> 
+getBaseURI ::
+           (MonadIO m, IsNode self, FromJSString result) => self -> m result
+getBaseURI self
+  = liftIO (fromJSString <$> (js_getBaseURI (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isConnected\"] ? 1 : 0); })"
+        js_getIsConnected :: Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.isConnected Mozilla Node.isConnected documentation> 
+getIsConnected :: (MonadIO m, IsNode self) => self -> m Bool
+getIsConnected self = liftIO (js_getIsConnected (toNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ownerDocument\"]; })"
+        js_getOwnerDocument :: Node -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
+getOwnerDocument ::
+                 (MonadIO m, IsNode self) => self -> m (Maybe Document)
+getOwnerDocument self
+  = liftIO (nullableToMaybe <$> (js_getOwnerDocument (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
+getOwnerDocumentUnsafe ::
+                       (MonadIO m, IsNode self, HasCallStack) => self -> m Document
+getOwnerDocumentUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getOwnerDocument (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.ownerDocument Mozilla Node.ownerDocument documentation> 
+getOwnerDocumentUnchecked ::
+                          (MonadIO m, IsNode self) => self -> m Document
+getOwnerDocumentUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getOwnerDocument (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentNode\"]; })"
+        js_getParentNode :: Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
+getParentNode :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
+getParentNode self
+  = liftIO (nullableToMaybe <$> (js_getParentNode (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
+getParentNodeUnsafe ::
+                    (MonadIO m, IsNode self, HasCallStack) => self -> m Node
+getParentNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParentNode (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentNode Mozilla Node.parentNode documentation> 
+getParentNodeUnchecked ::
+                       (MonadIO m, IsNode self) => self -> m Node
+getParentNodeUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getParentNode (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentElement\"]; })"
+        js_getParentElement :: Node -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
+getParentElement ::
+                 (MonadIO m, IsNode self) => self -> m (Maybe Element)
+getParentElement self
+  = liftIO (nullableToMaybe <$> (js_getParentElement (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
+getParentElementUnsafe ::
+                       (MonadIO m, IsNode self, HasCallStack) => self -> m Element
+getParentElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParentElement (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.parentElement Mozilla Node.parentElement documentation> 
+getParentElementUnchecked ::
+                          (MonadIO m, IsNode self) => self -> m Element
+getParentElementUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getParentElement (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"childNodes\"]; })"
+        js_getChildNodes :: Node -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.childNodes Mozilla Node.childNodes documentation> 
+getChildNodes :: (MonadIO m, IsNode self) => self -> m NodeList
+getChildNodes self = liftIO (js_getChildNodes (toNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"firstChild\"]; })"
+        js_getFirstChild :: Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
+getFirstChild :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
+getFirstChild self
+  = liftIO (nullableToMaybe <$> (js_getFirstChild (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
+getFirstChildUnsafe ::
+                    (MonadIO m, IsNode self, HasCallStack) => self -> m Node
+getFirstChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFirstChild (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.firstChild Mozilla Node.firstChild documentation> 
+getFirstChildUnchecked ::
+                       (MonadIO m, IsNode self) => self -> m Node
+getFirstChildUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getFirstChild (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastChild\"]; })"
+        js_getLastChild :: Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+getLastChild :: (MonadIO m, IsNode self) => self -> m (Maybe Node)
+getLastChild self
+  = liftIO (nullableToMaybe <$> (js_getLastChild (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+getLastChildUnsafe ::
+                   (MonadIO m, IsNode self, HasCallStack) => self -> m Node
+getLastChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getLastChild (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.lastChild Mozilla Node.lastChild documentation> 
+getLastChildUnchecked :: (MonadIO m, IsNode self) => self -> m Node
+getLastChildUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getLastChild (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"]; })"
+        js_getPreviousSibling :: Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
+getPreviousSibling ::
+                   (MonadIO m, IsNode self) => self -> m (Maybe Node)
+getPreviousSibling self
+  = liftIO
+      (nullableToMaybe <$> (js_getPreviousSibling (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
+getPreviousSiblingUnsafe ::
+                         (MonadIO m, IsNode self, HasCallStack) => self -> m Node
+getPreviousSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getPreviousSibling (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.previousSibling Mozilla Node.previousSibling documentation> 
+getPreviousSiblingUnchecked ::
+                            (MonadIO m, IsNode self) => self -> m Node
+getPreviousSiblingUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPreviousSibling (toNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"]; })"
+        js_getNextSibling :: Node -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
+getNextSibling ::
+               (MonadIO m, IsNode self) => self -> m (Maybe Node)
+getNextSibling self
+  = liftIO (nullableToMaybe <$> (js_getNextSibling (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
+getNextSiblingUnsafe ::
+                     (MonadIO m, IsNode self, HasCallStack) => self -> m Node
+getNextSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getNextSibling (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nextSibling Mozilla Node.nextSibling documentation> 
+getNextSiblingUnchecked ::
+                        (MonadIO m, IsNode self) => self -> m Node
+getNextSiblingUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getNextSibling (toNode self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"nodeValue\"] = $2; })"
+        js_setNodeValue :: Node -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+setNodeValue ::
+             (MonadIO m, IsNode self, ToJSString val) =>
+               self -> Maybe val -> m ()
+setNodeValue self val
+  = liftIO (js_setNodeValue (toNode self) (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nodeValue\"]; })"
+        js_getNodeValue :: Node -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+getNodeValue ::
+             (MonadIO m, IsNode self, FromJSString result) =>
+               self -> m (Maybe result)
+getNodeValue self
+  = liftIO (fromMaybeJSString <$> (js_getNodeValue (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+getNodeValueUnsafe ::
+                   (MonadIO m, IsNode self, HasCallStack, FromJSString result) =>
+                     self -> m result
+getNodeValueUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getNodeValue (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.nodeValue Mozilla Node.nodeValue documentation> 
+getNodeValueUnchecked ::
+                      (MonadIO m, IsNode self, FromJSString result) => self -> m result
+getNodeValueUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getNodeValue (toNode self)))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"textContent\"] = $2; })"
+        js_setTextContent :: Node -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+setTextContent ::
+               (MonadIO m, IsNode self, ToJSString val) =>
+                 self -> Maybe val -> m ()
+setTextContent self val
+  = liftIO (js_setTextContent (toNode self) (toOptionalJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textContent\"]; })"
+        js_getTextContent :: Node -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+getTextContent ::
+               (MonadIO m, IsNode self, FromJSString result) =>
+                 self -> m (Maybe result)
+getTextContent self
+  = liftIO (fromMaybeJSString <$> (js_getTextContent (toNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+getTextContentUnsafe ::
+                     (MonadIO m, IsNode self, HasCallStack, FromJSString result) =>
+                       self -> m result
+getTextContentUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getTextContent (toNode self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Node.textContent Mozilla Node.textContent documentation> 
+getTextContentUnchecked ::
+                        (MonadIO m, IsNode self, FromJSString result) => self -> m result
+getTextContentUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getTextContent (toNode self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeFilter.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NodeFilter
+       (newNodeFilter, newNodeFilterSync, newNodeFilterAsync,
+        pattern FILTER_ACCEPT, pattern FILTER_REJECT, pattern FILTER_SKIP,
+        pattern SHOW_ALL, pattern SHOW_ELEMENT, pattern SHOW_ATTRIBUTE,
+        pattern SHOW_TEXT, pattern SHOW_CDATA_SECTION,
+        pattern SHOW_ENTITY_REFERENCE, pattern SHOW_ENTITY,
+        pattern SHOW_PROCESSING_INSTRUCTION, pattern SHOW_COMMENT,
+        pattern SHOW_DOCUMENT, pattern SHOW_DOCUMENT_TYPE,
+        pattern SHOW_DOCUMENT_FRAGMENT, pattern SHOW_NOTATION, NodeFilter)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
+newNodeFilter :: (MonadIO m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilter callback
+  = liftIO
+      (NodeFilter <$>
+         syncCallback1 ThrowWouldBlock
+           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
+newNodeFilterSync :: (MonadIO m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilterSync callback
+  = liftIO
+      (NodeFilter <$>
+         syncCallback1 ContinueAsync
+           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeFilter Mozilla NodeFilter documentation> 
+newNodeFilterAsync ::
+                   (MonadIO m) => (Node -> IO ()) -> m NodeFilter
+newNodeFilterAsync callback
+  = liftIO
+      (NodeFilter <$>
+         asyncCallback1
+           (\ node -> fromJSValUnchecked node >>= \ node' -> callback node'))
+pattern FILTER_ACCEPT = 1
+pattern FILTER_REJECT = 2
+pattern FILTER_SKIP = 3
+pattern SHOW_ALL = 4294967295
+pattern SHOW_ELEMENT = 1
+pattern SHOW_ATTRIBUTE = 2
+pattern SHOW_TEXT = 4
+pattern SHOW_CDATA_SECTION = 8
+pattern SHOW_ENTITY_REFERENCE = 16
+pattern SHOW_ENTITY = 32
+pattern SHOW_PROCESSING_INSTRUCTION = 64
+pattern SHOW_COMMENT = 128
+pattern SHOW_DOCUMENT = 256
+pattern SHOW_DOCUMENT_TYPE = 512
+pattern SHOW_DOCUMENT_FRAGMENT = 1024
+pattern SHOW_NOTATION = 2048
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeIterator.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NodeIterator
+       (js_nextNode, nextNode, nextNode_, nextNodeUnsafe,
+        nextNodeUnchecked, js_previousNode, previousNode, previousNode_,
+        previousNodeUnsafe, previousNodeUnchecked, js_detach, detach,
+        js_getRoot, getRoot, js_getReferenceNode, getReferenceNode,
+        js_getPointerBeforeReferenceNode, getPointerBeforeReferenceNode,
+        js_getWhatToShow, getWhatToShow, NodeIterator(..),
+        gTypeNodeIterator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextNode\"](); })" js_nextNode
+        :: NodeIterator -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNode :: (MonadIO m) => NodeIterator -> m (Maybe Node)
+nextNode self = liftIO (nullableToMaybe <$> (js_nextNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNode_ :: (MonadIO m) => NodeIterator -> m ()
+nextNode_ self = liftIO (void (js_nextNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNodeUnsafe ::
+               (MonadIO m, HasCallStack) => NodeIterator -> m Node
+nextNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_nextNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.nextNode Mozilla NodeIterator.nextNode documentation> 
+nextNodeUnchecked :: (MonadIO m) => NodeIterator -> m Node
+nextNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_nextNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousNode\"](); })"
+        js_previousNode :: NodeIterator -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNode :: (MonadIO m) => NodeIterator -> m (Maybe Node)
+previousNode self
+  = liftIO (nullableToMaybe <$> (js_previousNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNode_ :: (MonadIO m) => NodeIterator -> m ()
+previousNode_ self = liftIO (void (js_previousNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNodeUnsafe ::
+                   (MonadIO m, HasCallStack) => NodeIterator -> m Node
+previousNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_previousNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.previousNode Mozilla NodeIterator.previousNode documentation> 
+previousNodeUnchecked :: (MonadIO m) => NodeIterator -> m Node
+previousNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_previousNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detach\"](); })" js_detach ::
+        NodeIterator -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.detach Mozilla NodeIterator.detach documentation> 
+detach :: (MonadIO m) => NodeIterator -> m ()
+detach self = liftIO (js_detach self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
+        NodeIterator -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.root Mozilla NodeIterator.root documentation> 
+getRoot :: (MonadIO m) => NodeIterator -> m Node
+getRoot self = liftIO (js_getRoot self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"referenceNode\"]; })"
+        js_getReferenceNode :: NodeIterator -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.referenceNode Mozilla NodeIterator.referenceNode documentation> 
+getReferenceNode :: (MonadIO m) => NodeIterator -> m Node
+getReferenceNode self = liftIO (js_getReferenceNode self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"pointerBeforeReferenceNode\"] ? 1 : 0); })"
+        js_getPointerBeforeReferenceNode :: NodeIterator -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.pointerBeforeReferenceNode Mozilla NodeIterator.pointerBeforeReferenceNode documentation> 
+getPointerBeforeReferenceNode ::
+                              (MonadIO m) => NodeIterator -> m Bool
+getPointerBeforeReferenceNode self
+  = liftIO (js_getPointerBeforeReferenceNode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"whatToShow\"]; })"
+        js_getWhatToShow :: NodeIterator -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator.whatToShow Mozilla NodeIterator.whatToShow documentation> 
+getWhatToShow :: (MonadIO m) => NodeIterator -> m Word
+getWhatToShow self = liftIO (js_getWhatToShow self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NodeList.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NodeList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getLength,
+        getLength, NodeList(..), gTypeNodeList, IsNodeList, toNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        NodeList -> Word -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+item ::
+     (MonadIO m, IsNodeList self) => self -> Word -> m (Maybe Node)
+item self index
+  = liftIO (nullableToMaybe <$> (js_item (toNodeList self) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+item_ :: (MonadIO m, IsNodeList self) => self -> Word -> m ()
+item_ self index = liftIO (void (js_item (toNodeList self) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, IsNodeList self, HasCallStack) =>
+             self -> Word -> m Node
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item (toNodeList self) index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.item Mozilla NodeList.item documentation> 
+itemUnchecked ::
+              (MonadIO m, IsNodeList self) => self -> Word -> m Node
+itemUnchecked self index
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_item (toNodeList self) index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        NodeList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NodeList.length Mozilla NodeList.length documentation> 
+getLength :: (MonadIO m, IsNodeList self) => self -> m Word
+getLength self = liftIO (js_getLength (toNodeList self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonDocumentTypeChildNode.hs
@@ -0,0 +1,94 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NonDocumentTypeChildNode
+       (js_getPreviousElementSibling, getPreviousElementSibling,
+        getPreviousElementSiblingUnsafe,
+        getPreviousElementSiblingUnchecked, js_getNextElementSibling,
+        getNextElementSibling, getNextElementSiblingUnsafe,
+        getNextElementSiblingUnchecked, NonDocumentTypeChildNode(..),
+        gTypeNonDocumentTypeChildNode, IsNonDocumentTypeChildNode,
+        toNonDocumentTypeChildNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousElementSibling\"]; })"
+        js_getPreviousElementSibling ::
+        NonDocumentTypeChildNode -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
+getPreviousElementSibling ::
+                          (MonadIO m, IsNonDocumentTypeChildNode self) =>
+                            self -> m (Maybe Element)
+getPreviousElementSibling self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
+getPreviousElementSiblingUnsafe ::
+                                (MonadIO m, IsNonDocumentTypeChildNode self, HasCallStack) =>
+                                  self -> m Element
+getPreviousElementSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.previousElementSibling Mozilla NonDocumentTypeChildNode.previousElementSibling documentation> 
+getPreviousElementSiblingUnchecked ::
+                                   (MonadIO m, IsNonDocumentTypeChildNode self) => self -> m Element
+getPreviousElementSiblingUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPreviousElementSibling (toNonDocumentTypeChildNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextElementSibling\"]; })"
+        js_getNextElementSibling ::
+        NonDocumentTypeChildNode -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
+getNextElementSibling ::
+                      (MonadIO m, IsNonDocumentTypeChildNode self) =>
+                        self -> m (Maybe Element)
+getNextElementSibling self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
+getNextElementSiblingUnsafe ::
+                            (MonadIO m, IsNonDocumentTypeChildNode self, HasCallStack) =>
+                              self -> m Element
+getNextElementSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode.nextElementSibling Mozilla NonDocumentTypeChildNode.nextElementSibling documentation> 
+getNextElementSiblingUnchecked ::
+                               (MonadIO m, IsNonDocumentTypeChildNode self) => self -> m Element
+getNextElementSiblingUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getNextElementSibling (toNonDocumentTypeChildNode self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NonElementParentNode.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NonElementParentNode
+       (js_getElementById, getElementById, getElementById_,
+        getElementByIdUnsafe, getElementByIdUnchecked,
+        NonElementParentNode(..), gTypeNonElementParentNode,
+        IsNonElementParentNode, toNonElementParentNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
+        js_getElementById ::
+        NonElementParentNode -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
+getElementById ::
+               (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
+                 self -> elementId -> m (Maybe Element)
+getElementById self elementId
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getElementById (toNonElementParentNode self)
+            (toJSString elementId)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
+getElementById_ ::
+                (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
+                  self -> elementId -> m ()
+getElementById_ self elementId
+  = liftIO
+      (void
+         (js_getElementById (toNonElementParentNode self)
+            (toJSString elementId)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
+getElementByIdUnsafe ::
+                     (MonadIO m, IsNonElementParentNode self, ToJSString elementId,
+                      HasCallStack) =>
+                       self -> elementId -> m Element
+getElementByIdUnsafe self elementId
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getElementById (toNonElementParentNode self)
+             (toJSString elementId)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode.getElementById Mozilla NonElementParentNode.getElementById documentation> 
+getElementByIdUnchecked ::
+                        (MonadIO m, IsNonElementParentNode self, ToJSString elementId) =>
+                          self -> elementId -> m Element
+getElementByIdUnchecked self elementId
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getElementById (toNonElementParentNode self)
+            (toJSString elementId)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Notification.hs b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Notification.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Notification
+       (js_newNotification, newNotification, js_show, show, js_close,
+        close, js_requestPermission, requestPermission, js_getPermission,
+        getPermission, click, error, cLoseEvent, display, showEvent,
+        js_setTag, setTag, js_getTag, getTag, Notification(..),
+        gTypeNotification)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"Notification\"]($1,\n$2); })" js_newNotification ::
+        JSString -> Optional NotificationOptions -> IO Notification
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation> 
+newNotification ::
+                (MonadIO m, ToJSString title) =>
+                  title -> Maybe NotificationOptions -> m Notification
+newNotification title options
+  = liftIO
+      (js_newNotification (toJSString title) (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"show\"](); })" js_show ::
+        Notification -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.show Mozilla Notification.show documentation> 
+show :: (MonadIO m) => Notification -> m ()
+show self = liftIO (js_show self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        Notification -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.close Mozilla Notification.close documentation> 
+close :: (MonadIO m) => Notification -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"Notification\"][\"requestPermission\"]($1); })"
+        js_requestPermission ::
+        Optional (NotificationPermissionCallback callback) -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.requestPermission Mozilla Notification.requestPermission documentation> 
+requestPermission ::
+                  (MonadIO m, ToJSString callback) =>
+                    Maybe (NotificationPermissionCallback callback) -> m ()
+requestPermission callback
+  = liftIO (js_requestPermission (maybeToOptional callback))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"permission\"]; })"
+        js_getPermission :: Notification -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.permission Mozilla Notification.permission documentation> 
+getPermission ::
+              (MonadIO m, FromJSString result) => Notification -> m result
+getPermission self
+  = liftIO (fromJSString <$> (js_getPermission self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclick Mozilla Notification.onclick documentation> 
+click :: EventName Notification MouseEvent
+click = unsafeEventName (toJSString "click")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onerror Mozilla Notification.onerror documentation> 
+error :: EventName Notification UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onclose Mozilla Notification.onclose documentation> 
+cLoseEvent :: EventName Notification CloseEvent
+cLoseEvent = unsafeEventNameAsync (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.ondisplay Mozilla Notification.ondisplay documentation> 
+display :: EventName Notification ondisplay
+display = unsafeEventName (toJSString "display")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.onshow Mozilla Notification.onshow documentation> 
+showEvent :: EventName Notification MouseEvent
+showEvent = unsafeEventName (toJSString "show")
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"tag\"] = $2; })" js_setTag ::
+        Notification -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.tag Mozilla Notification.tag documentation> 
+setTag ::
+       (MonadIO m, ToJSString val) => Notification -> val -> m ()
+setTag self val = liftIO (js_setTag self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tag\"]; })" js_getTag ::
+        Notification -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Notification.tag Mozilla Notification.tag documentation> 
+getTag ::
+       (MonadIO m, FromJSString result) => Notification -> m result
+getTag self = liftIO (fromJSString <$> (js_getTag self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/NotificationPermissionCallback.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.NotificationPermissionCallback
+       (newNotificationPermissionCallback,
+        newNotificationPermissionCallbackSync,
+        newNotificationPermissionCallbackAsync,
+        NotificationPermissionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallback ::
+                                  (MonadIO m, FromJSString permission) =>
+                                    (permission -> IO ()) ->
+                                      m (NotificationPermissionCallback permission)
+newNotificationPermissionCallback callback
+  = liftIO
+      (NotificationPermissionCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ permission ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallbackSync ::
+                                      (MonadIO m, FromJSString permission) =>
+                                        (permission -> IO ()) ->
+                                          m (NotificationPermissionCallback permission)
+newNotificationPermissionCallbackSync callback
+  = liftIO
+      (NotificationPermissionCallback <$>
+         syncCallback1 ContinueAsync
+           (\ permission ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/NotificationPermissionCallback Mozilla NotificationPermissionCallback documentation> 
+newNotificationPermissionCallbackAsync ::
+                                       (MonadIO m, FromJSString permission) =>
+                                         (permission -> IO ()) ->
+                                           m (NotificationPermissionCallback permission)
+newNotificationPermissionCallbackAsync callback
+  = liftIO
+      (NotificationPermissionCallback <$>
+         asyncCallback1
+           (\ permission ->
+              fromJSValUnchecked permission >>=
+                \ permission' -> callback permission'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs b/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESStandardDerivatives.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OESStandardDerivatives
+       (pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES,
+        OESStandardDerivatives(..), gTypeOESStandardDerivatives)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT_OES = 35723
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs b/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESTextureHalfFloat.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OESTextureHalfFloat
+       (pattern HALF_FLOAT_OES, OESTextureHalfFloat(..),
+        gTypeOESTextureHalfFloat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern HALF_FLOAT_OES = 36193
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs b/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OESVertexArrayObject.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OESVertexArrayObject
+       (js_createVertexArrayOES, createVertexArrayOES,
+        createVertexArrayOES_, js_deleteVertexArrayOES,
+        deleteVertexArrayOES, js_isVertexArrayOES, isVertexArrayOES,
+        isVertexArrayOES_, js_bindVertexArrayOES, bindVertexArrayOES,
+        pattern VERTEX_ARRAY_BINDING_OES, OESVertexArrayObject(..),
+        gTypeOESVertexArrayObject)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createVertexArrayOES\"](); })"
+        js_createVertexArrayOES ::
+        OESVertexArrayObject -> IO WebGLVertexArrayObjectOES
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
+createVertexArrayOES ::
+                     (MonadIO m) => OESVertexArrayObject -> m WebGLVertexArrayObjectOES
+createVertexArrayOES self = liftIO (js_createVertexArrayOES self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.createVertexArrayOES Mozilla OESVertexArrayObject.createVertexArrayOES documentation> 
+createVertexArrayOES_ ::
+                      (MonadIO m) => OESVertexArrayObject -> m ()
+createVertexArrayOES_ self
+  = liftIO (void (js_createVertexArrayOES self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteVertexArrayOES\"]($2); })"
+        js_deleteVertexArrayOES ::
+        OESVertexArrayObject -> Optional WebGLVertexArrayObjectOES -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.deleteVertexArrayOES Mozilla OESVertexArrayObject.deleteVertexArrayOES documentation> 
+deleteVertexArrayOES ::
+                     (MonadIO m) =>
+                       OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
+deleteVertexArrayOES self arrayObject
+  = liftIO
+      (js_deleteVertexArrayOES self (maybeToOptional arrayObject))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"isVertexArrayOES\"]($2) ? 1 : 0); })" js_isVertexArrayOES ::
+        OESVertexArrayObject ->
+          Optional WebGLVertexArrayObjectOES -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
+isVertexArrayOES ::
+                 (MonadIO m) =>
+                   OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m Bool
+isVertexArrayOES self arrayObject
+  = liftIO (js_isVertexArrayOES self (maybeToOptional arrayObject))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.isVertexArrayOES Mozilla OESVertexArrayObject.isVertexArrayOES documentation> 
+isVertexArrayOES_ ::
+                  (MonadIO m) =>
+                    OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
+isVertexArrayOES_ self arrayObject
+  = liftIO
+      (void (js_isVertexArrayOES self (maybeToOptional arrayObject)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"bindVertexArrayOES\"]($2); })"
+        js_bindVertexArrayOES ::
+        OESVertexArrayObject -> Optional WebGLVertexArrayObjectOES -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject.bindVertexArrayOES Mozilla OESVertexArrayObject.bindVertexArrayOES documentation> 
+bindVertexArrayOES ::
+                   (MonadIO m) =>
+                     OESVertexArrayObject -> Maybe WebGLVertexArrayObjectOES -> m ()
+bindVertexArrayOES self arrayObject
+  = liftIO (js_bindVertexArrayOES self (maybeToOptional arrayObject))
+pattern VERTEX_ARRAY_BINDING_OES = 34229
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioCompletionEvent.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioCompletionEvent
+       (js_getRenderedBuffer, getRenderedBuffer,
+        OfflineAudioCompletionEvent(..), gTypeOfflineAudioCompletionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"renderedBuffer\"]; })"
+        js_getRenderedBuffer ::
+        OfflineAudioCompletionEvent -> IO AudioBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent.renderedBuffer Mozilla OfflineAudioCompletionEvent.renderedBuffer documentation> 
+getRenderedBuffer ::
+                  (MonadIO m) => OfflineAudioCompletionEvent -> m AudioBuffer
+getRenderedBuffer self = liftIO (js_getRenderedBuffer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OfflineAudioContext.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OfflineAudioContext
+       (js_newOfflineAudioContext, newOfflineAudioContext,
+        OfflineAudioContext(..), gTypeOfflineAudioContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return new window[\"OfflineAudioContext\"]($1,\n$2, $3); })"
+        js_newOfflineAudioContext ::
+        Word -> Word -> Float -> IO OfflineAudioContext
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation> 
+newOfflineAudioContext ::
+                       (MonadIO m) => Word -> Word -> Float -> m OfflineAudioContext
+newOfflineAudioContext numberOfChannels numberOfFrames sampleRate
+  = liftIO
+      (js_newOfflineAudioContext numberOfChannels numberOfFrames
+         sampleRate)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OscillatorNode.hs
@@ -0,0 +1,99 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OscillatorNode
+       (js_start, start, js_stop, stop, js_setPeriodicWave,
+        setPeriodicWave, pattern UNSCHEDULED_STATE,
+        pattern SCHEDULED_STATE, pattern PLAYING_STATE,
+        pattern FINISHED_STATE, js_setType, setType, js_getType, getType,
+        js_getPlaybackState, getPlaybackState, js_getFrequency,
+        getFrequency, js_getDetune, getDetune, ended, OscillatorNode(..),
+        gTypeOscillatorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })" js_start ::
+        OscillatorNode -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.start Mozilla OscillatorNode.start documentation> 
+start :: (MonadIO m) => OscillatorNode -> Maybe Double -> m ()
+start self when = liftIO (js_start self (maybeToOptional when))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"stop\"]($2); })" js_stop ::
+        OscillatorNode -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.stop Mozilla OscillatorNode.stop documentation> 
+stop :: (MonadIO m) => OscillatorNode -> Maybe Double -> m ()
+stop self when = liftIO (js_stop self (maybeToOptional when))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setPeriodicWave\"]($2); })"
+        js_setPeriodicWave ::
+        OscillatorNode -> Optional PeriodicWave -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.setPeriodicWave Mozilla OscillatorNode.setPeriodicWave documentation> 
+setPeriodicWave ::
+                (MonadIO m) => OscillatorNode -> Maybe PeriodicWave -> m ()
+setPeriodicWave self wave
+  = liftIO (js_setPeriodicWave self (maybeToOptional wave))
+pattern UNSCHEDULED_STATE = 0
+pattern SCHEDULED_STATE = 1
+pattern PLAYING_STATE = 2
+pattern FINISHED_STATE = 3
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        OscillatorNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+setType :: (MonadIO m) => OscillatorNode -> OscillatorType -> m ()
+setType self val = liftIO (js_setType self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        OscillatorNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.type Mozilla OscillatorNode.type documentation> 
+getType :: (MonadIO m) => OscillatorNode -> m OscillatorType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"playbackState\"]; })"
+        js_getPlaybackState :: OscillatorNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.playbackState Mozilla OscillatorNode.playbackState documentation> 
+getPlaybackState :: (MonadIO m) => OscillatorNode -> m Word
+getPlaybackState self = liftIO (js_getPlaybackState self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frequency\"]; })"
+        js_getFrequency :: OscillatorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.frequency Mozilla OscillatorNode.frequency documentation> 
+getFrequency :: (MonadIO m) => OscillatorNode -> m AudioParam
+getFrequency self = liftIO (js_getFrequency self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detune\"]; })" js_getDetune ::
+        OscillatorNode -> IO AudioParam
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.detune Mozilla OscillatorNode.detune documentation> 
+getDetune :: (MonadIO m) => OscillatorNode -> m AudioParam
+getDetune self = liftIO (js_getDetune self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode.onended Mozilla OscillatorNode.onended documentation> 
+ended :: EventName OscillatorNode Event
+ended = unsafeEventName (toJSString "ended")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedError.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OverconstrainedError
+       (js_newOverconstrainedError, newOverconstrainedError,
+        js_getMessage, getMessage, js_getConstraint, getConstraint,
+        OverconstrainedError(..), gTypeOverconstrainedError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"OverconstrainedError\"]($1,\n$2); })"
+        js_newOverconstrainedError ::
+        Optional JSString -> Optional JSString -> IO OverconstrainedError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError Mozilla OverconstrainedError documentation> 
+newOverconstrainedError ::
+                        (MonadIO m, ToJSString constraint, ToJSString message) =>
+                          Maybe constraint -> Maybe message -> m OverconstrainedError
+newOverconstrainedError constraint message
+  = liftIO
+      (js_newOverconstrainedError (toOptionalJSString constraint)
+         (toOptionalJSString message))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        OverconstrainedError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.message Mozilla OverconstrainedError.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) =>
+             OverconstrainedError -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"constraint\"]; })"
+        js_getConstraint :: OverconstrainedError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError.constraint Mozilla OverconstrainedError.constraint documentation> 
+getConstraint ::
+              (MonadIO m, FromJSString result) =>
+                OverconstrainedError -> m result
+getConstraint self
+  = liftIO (fromJSString <$> (js_getConstraint self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverconstrainedErrorEvent.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OverconstrainedErrorEvent
+       (js_newOverconstrainedErrorEvent, newOverconstrainedErrorEvent,
+        js_getError, getError, getErrorUnsafe, getErrorUnchecked,
+        OverconstrainedErrorEvent(..), gTypeOverconstrainedErrorEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"OverconstrainedErrorEvent\"]($1,\n$2); })"
+        js_newOverconstrainedErrorEvent ::
+        JSString ->
+          Optional OverconstrainedErrorEventInit ->
+            IO OverconstrainedErrorEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation> 
+newOverconstrainedErrorEvent ::
+                             (MonadIO m, ToJSString type') =>
+                               type' ->
+                                 Maybe OverconstrainedErrorEventInit -> m OverconstrainedErrorEvent
+newOverconstrainedErrorEvent type' eventInitDict
+  = liftIO
+      (js_newOverconstrainedErrorEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        OverconstrainedErrorEvent -> IO (Nullable OverconstrainedError)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
+getError ::
+         (MonadIO m) =>
+           OverconstrainedErrorEvent -> m (Maybe OverconstrainedError)
+getError self = liftIO (nullableToMaybe <$> (js_getError self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
+getErrorUnsafe ::
+               (MonadIO m, HasCallStack) =>
+                 OverconstrainedErrorEvent -> m OverconstrainedError
+getErrorUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getError self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent.error Mozilla OverconstrainedErrorEvent.error documentation> 
+getErrorUnchecked ::
+                  (MonadIO m) => OverconstrainedErrorEvent -> m OverconstrainedError
+getErrorUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getError self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/OverflowEvent.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.OverflowEvent
+       (js_newOverflowEvent, newOverflowEvent, pattern HORIZONTAL,
+        pattern VERTICAL, pattern BOTH, js_getOrient, getOrient,
+        js_getHorizontalOverflow, getHorizontalOverflow,
+        js_getVerticalOverflow, getVerticalOverflow, OverflowEvent(..),
+        gTypeOverflowEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"OverflowEvent\"]($1,\n$2); })" js_newOverflowEvent ::
+        JSString -> Optional OverflowEventInit -> IO OverflowEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation> 
+newOverflowEvent ::
+                 (MonadIO m, ToJSString type') =>
+                   type' -> Maybe OverflowEventInit -> m OverflowEvent
+newOverflowEvent type' eventInitDict
+  = liftIO
+      (js_newOverflowEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+pattern HORIZONTAL = 0
+pattern VERTICAL = 1
+pattern BOTH = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orient\"]; })" js_getOrient ::
+        OverflowEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.orient Mozilla OverflowEvent.orient documentation> 
+getOrient :: (MonadIO m) => OverflowEvent -> m Word
+getOrient self = liftIO (js_getOrient self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"horizontalOverflow\"] ? 1 : 0); })" js_getHorizontalOverflow ::
+        OverflowEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.horizontalOverflow Mozilla OverflowEvent.horizontalOverflow documentation> 
+getHorizontalOverflow :: (MonadIO m) => OverflowEvent -> m Bool
+getHorizontalOverflow self = liftIO (js_getHorizontalOverflow self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"verticalOverflow\"] ? 1 : 0); })" js_getVerticalOverflow ::
+        OverflowEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent.verticalOverflow Mozilla OverflowEvent.verticalOverflow documentation> 
+getVerticalOverflow :: (MonadIO m) => OverflowEvent -> m Bool
+getVerticalOverflow self = liftIO (js_getVerticalOverflow self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PageTransitionEvent.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PageTransitionEvent
+       (js_newPageTransitionEvent, newPageTransitionEvent,
+        js_getPersisted, getPersisted, PageTransitionEvent(..),
+        gTypePageTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"PageTransitionEvent\"]($1,\n$2); })"
+        js_newPageTransitionEvent ::
+        JSString ->
+          Optional PageTransitionEventInit -> IO PageTransitionEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation> 
+newPageTransitionEvent ::
+                       (MonadIO m, ToJSString type') =>
+                         type' -> Maybe PageTransitionEventInit -> m PageTransitionEvent
+newPageTransitionEvent type' eventInitDict
+  = liftIO
+      (js_newPageTransitionEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"persisted\"] ? 1 : 0); })"
+        js_getPersisted :: PageTransitionEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent.persisted Mozilla PageTransitionEvent.persisted documentation> 
+getPersisted :: (MonadIO m) => PageTransitionEvent -> m Bool
+getPersisted self = liftIO (js_getPersisted self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PannerNode.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PannerNode
+       (js_setPosition, setPosition, js_setOrientation, setOrientation,
+        js_setVelocity, setVelocity, js_setPanningModel, setPanningModel,
+        js_getPanningModel, getPanningModel, js_setDistanceModel,
+        setDistanceModel, js_getDistanceModel, getDistanceModel,
+        js_setRefDistance, setRefDistance, js_getRefDistance,
+        getRefDistance, js_setMaxDistance, setMaxDistance,
+        js_getMaxDistance, getMaxDistance, js_setRolloffFactor,
+        setRolloffFactor, js_getRolloffFactor, getRolloffFactor,
+        js_setConeInnerAngle, setConeInnerAngle, js_getConeInnerAngle,
+        getConeInnerAngle, js_setConeOuterAngle, setConeOuterAngle,
+        js_getConeOuterAngle, getConeOuterAngle, js_setConeOuterGain,
+        setConeOuterGain, js_getConeOuterGain, getConeOuterGain,
+        PannerNode(..), gTypePannerNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setPosition\"]($2, $3, $4); })"
+        js_setPosition :: PannerNode -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setPosition Mozilla webkitAudioPannerNode.setPosition documentation> 
+setPosition ::
+            (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
+setPosition self x y z = liftIO (js_setPosition self x y z)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setOrientation\"]($2, $3, $4); })" js_setOrientation ::
+        PannerNode -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setOrientation Mozilla webkitAudioPannerNode.setOrientation documentation> 
+setOrientation ::
+               (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
+setOrientation self x y z = liftIO (js_setOrientation self x y z)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setVelocity\"]($2, $3, $4); })"
+        js_setVelocity :: PannerNode -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.setVelocity Mozilla webkitAudioPannerNode.setVelocity documentation> 
+setVelocity ::
+            (MonadIO m) => PannerNode -> Float -> Float -> Float -> m ()
+setVelocity self x y z = liftIO (js_setVelocity self x y z)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"panningModel\"] = $2; })"
+        js_setPanningModel :: PannerNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+setPanningModel ::
+                (MonadIO m) => PannerNode -> PanningModelType -> m ()
+setPanningModel self val
+  = liftIO (js_setPanningModel self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"panningModel\"]; })"
+        js_getPanningModel :: PannerNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.panningModel Mozilla webkitAudioPannerNode.panningModel documentation> 
+getPanningModel :: (MonadIO m) => PannerNode -> m PanningModelType
+getPanningModel self
+  = liftIO ((js_getPanningModel self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"distanceModel\"] = $2; })"
+        js_setDistanceModel :: PannerNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+setDistanceModel ::
+                 (MonadIO m) => PannerNode -> DistanceModelType -> m ()
+setDistanceModel self val
+  = liftIO (js_setDistanceModel self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"distanceModel\"]; })"
+        js_getDistanceModel :: PannerNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.distanceModel Mozilla webkitAudioPannerNode.distanceModel documentation> 
+getDistanceModel ::
+                 (MonadIO m) => PannerNode -> m DistanceModelType
+getDistanceModel self
+  = liftIO ((js_getDistanceModel self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"refDistance\"] = $2; })"
+        js_setRefDistance :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+setRefDistance :: (MonadIO m) => PannerNode -> Double -> m ()
+setRefDistance self val = liftIO (js_setRefDistance self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"refDistance\"]; })"
+        js_getRefDistance :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.refDistance Mozilla webkitAudioPannerNode.refDistance documentation> 
+getRefDistance :: (MonadIO m) => PannerNode -> m Double
+getRefDistance self = liftIO (js_getRefDistance self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"maxDistance\"] = $2; })"
+        js_setMaxDistance :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+setMaxDistance :: (MonadIO m) => PannerNode -> Double -> m ()
+setMaxDistance self val = liftIO (js_setMaxDistance self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxDistance\"]; })"
+        js_getMaxDistance :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.maxDistance Mozilla webkitAudioPannerNode.maxDistance documentation> 
+getMaxDistance :: (MonadIO m) => PannerNode -> m Double
+getMaxDistance self = liftIO (js_getMaxDistance self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rolloffFactor\"] = $2; })"
+        js_setRolloffFactor :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+setRolloffFactor :: (MonadIO m) => PannerNode -> Double -> m ()
+setRolloffFactor self val = liftIO (js_setRolloffFactor self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rolloffFactor\"]; })"
+        js_getRolloffFactor :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.rolloffFactor Mozilla webkitAudioPannerNode.rolloffFactor documentation> 
+getRolloffFactor :: (MonadIO m) => PannerNode -> m Double
+getRolloffFactor self = liftIO (js_getRolloffFactor self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"coneInnerAngle\"] = $2; })"
+        js_setConeInnerAngle :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+setConeInnerAngle :: (MonadIO m) => PannerNode -> Double -> m ()
+setConeInnerAngle self val = liftIO (js_setConeInnerAngle self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coneInnerAngle\"]; })"
+        js_getConeInnerAngle :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneInnerAngle Mozilla webkitAudioPannerNode.coneInnerAngle documentation> 
+getConeInnerAngle :: (MonadIO m) => PannerNode -> m Double
+getConeInnerAngle self = liftIO (js_getConeInnerAngle self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"coneOuterAngle\"] = $2; })"
+        js_setConeOuterAngle :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+setConeOuterAngle :: (MonadIO m) => PannerNode -> Double -> m ()
+setConeOuterAngle self val = liftIO (js_setConeOuterAngle self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coneOuterAngle\"]; })"
+        js_getConeOuterAngle :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterAngle Mozilla webkitAudioPannerNode.coneOuterAngle documentation> 
+getConeOuterAngle :: (MonadIO m) => PannerNode -> m Double
+getConeOuterAngle self = liftIO (js_getConeOuterAngle self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"coneOuterGain\"] = $2; })"
+        js_setConeOuterGain :: PannerNode -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+setConeOuterGain :: (MonadIO m) => PannerNode -> Double -> m ()
+setConeOuterGain self val = liftIO (js_setConeOuterGain self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"coneOuterGain\"]; })"
+        js_getConeOuterGain :: PannerNode -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode.coneOuterGain Mozilla webkitAudioPannerNode.coneOuterGain documentation> 
+getConeOuterGain :: (MonadIO m) => PannerNode -> m Double
+getConeOuterGain self = liftIO (js_getConeOuterGain self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ParentNode.hs
@@ -0,0 +1,190 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ParentNode
+       (js_prepend, prepend, js_append, append, js_querySelector,
+        querySelector, querySelector_, querySelectorUnsafe,
+        querySelectorUnchecked, js_querySelectorAll, querySelectorAll,
+        querySelectorAll_, js_getChildren, getChildren,
+        js_getFirstElementChild, getFirstElementChild,
+        getFirstElementChildUnsafe, getFirstElementChildUnchecked,
+        js_getLastElementChild, getLastElementChild,
+        getLastElementChildUnsafe, getLastElementChildUnchecked,
+        js_getChildElementCount, getChildElementCount, ParentNode(..),
+        gTypeParentNode, IsParentNode, toParentNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"prepend\"]($2); })" js_prepend ::
+        ParentNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.prepend Mozilla ParentNode.prepend documentation> 
+prepend ::
+        (MonadIO m, IsParentNode self, IsNodeOrString nodes) =>
+          self -> [nodes] -> m ()
+prepend self nodes
+  = liftIO
+      (toJSVal nodes >>=
+         \ nodes' -> js_prepend (toParentNode self) nodes')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"append\"]($2); })" js_append ::
+        ParentNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.append Mozilla ParentNode.append documentation> 
+append ::
+       (MonadIO m, IsParentNode self, IsNodeOrString nodes) =>
+         self -> [nodes] -> m ()
+append self nodes
+  = liftIO
+      (toJSVal nodes >>=
+         \ nodes' -> js_append (toParentNode self) nodes')
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"querySelector\"]($2); })"
+        js_querySelector :: ParentNode -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
+querySelector ::
+              (MonadIO m, IsParentNode self, ToJSString selectors) =>
+                self -> selectors -> m (Maybe Element)
+querySelector self selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_querySelector (toParentNode self) (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
+querySelector_ ::
+               (MonadIO m, IsParentNode self, ToJSString selectors) =>
+                 self -> selectors -> m ()
+querySelector_ self selectors
+  = liftIO
+      (void
+         (js_querySelector (toParentNode self) (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
+querySelectorUnsafe ::
+                    (MonadIO m, IsParentNode self, ToJSString selectors,
+                     HasCallStack) =>
+                      self -> selectors -> m Element
+querySelectorUnsafe self selectors
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_querySelector (toParentNode self) (toJSString selectors)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelector Mozilla ParentNode.querySelector documentation> 
+querySelectorUnchecked ::
+                       (MonadIO m, IsParentNode self, ToJSString selectors) =>
+                         self -> selectors -> m Element
+querySelectorUnchecked self selectors
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_querySelector (toParentNode self) (toJSString selectors)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"querySelectorAll\"]($2); })"
+        js_querySelectorAll :: ParentNode -> JSString -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
+querySelectorAll ::
+                 (MonadIO m, IsParentNode self, ToJSString selectors) =>
+                   self -> selectors -> m NodeList
+querySelectorAll self selectors
+  = liftIO
+      (js_querySelectorAll (toParentNode self) (toJSString selectors))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.querySelectorAll Mozilla ParentNode.querySelectorAll documentation> 
+querySelectorAll_ ::
+                  (MonadIO m, IsParentNode self, ToJSString selectors) =>
+                    self -> selectors -> m ()
+querySelectorAll_ self selectors
+  = liftIO
+      (void
+         (js_querySelectorAll (toParentNode self) (toJSString selectors)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"children\"]; })" js_getChildren
+        :: ParentNode -> IO HTMLCollection
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.children Mozilla ParentNode.children documentation> 
+getChildren ::
+            (MonadIO m, IsParentNode self) => self -> m HTMLCollection
+getChildren self = liftIO (js_getChildren (toParentNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"firstElementChild\"]; })"
+        js_getFirstElementChild :: ParentNode -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
+getFirstElementChild ::
+                     (MonadIO m, IsParentNode self) => self -> m (Maybe Element)
+getFirstElementChild self
+  = liftIO
+      (nullableToMaybe <$> (js_getFirstElementChild (toParentNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
+getFirstElementChildUnsafe ::
+                           (MonadIO m, IsParentNode self, HasCallStack) => self -> m Element
+getFirstElementChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getFirstElementChild (toParentNode self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.firstElementChild Mozilla ParentNode.firstElementChild documentation> 
+getFirstElementChildUnchecked ::
+                              (MonadIO m, IsParentNode self) => self -> m Element
+getFirstElementChildUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getFirstElementChild (toParentNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastElementChild\"]; })"
+        js_getLastElementChild :: ParentNode -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
+getLastElementChild ::
+                    (MonadIO m, IsParentNode self) => self -> m (Maybe Element)
+getLastElementChild self
+  = liftIO
+      (nullableToMaybe <$> (js_getLastElementChild (toParentNode self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
+getLastElementChildUnsafe ::
+                          (MonadIO m, IsParentNode self, HasCallStack) => self -> m Element
+getLastElementChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getLastElementChild (toParentNode self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.lastElementChild Mozilla ParentNode.lastElementChild documentation> 
+getLastElementChildUnchecked ::
+                             (MonadIO m, IsParentNode self) => self -> m Element
+getLastElementChildUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getLastElementChild (toParentNode self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"childElementCount\"]; })"
+        js_getChildElementCount :: ParentNode -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode.childElementCount Mozilla ParentNode.childElementCount documentation> 
+getChildElementCount ::
+                     (MonadIO m, IsParentNode self) => self -> m Word
+getChildElementCount self
+  = liftIO (js_getChildElementCount (toParentNode self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PasswordCredential.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PasswordCredential
+       (js_newPasswordCredential, newPasswordCredential,
+        js_newPasswordCredential', newPasswordCredential', js_setIdName,
+        setIdName, js_getIdName, getIdName, js_setPasswordName,
+        setPasswordName, js_getPasswordName, getPasswordName,
+        js_setAdditionalData, setAdditionalData, js_getAdditionalData,
+        getAdditionalData, getAdditionalDataUnsafe,
+        getAdditionalDataUnchecked, PasswordCredential(..),
+        gTypePasswordCredential)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"PasswordCredential\"]($1); })" js_newPasswordCredential
+        :: PasswordCredentialData -> IO PasswordCredential
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
+newPasswordCredential ::
+                      (MonadIO m) => PasswordCredentialData -> m PasswordCredential
+newPasswordCredential data'
+  = liftIO (js_newPasswordCredential data')
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"PasswordCredential\"]($1); })" js_newPasswordCredential'
+        :: HTMLFormElement -> IO PasswordCredential
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation> 
+newPasswordCredential' ::
+                       (MonadIO m) => HTMLFormElement -> m PasswordCredential
+newPasswordCredential' form
+  = liftIO (js_newPasswordCredential' form)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"idName\"] = $2; })"
+        js_setIdName :: PasswordCredential -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
+setIdName ::
+          (MonadIO m, ToJSString val) => PasswordCredential -> val -> m ()
+setIdName self val = liftIO (js_setIdName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"idName\"]; })" js_getIdName ::
+        PasswordCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.idName Mozilla PasswordCredential.idName documentation> 
+getIdName ::
+          (MonadIO m, FromJSString result) => PasswordCredential -> m result
+getIdName self = liftIO (fromJSString <$> (js_getIdName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"passwordName\"] = $2; })"
+        js_setPasswordName :: PasswordCredential -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
+setPasswordName ::
+                (MonadIO m, ToJSString val) => PasswordCredential -> val -> m ()
+setPasswordName self val
+  = liftIO (js_setPasswordName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"passwordName\"]; })"
+        js_getPasswordName :: PasswordCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.passwordName Mozilla PasswordCredential.passwordName documentation> 
+getPasswordName ::
+                (MonadIO m, FromJSString result) => PasswordCredential -> m result
+getPasswordName self
+  = liftIO (fromJSString <$> (js_getPasswordName self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"additionalData\"] = $2; })"
+        js_setAdditionalData ::
+        PasswordCredential -> Optional CredentialBodyType -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
+setAdditionalData ::
+                  (MonadIO m, IsCredentialBodyType val) =>
+                    PasswordCredential -> Maybe val -> m ()
+setAdditionalData self val
+  = liftIO
+      (js_setAdditionalData self
+         (maybeToOptional (fmap toCredentialBodyType val)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"additionalData\"]; })"
+        js_getAdditionalData ::
+        PasswordCredential -> IO (Nullable CredentialBodyType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
+getAdditionalData ::
+                  (MonadIO m) => PasswordCredential -> m (Maybe CredentialBodyType)
+getAdditionalData self
+  = liftIO (nullableToMaybe <$> (js_getAdditionalData self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
+getAdditionalDataUnsafe ::
+                        (MonadIO m, HasCallStack) =>
+                          PasswordCredential -> m CredentialBodyType
+getAdditionalDataUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAdditionalData self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential.additionalData Mozilla PasswordCredential.additionalData documentation> 
+getAdditionalDataUnchecked ::
+                           (MonadIO m) => PasswordCredential -> m CredentialBodyType
+getAdditionalDataUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getAdditionalData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Path2D.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Path2D
+       (js_newPath2D, newPath2D, js_newPath2D', newPath2D',
+        js_newPath2D'', newPath2D'', js_addPath, addPath,
+        js_addPathWithTransform, addPathWithTransform, Path2D(..),
+        gTypePath2D)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"Path2D\"](); })"
+        js_newPath2D :: IO Path2D
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D :: (MonadIO m) => m Path2D
+newPath2D = liftIO (js_newPath2D)
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"Path2D\"]($1); })"
+        js_newPath2D' :: Path2D -> IO Path2D
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D' :: (MonadIO m) => Path2D -> m Path2D
+newPath2D' path = liftIO (js_newPath2D' path)
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"Path2D\"]($1); })"
+        js_newPath2D'' :: JSString -> IO Path2D
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation> 
+newPath2D'' :: (MonadIO m, ToJSString text) => text -> m Path2D
+newPath2D'' text = liftIO (js_newPath2D'' (toJSString text))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addPath\"]($2); })" js_addPath
+        :: Path2D -> Optional Path2D -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
+addPath :: (MonadIO m) => Path2D -> Maybe Path2D -> m ()
+addPath self path = liftIO (js_addPath self (maybeToOptional path))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"addPath\"]($2, $3); })"
+        js_addPathWithTransform ::
+        Path2D -> Optional Path2D -> SVGMatrix -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Path2D.addPath Mozilla Path2D.addPath documentation> 
+addPathWithTransform ::
+                     (MonadIO m) => Path2D -> Maybe Path2D -> SVGMatrix -> m ()
+addPathWithTransform self path transform
+  = liftIO
+      (js_addPathWithTransform self (maybeToOptional path) transform)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Performance.hs b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Performance.hs
@@ -0,0 +1,183 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Performance
+       (js_now, now, now_, js_getEntries, getEntries, getEntries_,
+        js_getEntriesByType, getEntriesByType, getEntriesByType_,
+        js_getEntriesByName, getEntriesByName, getEntriesByName_,
+        js_clearResourceTimings, clearResourceTimings,
+        js_setResourceTimingBufferSize, setResourceTimingBufferSize,
+        js_mark, mark, js_clearMarks, clearMarks, js_measure, measure,
+        js_clearMeasures, clearMeasures, js_getNavigation, getNavigation,
+        js_getTiming, getTiming, resourceTimingBufferFull, Performance(..),
+        gTypePerformance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"now\"](); })" js_now ::
+        Performance -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
+now :: (MonadIO m) => Performance -> m DOMHighResTimeStamp
+now self = liftIO (js_now self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.now Mozilla Performance.now documentation> 
+now_ :: (MonadIO m) => Performance -> m ()
+now_ self = liftIO (void (js_now self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getEntries\"](); })"
+        js_getEntries :: Performance -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
+getEntries :: (MonadIO m) => Performance -> m PerformanceEntryList
+getEntries self
+  = liftIO ((js_getEntries self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntries Mozilla Performance.getEntries documentation> 
+getEntries_ :: (MonadIO m) => Performance -> m ()
+getEntries_ self = liftIO (void (js_getEntries self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
+        js_getEntriesByType :: Performance -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
+getEntriesByType ::
+                 (MonadIO m, ToJSString entryType) =>
+                   Performance -> entryType -> m PerformanceEntryList
+getEntriesByType self entryType
+  = liftIO
+      ((js_getEntriesByType self (toJSString entryType)) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByType Mozilla Performance.getEntriesByType documentation> 
+getEntriesByType_ ::
+                  (MonadIO m, ToJSString entryType) =>
+                    Performance -> entryType -> m ()
+getEntriesByType_ self entryType
+  = liftIO (void (js_getEntriesByType self (toJSString entryType)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
+        js_getEntriesByName ::
+        Performance -> JSString -> Optional JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
+getEntriesByName ::
+                 (MonadIO m, ToJSString name, ToJSString entryType) =>
+                   Performance -> name -> Maybe entryType -> m PerformanceEntryList
+getEntriesByName self name entryType
+  = liftIO
+      ((js_getEntriesByName self (toJSString name)
+          (toOptionalJSString entryType))
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.getEntriesByName Mozilla Performance.getEntriesByName documentation> 
+getEntriesByName_ ::
+                  (MonadIO m, ToJSString name, ToJSString entryType) =>
+                    Performance -> name -> Maybe entryType -> m ()
+getEntriesByName_ self name entryType
+  = liftIO
+      (void
+         (js_getEntriesByName self (toJSString name)
+            (toOptionalJSString entryType)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearResourceTimings\"](); })"
+        js_clearResourceTimings :: Performance -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearResourceTimings Mozilla Performance.clearResourceTimings documentation> 
+clearResourceTimings :: (MonadIO m) => Performance -> m ()
+clearResourceTimings self = liftIO (js_clearResourceTimings self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setResourceTimingBufferSize\"]($2); })"
+        js_setResourceTimingBufferSize :: Performance -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.setResourceTimingBufferSize Mozilla Performance.setResourceTimingBufferSize documentation> 
+setResourceTimingBufferSize ::
+                            (MonadIO m) => Performance -> Word -> m ()
+setResourceTimingBufferSize self maxSize
+  = liftIO (js_setResourceTimingBufferSize self maxSize)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"mark\"]($2); })" js_mark ::
+        Performance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.mark Mozilla Performance.mark documentation> 
+mark ::
+     (MonadIO m, ToJSString markName) => Performance -> markName -> m ()
+mark self markName = liftIO (js_mark self (toJSString markName))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearMarks\"]($2); })"
+        js_clearMarks :: Performance -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMarks Mozilla Performance.clearMarks documentation> 
+clearMarks ::
+           (MonadIO m, ToJSString markName) =>
+             Performance -> Maybe markName -> m ()
+clearMarks self markName
+  = liftIO (js_clearMarks self (toOptionalJSString markName))
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"measure\"]($2, $3, $4); })"
+        js_measure ::
+        Performance ->
+          JSString -> Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.measure Mozilla Performance.measure documentation> 
+measure ::
+        (MonadIO m, ToJSString measureName, ToJSString startMark,
+         ToJSString endMark) =>
+          Performance ->
+            measureName -> Maybe startMark -> Maybe endMark -> m ()
+measure self measureName startMark endMark
+  = liftIO
+      (js_measure self (toJSString measureName)
+         (toOptionalJSString startMark)
+         (toOptionalJSString endMark))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearMeasures\"]($2); })"
+        js_clearMeasures :: Performance -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.clearMeasures Mozilla Performance.clearMeasures documentation> 
+clearMeasures ::
+              (MonadIO m, ToJSString measureName) =>
+                Performance -> Maybe measureName -> m ()
+clearMeasures self measureName
+  = liftIO (js_clearMeasures self (toOptionalJSString measureName))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"navigation\"]; })"
+        js_getNavigation :: Performance -> IO PerformanceNavigation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.navigation Mozilla Performance.navigation documentation> 
+getNavigation ::
+              (MonadIO m) => Performance -> m PerformanceNavigation
+getNavigation self = liftIO (js_getNavigation self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timing\"]; })" js_getTiming ::
+        Performance -> IO PerformanceTiming
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.timing Mozilla Performance.timing documentation> 
+getTiming :: (MonadIO m) => Performance -> m PerformanceTiming
+getTiming self = liftIO (js_getTiming self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Performance.onresourcetimingbufferfull Mozilla Performance.onresourcetimingbufferfull documentation> 
+resourceTimingBufferFull ::
+                           EventName Performance onresourcetimingbufferfull
+resourceTimingBufferFull
+  = unsafeEventName (toJSString "resourcetimingbufferfull")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceEntry.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceEntry
+       (js_getName, getName, js_getEntryType, getEntryType,
+        js_getStartTime, getStartTime, js_getDuration, getDuration,
+        PerformanceEntry(..), gTypePerformanceEntry, IsPerformanceEntry,
+        toPerformanceEntry)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        PerformanceEntry -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.name Mozilla PerformanceEntry.name documentation> 
+getName ::
+        (MonadIO m, IsPerformanceEntry self, FromJSString result) =>
+          self -> m result
+getName self
+  = liftIO (fromJSString <$> (js_getName (toPerformanceEntry self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"entryType\"]; })"
+        js_getEntryType :: PerformanceEntry -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.entryType Mozilla PerformanceEntry.entryType documentation> 
+getEntryType ::
+             (MonadIO m, IsPerformanceEntry self, FromJSString result) =>
+               self -> m result
+getEntryType self
+  = liftIO
+      (fromJSString <$> (js_getEntryType (toPerformanceEntry self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: PerformanceEntry -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.startTime Mozilla PerformanceEntry.startTime documentation> 
+getStartTime ::
+             (MonadIO m, IsPerformanceEntry self) =>
+               self -> m DOMHighResTimeStamp
+getStartTime self
+  = liftIO (js_getStartTime (toPerformanceEntry self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: PerformanceEntry -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry.duration Mozilla PerformanceEntry.duration documentation> 
+getDuration ::
+            (MonadIO m, IsPerformanceEntry self) =>
+              self -> m DOMHighResTimeStamp
+getDuration self
+  = liftIO (js_getDuration (toPerformanceEntry self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceNavigation.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceNavigation
+       (pattern TYPE_NAVIGATE, pattern TYPE_RELOAD,
+        pattern TYPE_BACK_FORWARD, pattern TYPE_RESERVED, js_getType,
+        getType, js_getRedirectCount, getRedirectCount,
+        PerformanceNavigation(..), gTypePerformanceNavigation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern TYPE_NAVIGATE = 0
+pattern TYPE_RELOAD = 1
+pattern TYPE_BACK_FORWARD = 2
+pattern TYPE_RESERVED = 255
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        PerformanceNavigation -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.type Mozilla PerformanceNavigation.type documentation> 
+getType :: (MonadIO m) => PerformanceNavigation -> m Word
+getType self = liftIO (js_getType self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirectCount\"]; })"
+        js_getRedirectCount :: PerformanceNavigation -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation.redirectCount Mozilla PerformanceNavigation.redirectCount documentation> 
+getRedirectCount :: (MonadIO m) => PerformanceNavigation -> m Word
+getRedirectCount self = liftIO (js_getRedirectCount self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserver.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceObserver
+       (js_newPerformanceObserver, newPerformanceObserver, js_observe,
+        observe, js_disconnect, disconnect, PerformanceObserver(..),
+        gTypePerformanceObserver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"PerformanceObserver\"]($1); })" js_newPerformanceObserver
+        :: PerformanceObserverCallback -> IO PerformanceObserver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation> 
+newPerformanceObserver ::
+                       (MonadIO m) => PerformanceObserverCallback -> m PerformanceObserver
+newPerformanceObserver callback
+  = liftIO (js_newPerformanceObserver callback)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"observe\"]($2); })" js_observe ::
+        PerformanceObserver -> PerformanceObserverInit -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.observe Mozilla PerformanceObserver.observe documentation> 
+observe ::
+        (MonadIO m) =>
+          PerformanceObserver -> PerformanceObserverInit -> m ()
+observe self options = liftIO (js_observe self options)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"disconnect\"](); })"
+        js_disconnect :: PerformanceObserver -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver.disconnect Mozilla PerformanceObserver.disconnect documentation> 
+disconnect :: (MonadIO m) => PerformanceObserver -> m ()
+disconnect self = liftIO (js_disconnect self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverCallback.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceObserverCallback
+       (newPerformanceObserverCallback,
+        newPerformanceObserverCallbackSync,
+        newPerformanceObserverCallbackAsync, PerformanceObserverCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
+newPerformanceObserverCallback ::
+                               (MonadIO m) =>
+                                 (PerformanceObserverEntryList -> PerformanceObserver -> IO ()) ->
+                                   m PerformanceObserverCallback
+newPerformanceObserverCallback callback
+  = liftIO
+      (PerformanceObserverCallback <$>
+         syncCallback2 ThrowWouldBlock
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
+newPerformanceObserverCallbackSync ::
+                                   (MonadIO m) =>
+                                     (PerformanceObserverEntryList -> PerformanceObserver -> IO ())
+                                       -> m PerformanceObserverCallback
+newPerformanceObserverCallbackSync callback
+  = liftIO
+      (PerformanceObserverCallback <$>
+         syncCallback2 ContinueAsync
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverCallback Mozilla PerformanceObserverCallback documentation> 
+newPerformanceObserverCallbackAsync ::
+                                    (MonadIO m) =>
+                                      (PerformanceObserverEntryList -> PerformanceObserver -> IO ())
+                                        -> m PerformanceObserverCallback
+newPerformanceObserverCallbackAsync callback
+  = liftIO
+      (PerformanceObserverCallback <$>
+         asyncCallback2
+           (\ entries observer ->
+              fromJSValUnchecked observer >>=
+                \ observer' ->
+                  fromJSValUnchecked entries >>= \ entries' -> callback entries'
+                    observer'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceObserverEntryList.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceObserverEntryList
+       (js_getEntries, getEntries, getEntries_, js_getEntriesByType,
+        getEntriesByType, getEntriesByType_, js_getEntriesByName,
+        getEntriesByName, getEntriesByName_,
+        PerformanceObserverEntryList(..),
+        gTypePerformanceObserverEntryList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getEntries\"](); })"
+        js_getEntries :: PerformanceObserverEntryList -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
+getEntries ::
+           (MonadIO m) =>
+             PerformanceObserverEntryList -> m PerformanceEntryList
+getEntries self
+  = liftIO ((js_getEntries self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntries Mozilla PerformanceObserverEntryList.getEntries documentation> 
+getEntries_ :: (MonadIO m) => PerformanceObserverEntryList -> m ()
+getEntries_ self = liftIO (void (js_getEntries self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getEntriesByType\"]($2); })"
+        js_getEntriesByType ::
+        PerformanceObserverEntryList -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
+getEntriesByType ::
+                 (MonadIO m, ToJSString type') =>
+                   PerformanceObserverEntryList -> type' -> m PerformanceEntryList
+getEntriesByType self type'
+  = liftIO
+      ((js_getEntriesByType self (toJSString type')) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByType Mozilla PerformanceObserverEntryList.getEntriesByType documentation> 
+getEntriesByType_ ::
+                  (MonadIO m, ToJSString type') =>
+                    PerformanceObserverEntryList -> type' -> m ()
+getEntriesByType_ self type'
+  = liftIO (void (js_getEntriesByType self (toJSString type')))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEntriesByName\"]($2, $3); })"
+        js_getEntriesByName ::
+        PerformanceObserverEntryList ->
+          JSString -> Optional JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
+getEntriesByName ::
+                 (MonadIO m, ToJSString name, ToJSString type') =>
+                   PerformanceObserverEntryList ->
+                     name -> Maybe type' -> m PerformanceEntryList
+getEntriesByName self name type'
+  = liftIO
+      ((js_getEntriesByName self (toJSString name)
+          (toOptionalJSString type'))
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList.getEntriesByName Mozilla PerformanceObserverEntryList.getEntriesByName documentation> 
+getEntriesByName_ ::
+                  (MonadIO m, ToJSString name, ToJSString type') =>
+                    PerformanceObserverEntryList -> name -> Maybe type' -> m ()
+getEntriesByName_ self name type'
+  = liftIO
+      (void
+         (js_getEntriesByName self (toJSString name)
+            (toOptionalJSString type')))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceResourceTiming.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceResourceTiming
+       (js_getInitiatorType, getInitiatorType, js_getNextHopProtocol,
+        getNextHopProtocol, js_getWorkerStart, getWorkerStart,
+        js_getRedirectStart, getRedirectStart, js_getRedirectEnd,
+        getRedirectEnd, js_getFetchStart, getFetchStart,
+        js_getDomainLookupStart, getDomainLookupStart,
+        js_getDomainLookupEnd, getDomainLookupEnd, js_getConnectStart,
+        getConnectStart, js_getConnectEnd, getConnectEnd,
+        js_getSecureConnectionStart, getSecureConnectionStart,
+        js_getRequestStart, getRequestStart, js_getResponseStart,
+        getResponseStart, js_getResponseEnd, getResponseEnd,
+        PerformanceResourceTiming(..), gTypePerformanceResourceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"initiatorType\"]; })"
+        js_getInitiatorType :: PerformanceResourceTiming -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.initiatorType Mozilla PerformanceResourceTiming.initiatorType documentation> 
+getInitiatorType ::
+                 (MonadIO m, FromJSString result) =>
+                   PerformanceResourceTiming -> m result
+getInitiatorType self
+  = liftIO (fromJSString <$> (js_getInitiatorType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextHopProtocol\"]; })"
+        js_getNextHopProtocol :: PerformanceResourceTiming -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.nextHopProtocol Mozilla PerformanceResourceTiming.nextHopProtocol documentation> 
+getNextHopProtocol ::
+                   (MonadIO m, FromJSString result) =>
+                     PerformanceResourceTiming -> m result
+getNextHopProtocol self
+  = liftIO (fromJSString <$> (js_getNextHopProtocol self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"workerStart\"]; })"
+        js_getWorkerStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.workerStart Mozilla PerformanceResourceTiming.workerStart documentation> 
+getWorkerStart ::
+               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getWorkerStart self = liftIO (js_getWorkerStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirectStart\"]; })"
+        js_getRedirectStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectStart Mozilla PerformanceResourceTiming.redirectStart documentation> 
+getRedirectStart ::
+                 (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getRedirectStart self = liftIO (js_getRedirectStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirectEnd\"]; })"
+        js_getRedirectEnd ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.redirectEnd Mozilla PerformanceResourceTiming.redirectEnd documentation> 
+getRedirectEnd ::
+               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getRedirectEnd self = liftIO (js_getRedirectEnd self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fetchStart\"]; })"
+        js_getFetchStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.fetchStart Mozilla PerformanceResourceTiming.fetchStart documentation> 
+getFetchStart ::
+              (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getFetchStart self = liftIO (js_getFetchStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domainLookupStart\"]; })"
+        js_getDomainLookupStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupStart Mozilla PerformanceResourceTiming.domainLookupStart documentation> 
+getDomainLookupStart ::
+                     (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getDomainLookupStart self = liftIO (js_getDomainLookupStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domainLookupEnd\"]; })"
+        js_getDomainLookupEnd ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.domainLookupEnd Mozilla PerformanceResourceTiming.domainLookupEnd documentation> 
+getDomainLookupEnd ::
+                   (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getDomainLookupEnd self = liftIO (js_getDomainLookupEnd self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"connectStart\"]; })"
+        js_getConnectStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectStart Mozilla PerformanceResourceTiming.connectStart documentation> 
+getConnectStart ::
+                (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getConnectStart self = liftIO (js_getConnectStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"connectEnd\"]; })"
+        js_getConnectEnd ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.connectEnd Mozilla PerformanceResourceTiming.connectEnd documentation> 
+getConnectEnd ::
+              (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getConnectEnd self = liftIO (js_getConnectEnd self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"secureConnectionStart\"]; })"
+        js_getSecureConnectionStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.secureConnectionStart Mozilla PerformanceResourceTiming.secureConnectionStart documentation> 
+getSecureConnectionStart ::
+                         (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getSecureConnectionStart self
+  = liftIO (js_getSecureConnectionStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requestStart\"]; })"
+        js_getRequestStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.requestStart Mozilla PerformanceResourceTiming.requestStart documentation> 
+getRequestStart ::
+                (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getRequestStart self = liftIO (js_getRequestStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseStart\"]; })"
+        js_getResponseStart ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseStart Mozilla PerformanceResourceTiming.responseStart documentation> 
+getResponseStart ::
+                 (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getResponseStart self = liftIO (js_getResponseStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseEnd\"]; })"
+        js_getResponseEnd ::
+        PerformanceResourceTiming -> IO DOMHighResTimeStamp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming.responseEnd Mozilla PerformanceResourceTiming.responseEnd documentation> 
+getResponseEnd ::
+               (MonadIO m) => PerformanceResourceTiming -> m DOMHighResTimeStamp
+getResponseEnd self = liftIO (js_getResponseEnd self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PerformanceTiming.hs
@@ -0,0 +1,205 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PerformanceTiming
+       (js_getNavigationStart, getNavigationStart, js_getUnloadEventStart,
+        getUnloadEventStart, js_getUnloadEventEnd, getUnloadEventEnd,
+        js_getRedirectStart, getRedirectStart, js_getRedirectEnd,
+        getRedirectEnd, js_getFetchStart, getFetchStart,
+        js_getDomainLookupStart, getDomainLookupStart,
+        js_getDomainLookupEnd, getDomainLookupEnd, js_getConnectStart,
+        getConnectStart, js_getConnectEnd, getConnectEnd,
+        js_getSecureConnectionStart, getSecureConnectionStart,
+        js_getRequestStart, getRequestStart, js_getResponseStart,
+        getResponseStart, js_getResponseEnd, getResponseEnd,
+        js_getDomLoading, getDomLoading, js_getDomInteractive,
+        getDomInteractive, js_getDomContentLoadedEventStart,
+        getDomContentLoadedEventStart, js_getDomContentLoadedEventEnd,
+        getDomContentLoadedEventEnd, js_getDomComplete, getDomComplete,
+        js_getLoadEventStart, getLoadEventStart, js_getLoadEventEnd,
+        getLoadEventEnd, PerformanceTiming(..), gTypePerformanceTiming)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"navigationStart\"]; })"
+        js_getNavigationStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.navigationStart Mozilla PerformanceTiming.navigationStart documentation> 
+getNavigationStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getNavigationStart self
+  = liftIO (round <$> (js_getNavigationStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unloadEventStart\"]; })"
+        js_getUnloadEventStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventStart Mozilla PerformanceTiming.unloadEventStart documentation> 
+getUnloadEventStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getUnloadEventStart self
+  = liftIO (round <$> (js_getUnloadEventStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unloadEventEnd\"]; })"
+        js_getUnloadEventEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.unloadEventEnd Mozilla PerformanceTiming.unloadEventEnd documentation> 
+getUnloadEventEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getUnloadEventEnd self
+  = liftIO (round <$> (js_getUnloadEventEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirectStart\"]; })"
+        js_getRedirectStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectStart Mozilla PerformanceTiming.redirectStart documentation> 
+getRedirectStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getRedirectStart self
+  = liftIO (round <$> (js_getRedirectStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirectEnd\"]; })"
+        js_getRedirectEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.redirectEnd Mozilla PerformanceTiming.redirectEnd documentation> 
+getRedirectEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getRedirectEnd self = liftIO (round <$> (js_getRedirectEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fetchStart\"]; })"
+        js_getFetchStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.fetchStart Mozilla PerformanceTiming.fetchStart documentation> 
+getFetchStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getFetchStart self = liftIO (round <$> (js_getFetchStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domainLookupStart\"]; })"
+        js_getDomainLookupStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupStart Mozilla PerformanceTiming.domainLookupStart documentation> 
+getDomainLookupStart ::
+                     (MonadIO m) => PerformanceTiming -> m Word64
+getDomainLookupStart self
+  = liftIO (round <$> (js_getDomainLookupStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domainLookupEnd\"]; })"
+        js_getDomainLookupEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domainLookupEnd Mozilla PerformanceTiming.domainLookupEnd documentation> 
+getDomainLookupEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getDomainLookupEnd self
+  = liftIO (round <$> (js_getDomainLookupEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"connectStart\"]; })"
+        js_getConnectStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectStart Mozilla PerformanceTiming.connectStart documentation> 
+getConnectStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getConnectStart self = liftIO (round <$> (js_getConnectStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"connectEnd\"]; })"
+        js_getConnectEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.connectEnd Mozilla PerformanceTiming.connectEnd documentation> 
+getConnectEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getConnectEnd self = liftIO (round <$> (js_getConnectEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"secureConnectionStart\"]; })"
+        js_getSecureConnectionStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.secureConnectionStart Mozilla PerformanceTiming.secureConnectionStart documentation> 
+getSecureConnectionStart ::
+                         (MonadIO m) => PerformanceTiming -> m Word64
+getSecureConnectionStart self
+  = liftIO (round <$> (js_getSecureConnectionStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requestStart\"]; })"
+        js_getRequestStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.requestStart Mozilla PerformanceTiming.requestStart documentation> 
+getRequestStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getRequestStart self = liftIO (round <$> (js_getRequestStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseStart\"]; })"
+        js_getResponseStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseStart Mozilla PerformanceTiming.responseStart documentation> 
+getResponseStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getResponseStart self
+  = liftIO (round <$> (js_getResponseStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseEnd\"]; })"
+        js_getResponseEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.responseEnd Mozilla PerformanceTiming.responseEnd documentation> 
+getResponseEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getResponseEnd self = liftIO (round <$> (js_getResponseEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domLoading\"]; })"
+        js_getDomLoading :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domLoading Mozilla PerformanceTiming.domLoading documentation> 
+getDomLoading :: (MonadIO m) => PerformanceTiming -> m Word64
+getDomLoading self = liftIO (round <$> (js_getDomLoading self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domInteractive\"]; })"
+        js_getDomInteractive :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domInteractive Mozilla PerformanceTiming.domInteractive documentation> 
+getDomInteractive :: (MonadIO m) => PerformanceTiming -> m Word64
+getDomInteractive self
+  = liftIO (round <$> (js_getDomInteractive self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"domContentLoadedEventStart\"]; })"
+        js_getDomContentLoadedEventStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventStart Mozilla PerformanceTiming.domContentLoadedEventStart documentation> 
+getDomContentLoadedEventStart ::
+                              (MonadIO m) => PerformanceTiming -> m Word64
+getDomContentLoadedEventStart self
+  = liftIO (round <$> (js_getDomContentLoadedEventStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domContentLoadedEventEnd\"]; })"
+        js_getDomContentLoadedEventEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domContentLoadedEventEnd Mozilla PerformanceTiming.domContentLoadedEventEnd documentation> 
+getDomContentLoadedEventEnd ::
+                            (MonadIO m) => PerformanceTiming -> m Word64
+getDomContentLoadedEventEnd self
+  = liftIO (round <$> (js_getDomContentLoadedEventEnd self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"domComplete\"]; })"
+        js_getDomComplete :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.domComplete Mozilla PerformanceTiming.domComplete documentation> 
+getDomComplete :: (MonadIO m) => PerformanceTiming -> m Word64
+getDomComplete self = liftIO (round <$> (js_getDomComplete self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loadEventStart\"]; })"
+        js_getLoadEventStart :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventStart Mozilla PerformanceTiming.loadEventStart documentation> 
+getLoadEventStart :: (MonadIO m) => PerformanceTiming -> m Word64
+getLoadEventStart self
+  = liftIO (round <$> (js_getLoadEventStart self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loadEventEnd\"]; })"
+        js_getLoadEventEnd :: PerformanceTiming -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming.loadEventEnd Mozilla PerformanceTiming.loadEventEnd documentation> 
+getLoadEventEnd :: (MonadIO m) => PerformanceTiming -> m Word64
+getLoadEventEnd self = liftIO (round <$> (js_getLoadEventEnd self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Plugin.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Plugin
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_getName, getName, js_getFilename, getFilename,
+        js_getDescription, getDescription, js_getLength, getLength,
+        Plugin(..), gTypePlugin)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        Plugin -> Word -> IO (Nullable MimeType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+item :: (MonadIO m) => Plugin -> Word -> m (Maybe MimeType)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+item_ :: (MonadIO m) => Plugin -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => Plugin -> Word -> m MimeType
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.item Mozilla Plugin.item documentation> 
+itemUnchecked :: (MonadIO m) => Plugin -> Word -> m MimeType
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        Plugin -> JSString -> IO (Nullable MimeType)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            Plugin -> name -> m (Maybe MimeType)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) => Plugin -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  Plugin -> name -> m MimeType
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.namedItem Mozilla Plugin.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) => Plugin -> name -> m MimeType
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        Plugin -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.name Mozilla Plugin.name documentation> 
+getName :: (MonadIO m, FromJSString result) => Plugin -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"filename\"]; })" js_getFilename
+        :: Plugin -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.filename Mozilla Plugin.filename documentation> 
+getFilename ::
+            (MonadIO m, FromJSString result) => Plugin -> m result
+getFilename self = liftIO (fromJSString <$> (js_getFilename self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"description\"]; })"
+        js_getDescription :: Plugin -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.description Mozilla Plugin.description documentation> 
+getDescription ::
+               (MonadIO m, FromJSString result) => Plugin -> m result
+getDescription self
+  = liftIO (fromJSString <$> (js_getDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        Plugin -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Plugin.length Mozilla Plugin.length documentation> 
+getLength :: (MonadIO m) => Plugin -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PluginArray.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PluginArray
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_namedItem,
+        namedItem, namedItem_, namedItemUnsafe, namedItemUnchecked,
+        js_refresh, refresh, js_getLength, getLength, PluginArray(..),
+        gTypePluginArray)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        PluginArray -> Word -> IO (Nullable Plugin)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+item :: (MonadIO m) => PluginArray -> Word -> m (Maybe Plugin)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+item_ :: (MonadIO m) => PluginArray -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => PluginArray -> Word -> m Plugin
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.item Mozilla PluginArray.item documentation> 
+itemUnchecked :: (MonadIO m) => PluginArray -> Word -> m Plugin
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_namedItem ::
+        PluginArray -> JSString -> IO (Nullable Plugin)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItem ::
+          (MonadIO m, ToJSString name) =>
+            PluginArray -> name -> m (Maybe Plugin)
+namedItem self name
+  = liftIO
+      (nullableToMaybe <$> (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItem_ ::
+           (MonadIO m, ToJSString name) => PluginArray -> name -> m ()
+namedItem_ self name
+  = liftIO (void (js_namedItem self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItemUnsafe ::
+                (MonadIO m, ToJSString name, HasCallStack) =>
+                  PluginArray -> name -> m Plugin
+namedItemUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_namedItem self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.namedItem Mozilla PluginArray.namedItem documentation> 
+namedItemUnchecked ::
+                   (MonadIO m, ToJSString name) => PluginArray -> name -> m Plugin
+namedItemUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_namedItem self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"refresh\"]($2); })" js_refresh
+        :: PluginArray -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.refresh Mozilla PluginArray.refresh documentation> 
+refresh :: (MonadIO m) => PluginArray -> Bool -> m ()
+refresh self reload = liftIO (js_refresh self reload)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        PluginArray -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray.length Mozilla PluginArray.length documentation> 
+getLength :: (MonadIO m) => PluginArray -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PopStateEvent.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PopStateEvent
+       (js_newPopStateEvent, newPopStateEvent, js_getState, getState,
+        PopStateEvent(..), gTypePopStateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"PopStateEvent\"]($1,\n$2); })" js_newPopStateEvent ::
+        JSString -> Optional PopStateEventInit -> IO PopStateEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation> 
+newPopStateEvent ::
+                 (MonadIO m, ToJSString type') =>
+                   type' -> Maybe PopStateEventInit -> m PopStateEvent
+newPopStateEvent type' eventInitDict
+  = liftIO
+      (js_newPopStateEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
+        PopStateEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent.state Mozilla PopStateEvent.state documentation> 
+getState :: (MonadIO m) => PopStateEvent -> m JSVal
+getState self = liftIO (js_getState self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PositionCallback
+       (newPositionCallback, newPositionCallbackSync,
+        newPositionCallbackAsync, PositionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallback ::
+                    (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
+newPositionCallback callback
+  = liftIO
+      (PositionCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ position ->
+              fromJSValUnchecked position >>= \ position' -> callback position'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallbackSync ::
+                        (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
+newPositionCallbackSync callback
+  = liftIO
+      (PositionCallback <$>
+         syncCallback1 ContinueAsync
+           (\ position ->
+              fromJSValUnchecked position >>= \ position' -> callback position'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionCallback Mozilla PositionCallback documentation> 
+newPositionCallbackAsync ::
+                         (MonadIO m) => (Geoposition -> IO ()) -> m PositionCallback
+newPositionCallbackAsync callback
+  = liftIO
+      (PositionCallback <$>
+         asyncCallback1
+           (\ position ->
+              fromJSValUnchecked position >>= \ position' -> callback position'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionError.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PositionError
+       (pattern PERMISSION_DENIED, pattern POSITION_UNAVAILABLE,
+        pattern TIMEOUT, js_getCode, getCode, js_getMessage, getMessage,
+        PositionError(..), gTypePositionError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern PERMISSION_DENIED = 1
+pattern POSITION_UNAVAILABLE = 2
+pattern TIMEOUT = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        PositionError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.code Mozilla PositionError.code documentation> 
+getCode :: (MonadIO m) => PositionError -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        PositionError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionError.message Mozilla PositionError.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => PositionError -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PositionErrorCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PositionErrorCallback
+       (newPositionErrorCallback, newPositionErrorCallbackSync,
+        newPositionErrorCallbackAsync, PositionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallback ::
+                         (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallback callback
+  = liftIO
+      (PositionErrorCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallbackSync ::
+                             (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallbackSync callback
+  = liftIO
+      (PositionErrorCallback <$>
+         syncCallback1 ContinueAsync
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PositionErrorCallback Mozilla PositionErrorCallback documentation> 
+newPositionErrorCallbackAsync ::
+                              (MonadIO m) => (PositionError -> IO ()) -> m PositionErrorCallback
+newPositionErrorCallbackAsync callback
+  = liftIO
+      (PositionErrorCallback <$>
+         asyncCallback1
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProcessingInstruction.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ProcessingInstruction
+       (js_getTarget, getTarget, js_getSheet, getSheet, getSheetUnsafe,
+        getSheetUnchecked, ProcessingInstruction(..),
+        gTypeProcessingInstruction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        ProcessingInstruction -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.target Mozilla ProcessingInstruction.target documentation> 
+getTarget ::
+          (MonadIO m, FromJSString result) =>
+            ProcessingInstruction -> m result
+getTarget self = liftIO (fromJSString <$> (js_getTarget self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sheet\"]; })" js_getSheet ::
+        ProcessingInstruction -> IO (Nullable StyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
+getSheet ::
+         (MonadIO m) => ProcessingInstruction -> m (Maybe StyleSheet)
+getSheet self = liftIO (nullableToMaybe <$> (js_getSheet self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
+getSheetUnsafe ::
+               (MonadIO m, HasCallStack) => ProcessingInstruction -> m StyleSheet
+getSheetUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSheet self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction.sheet Mozilla ProcessingInstruction.sheet documentation> 
+getSheetUnchecked ::
+                  (MonadIO m) => ProcessingInstruction -> m StyleSheet
+getSheetUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getSheet self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ProgressEvent.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ProgressEvent
+       (js_newProgressEvent, newProgressEvent, js_getLengthComputable,
+        getLengthComputable, js_getLoaded, getLoaded, js_getTotal,
+        getTotal, ProgressEvent(..), gTypeProgressEvent, IsProgressEvent,
+        toProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"ProgressEvent\"]($1,\n$2); })" js_newProgressEvent ::
+        JSString -> Optional ProgressEventInit -> IO ProgressEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation> 
+newProgressEvent ::
+                 (MonadIO m, ToJSString type') =>
+                   type' -> Maybe ProgressEventInit -> m ProgressEvent
+newProgressEvent type' eventInitDict
+  = liftIO
+      (js_newProgressEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"lengthComputable\"] ? 1 : 0); })" js_getLengthComputable ::
+        ProgressEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.lengthComputable Mozilla ProgressEvent.lengthComputable documentation> 
+getLengthComputable ::
+                    (MonadIO m, IsProgressEvent self) => self -> m Bool
+getLengthComputable self
+  = liftIO (js_getLengthComputable (toProgressEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loaded\"]; })" js_getLoaded ::
+        ProgressEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.loaded Mozilla ProgressEvent.loaded documentation> 
+getLoaded :: (MonadIO m, IsProgressEvent self) => self -> m Word64
+getLoaded self
+  = liftIO (round <$> (js_getLoaded (toProgressEvent self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"total\"]; })" js_getTotal ::
+        ProgressEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent.total Mozilla ProgressEvent.total documentation> 
+getTotal :: (MonadIO m, IsProgressEvent self) => self -> m Word64
+getTotal self
+  = liftIO (round <$> (js_getTotal (toProgressEvent self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/PromiseRejectionEvent.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.PromiseRejectionEvent
+       (js_newPromiseRejectionEvent, newPromiseRejectionEvent,
+        js_getPromise, getPromise, js_getReason, getReason,
+        PromiseRejectionEvent(..), gTypePromiseRejectionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"PromiseRejectionEvent\"]($1,\n$2); })"
+        js_newPromiseRejectionEvent ::
+        JSString -> PromiseRejectionEventInit -> IO PromiseRejectionEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent Mozilla PromiseRejectionEvent documentation> 
+newPromiseRejectionEvent ::
+                         (MonadIO m, ToJSString type') =>
+                           type' -> PromiseRejectionEventInit -> m PromiseRejectionEvent
+newPromiseRejectionEvent type' eventInitDict
+  = liftIO
+      (js_newPromiseRejectionEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"promise\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getPromise :: PromiseRejectionEvent -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.promise Mozilla PromiseRejectionEvent.promise documentation> 
+getPromise :: (MonadIO m) => PromiseRejectionEvent -> m JSVal
+getPromise self
+  = liftIO ((js_getPromise self) >>= checkPromiseResult)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reason\"]; })" js_getReason ::
+        PromiseRejectionEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent.reason Mozilla PromiseRejectionEvent.reason documentation> 
+getReason :: (MonadIO m) => PromiseRejectionEvent -> m JSVal
+getReason self = liftIO (js_getReason self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs b/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/QuickTimePluginReplacement.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.QuickTimePluginReplacement
+       (js_postEvent, postEvent, js_getMovieSize, getMovieSize,
+        js_getTimedMetaData, getTimedMetaData, js_getAccessLog,
+        getAccessLog, js_getErrorLog, getErrorLog,
+        QuickTimePluginReplacement(..), gTypeQuickTimePluginReplacement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"postEvent\"]($2); })"
+        js_postEvent :: QuickTimePluginReplacement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.postEvent Mozilla QuickTimePluginReplacement.postEvent documentation> 
+postEvent ::
+          (MonadIO m, ToJSString eventName) =>
+            QuickTimePluginReplacement -> eventName -> m ()
+postEvent self eventName
+  = liftIO (js_postEvent self (toJSString eventName))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"movieSize\"]; })"
+        js_getMovieSize :: QuickTimePluginReplacement -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.movieSize Mozilla QuickTimePluginReplacement.movieSize documentation> 
+getMovieSize ::
+             (MonadIO m) => QuickTimePluginReplacement -> m Word64
+getMovieSize self = liftIO (round <$> (js_getMovieSize self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timedMetaData\"]; })"
+        js_getTimedMetaData :: QuickTimePluginReplacement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.timedMetaData Mozilla QuickTimePluginReplacement.timedMetaData documentation> 
+getTimedMetaData ::
+                 (MonadIO m) => QuickTimePluginReplacement -> m JSVal
+getTimedMetaData self = liftIO (js_getTimedMetaData self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"accessLog\"]; })"
+        js_getAccessLog :: QuickTimePluginReplacement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.accessLog Mozilla QuickTimePluginReplacement.accessLog documentation> 
+getAccessLog ::
+             (MonadIO m) => QuickTimePluginReplacement -> m JSVal
+getAccessLog self = liftIO (js_getAccessLog self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"errorLog\"]; })" js_getErrorLog
+        :: QuickTimePluginReplacement -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement.errorLog Mozilla QuickTimePluginReplacement.errorLog documentation> 
+getErrorLog :: (MonadIO m) => QuickTimePluginReplacement -> m JSVal
+getErrorLog self = liftIO (js_getErrorLog self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs b/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RGBColor.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RGBColor
+       (js_getRed, getRed, js_getGreen, getGreen, js_getBlue, getBlue,
+        js_getAlpha, getAlpha, RGBColor(..), gTypeRGBColor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"red\"]; })" js_getRed ::
+        RGBColor -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.red Mozilla RGBColor.red documentation> 
+getRed :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
+getRed self = liftIO (js_getRed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"green\"]; })" js_getGreen ::
+        RGBColor -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.green Mozilla RGBColor.green documentation> 
+getGreen :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
+getGreen self = liftIO (js_getGreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"blue\"]; })" js_getBlue ::
+        RGBColor -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.blue Mozilla RGBColor.blue documentation> 
+getBlue :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
+getBlue self = liftIO (js_getBlue self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alpha\"]; })" js_getAlpha ::
+        RGBColor -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor.alpha Mozilla RGBColor.alpha documentation> 
+getAlpha :: (MonadIO m) => RGBColor -> m CSSPrimitiveValue
+getAlpha self = liftIO (js_getAlpha self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFSender.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDTMFSender
+       (js_insertDTMF, insertDTMF, toneChange, js_getToneBuffer,
+        getToneBuffer, js_getCanInsertDTMF, getCanInsertDTMF, js_getTrack,
+        getTrack, js_getDuration, getDuration, js_getInterToneGap,
+        getInterToneGap, RTCDTMFSender(..), gTypeRTCDTMFSender)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"insertDTMF\"]($2, $3, $4); })"
+        js_insertDTMF ::
+        RTCDTMFSender -> JSString -> Optional Int -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.insertDTMF Mozilla RTCDTMFSender.insertDTMF documentation> 
+insertDTMF ::
+           (MonadIO m, ToJSString tones) =>
+             RTCDTMFSender -> tones -> Maybe Int -> Maybe Int -> m ()
+insertDTMF self tones duration interToneGap
+  = liftIO
+      (js_insertDTMF self (toJSString tones) (maybeToOptional duration)
+         (maybeToOptional interToneGap))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.ontonechange Mozilla RTCDTMFSender.ontonechange documentation> 
+toneChange :: EventName RTCDTMFSender Event
+toneChange = unsafeEventName (toJSString "tonechange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toneBuffer\"]; })"
+        js_getToneBuffer :: RTCDTMFSender -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.toneBuffer Mozilla RTCDTMFSender.toneBuffer documentation> 
+getToneBuffer ::
+              (MonadIO m, FromJSString result) => RTCDTMFSender -> m result
+getToneBuffer self
+  = liftIO (fromJSString <$> (js_getToneBuffer self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"canInsertDTMF\"] ? 1 : 0); })"
+        js_getCanInsertDTMF :: RTCDTMFSender -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.canInsertDTMF Mozilla RTCDTMFSender.canInsertDTMF documentation> 
+getCanInsertDTMF :: (MonadIO m) => RTCDTMFSender -> m Bool
+getCanInsertDTMF self = liftIO (js_getCanInsertDTMF self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        RTCDTMFSender -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.track Mozilla RTCDTMFSender.track documentation> 
+getTrack :: (MonadIO m) => RTCDTMFSender -> m MediaStreamTrack
+getTrack self = liftIO (js_getTrack self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"duration\"]; })" js_getDuration
+        :: RTCDTMFSender -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.duration Mozilla RTCDTMFSender.duration documentation> 
+getDuration :: (MonadIO m) => RTCDTMFSender -> m Int
+getDuration self = liftIO (js_getDuration self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"interToneGap\"]; })"
+        js_getInterToneGap :: RTCDTMFSender -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender.interToneGap Mozilla RTCDTMFSender.interToneGap documentation> 
+getInterToneGap :: (MonadIO m) => RTCDTMFSender -> m Int
+getInterToneGap self = liftIO (js_getInterToneGap self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDTMFToneChangeEvent.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDTMFToneChangeEvent
+       (js_newRTCDTMFToneChangeEvent, newRTCDTMFToneChangeEvent,
+        js_getTone, getTone, RTCDTMFToneChangeEvent(..),
+        gTypeRTCDTMFToneChangeEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"RTCDTMFToneChangeEvent\"]($1,\n$2); })"
+        js_newRTCDTMFToneChangeEvent ::
+        JSString ->
+          Optional RTCDTMFToneChangeEventInit -> IO RTCDTMFToneChangeEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation> 
+newRTCDTMFToneChangeEvent ::
+                          (MonadIO m, ToJSString type') =>
+                            type' ->
+                              Maybe RTCDTMFToneChangeEventInit -> m RTCDTMFToneChangeEvent
+newRTCDTMFToneChangeEvent type' eventInitDict
+  = liftIO
+      (js_newRTCDTMFToneChangeEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tone\"]; })" js_getTone ::
+        RTCDTMFToneChangeEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent.tone Mozilla RTCDTMFToneChangeEvent.tone documentation> 
+getTone ::
+        (MonadIO m, FromJSString result) =>
+          RTCDTMFToneChangeEvent -> m result
+getTone self = liftIO (fromJSString <$> (js_getTone self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannel.hs
@@ -0,0 +1,255 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDataChannel
+       (js_send, send, js_sendView, sendView, js_sendBlob, sendBlob,
+        js_sendString, sendString, js_close, close, js_getLabel, getLabel,
+        js_getOrdered, getOrdered, js_getMaxPacketLifeTime,
+        getMaxPacketLifeTime, getMaxPacketLifeTimeUnsafe,
+        getMaxPacketLifeTimeUnchecked, js_getMaxRetransmits,
+        getMaxRetransmits, getMaxRetransmitsUnsafe,
+        getMaxRetransmitsUnchecked, js_getProtocol, getProtocol,
+        js_getNegotiated, getNegotiated, js_getId, getId, getIdUnsafe,
+        getIdUnchecked, js_getReadyState, getReadyState,
+        js_getBufferedAmount, getBufferedAmount,
+        js_setBufferedAmountLowThreshold, setBufferedAmountLowThreshold,
+        js_getBufferedAmountLowThreshold, getBufferedAmountLowThreshold,
+        js_setBinaryType, setBinaryType, js_getBinaryType, getBinaryType,
+        open, error, closeEvent, message, bufferedamountlow,
+        RTCDataChannel(..), gTypeRTCDataChannel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
+        RTCDataChannel -> ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+send ::
+     (MonadIO m, IsArrayBuffer data') => RTCDataChannel -> data' -> m ()
+send self data' = liftIO (js_send self (toArrayBuffer data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendView ::
+        RTCDataChannel -> ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendView ::
+         (MonadIO m, IsArrayBufferView data') =>
+           RTCDataChannel -> data' -> m ()
+sendView self data'
+  = liftIO (js_sendView self (toArrayBufferView data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendBlob ::
+        RTCDataChannel -> Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendBlob ::
+         (MonadIO m, IsBlob data') => RTCDataChannel -> data' -> m ()
+sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendString ::
+        RTCDataChannel -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.send Mozilla RTCDataChannel.send documentation> 
+sendString ::
+           (MonadIO m, ToJSString data') => RTCDataChannel -> data' -> m ()
+sendString self data'
+  = liftIO (js_sendString self (toJSString data'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        RTCDataChannel -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.close Mozilla RTCDataChannel.close documentation> 
+close :: (MonadIO m) => RTCDataChannel -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        RTCDataChannel -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.label Mozilla RTCDataChannel.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => RTCDataChannel -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ordered\"] ? 1 : 0); })"
+        js_getOrdered :: RTCDataChannel -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.ordered Mozilla RTCDataChannel.ordered documentation> 
+getOrdered :: (MonadIO m) => RTCDataChannel -> m Bool
+getOrdered self = liftIO (js_getOrdered self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxPacketLifeTime\"]; })"
+        js_getMaxPacketLifeTime :: RTCDataChannel -> IO (Nullable Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
+getMaxPacketLifeTime ::
+                     (MonadIO m) => RTCDataChannel -> m (Maybe Word)
+getMaxPacketLifeTime self
+  = liftIO (nullableToMaybe <$> (js_getMaxPacketLifeTime self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
+getMaxPacketLifeTimeUnsafe ::
+                           (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getMaxPacketLifeTime self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxPacketLifeTime Mozilla RTCDataChannel.maxPacketLifeTime documentation> 
+getMaxPacketLifeTimeUnchecked ::
+                              (MonadIO m) => RTCDataChannel -> m Word
+getMaxPacketLifeTimeUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getMaxPacketLifeTime self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maxRetransmits\"]; })"
+        js_getMaxRetransmits :: RTCDataChannel -> IO (Nullable Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
+getMaxRetransmits ::
+                  (MonadIO m) => RTCDataChannel -> m (Maybe Word)
+getMaxRetransmits self
+  = liftIO (nullableToMaybe <$> (js_getMaxRetransmits self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
+getMaxRetransmitsUnsafe ::
+                        (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
+getMaxRetransmitsUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getMaxRetransmits self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.maxRetransmits Mozilla RTCDataChannel.maxRetransmits documentation> 
+getMaxRetransmitsUnchecked ::
+                           (MonadIO m) => RTCDataChannel -> m Word
+getMaxRetransmitsUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getMaxRetransmits self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: RTCDataChannel -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.protocol Mozilla RTCDataChannel.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => RTCDataChannel -> m result
+getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"negotiated\"] ? 1 : 0); })"
+        js_getNegotiated :: RTCDataChannel -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.negotiated Mozilla RTCDataChannel.negotiated documentation> 
+getNegotiated :: (MonadIO m) => RTCDataChannel -> m Bool
+getNegotiated self = liftIO (js_getNegotiated self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        RTCDataChannel -> IO (Nullable Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+getId :: (MonadIO m) => RTCDataChannel -> m (Maybe Word)
+getId self = liftIO (nullableToMaybe <$> (js_getId self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+getIdUnsafe ::
+            (MonadIO m, HasCallStack) => RTCDataChannel -> m Word
+getIdUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getId self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.id Mozilla RTCDataChannel.id documentation> 
+getIdUnchecked :: (MonadIO m) => RTCDataChannel -> m Word
+getIdUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: RTCDataChannel -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.readyState Mozilla RTCDataChannel.readyState documentation> 
+getReadyState ::
+              (MonadIO m) => RTCDataChannel -> m RTCDataChannelState
+getReadyState self
+  = liftIO ((js_getReadyState self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bufferedAmount\"]; })"
+        js_getBufferedAmount :: RTCDataChannel -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmount Mozilla RTCDataChannel.bufferedAmount documentation> 
+getBufferedAmount :: (MonadIO m) => RTCDataChannel -> m Word
+getBufferedAmount self = liftIO (js_getBufferedAmount self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"bufferedAmountLowThreshold\"] = $2; })"
+        js_setBufferedAmountLowThreshold :: RTCDataChannel -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
+setBufferedAmountLowThreshold ::
+                              (MonadIO m) => RTCDataChannel -> Word -> m ()
+setBufferedAmountLowThreshold self val
+  = liftIO (js_setBufferedAmountLowThreshold self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"bufferedAmountLowThreshold\"]; })"
+        js_getBufferedAmountLowThreshold :: RTCDataChannel -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.bufferedAmountLowThreshold Mozilla RTCDataChannel.bufferedAmountLowThreshold documentation> 
+getBufferedAmountLowThreshold ::
+                              (MonadIO m) => RTCDataChannel -> m Word
+getBufferedAmountLowThreshold self
+  = liftIO (js_getBufferedAmountLowThreshold self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"binaryType\"] = $2; })"
+        js_setBinaryType :: RTCDataChannel -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
+setBinaryType ::
+              (MonadIO m, ToJSString val) => RTCDataChannel -> val -> m ()
+setBinaryType self val
+  = liftIO (js_setBinaryType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"binaryType\"]; })"
+        js_getBinaryType :: RTCDataChannel -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.binaryType Mozilla RTCDataChannel.binaryType documentation> 
+getBinaryType ::
+              (MonadIO m, FromJSString result) => RTCDataChannel -> m result
+getBinaryType self
+  = liftIO (fromJSString <$> (js_getBinaryType self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onopen Mozilla RTCDataChannel.onopen documentation> 
+open :: EventName RTCDataChannel Event
+open = unsafeEventNameAsync (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onerror Mozilla RTCDataChannel.onerror documentation> 
+error :: EventName RTCDataChannel UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onclose Mozilla RTCDataChannel.onclose documentation> 
+closeEvent :: EventName RTCDataChannel CloseEvent
+closeEvent = unsafeEventNameAsync (toJSString "close")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onmessage Mozilla RTCDataChannel.onmessage documentation> 
+message :: EventName RTCDataChannel MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel.onbufferedamountlow Mozilla RTCDataChannel.onbufferedamountlow documentation> 
+bufferedamountlow :: EventName RTCDataChannel onbufferedamountlow
+bufferedamountlow
+  = unsafeEventName (toJSString "bufferedamountlow")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCDataChannelEvent.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCDataChannelEvent
+       (js_newRTCDataChannelEvent, newRTCDataChannelEvent, js_getChannel,
+        getChannel, RTCDataChannelEvent(..), gTypeRTCDataChannelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"RTCDataChannelEvent\"]($1,\n$2); })"
+        js_newRTCDataChannelEvent ::
+        JSString -> RTCDataChannelEventInit -> IO RTCDataChannelEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation> 
+newRTCDataChannelEvent ::
+                       (MonadIO m, ToJSString type') =>
+                         type' -> RTCDataChannelEventInit -> m RTCDataChannelEvent
+newRTCDataChannelEvent type' eventInitDict
+  = liftIO
+      (js_newRTCDataChannelEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"channel\"]; })" js_getChannel ::
+        RTCDataChannelEvent -> IO RTCDataChannel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent.channel Mozilla RTCDataChannelEvent.channel documentation> 
+getChannel ::
+           (MonadIO m) => RTCDataChannelEvent -> m RTCDataChannel
+getChannel self = liftIO (js_getChannel self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidate.hs
@@ -0,0 +1,97 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidate
+       (js_newRTCIceCandidate, newRTCIceCandidate, js_getCandidate,
+        getCandidate, js_getSdpMid, getSdpMid, getSdpMidUnsafe,
+        getSdpMidUnchecked, js_getSdpMLineIndex, getSdpMLineIndex,
+        getSdpMLineIndexUnsafe, getSdpMLineIndexUnchecked,
+        RTCIceCandidate(..), gTypeRTCIceCandidate)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1) => { return new window[\"RTCIceCandidate\"]($1); })" js_newRTCIceCandidate ::
+        RTCIceCandidateInit -> IO RTCIceCandidate
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation> 
+newRTCIceCandidate ::
+                   (MonadIO m) => RTCIceCandidateInit -> m RTCIceCandidate
+newRTCIceCandidate candidateInitDict
+  = liftIO (js_newRTCIceCandidate candidateInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate :: RTCIceCandidate -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.candidate Mozilla RTCIceCandidate.candidate documentation> 
+getCandidate ::
+             (MonadIO m, FromJSString result) => RTCIceCandidate -> m result
+getCandidate self
+  = liftIO (fromJSString <$> (js_getCandidate self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sdpMid\"]; })" js_getSdpMid ::
+        RTCIceCandidate -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
+getSdpMid ::
+          (MonadIO m, FromJSString result) =>
+            RTCIceCandidate -> m (Maybe result)
+getSdpMid self = liftIO (fromMaybeJSString <$> (js_getSdpMid self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
+getSdpMidUnsafe ::
+                (MonadIO m, HasCallStack, FromJSString result) =>
+                  RTCIceCandidate -> m result
+getSdpMidUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getSdpMid self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMid Mozilla RTCIceCandidate.sdpMid documentation> 
+getSdpMidUnchecked ::
+                   (MonadIO m, FromJSString result) => RTCIceCandidate -> m result
+getSdpMidUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getSdpMid self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sdpMLineIndex\"]; })"
+        js_getSdpMLineIndex :: RTCIceCandidate -> IO (Nullable Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
+getSdpMLineIndex ::
+                 (MonadIO m) => RTCIceCandidate -> m (Maybe Word)
+getSdpMLineIndex self
+  = liftIO (nullableToMaybe <$> (js_getSdpMLineIndex self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
+getSdpMLineIndexUnsafe ::
+                       (MonadIO m, HasCallStack) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSdpMLineIndex self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate.sdpMLineIndex Mozilla RTCIceCandidate.sdpMLineIndex documentation> 
+getSdpMLineIndexUnchecked ::
+                          (MonadIO m) => RTCIceCandidate -> m Word
+getSdpMLineIndexUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getSdpMLineIndex self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceCandidateEvent.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceCandidateEvent
+       (js_getCandidate, getCandidate, RTCIceCandidateEvent(..),
+        gTypeRTCIceCandidateEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate :: RTCIceCandidateEvent -> IO RTCIceCandidate
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent.candidate Mozilla RTCIceCandidateEvent.candidate documentation> 
+getCandidate ::
+             (MonadIO m) => RTCIceCandidateEvent -> m RTCIceCandidate
+getCandidate self = liftIO (js_getCandidate self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCIceTransport.hs
@@ -0,0 +1,44 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCIceTransport
+       (js_getState, getState, js_getGatheringState, getGatheringState,
+        RTCIceTransport(..), gTypeRTCIceTransport)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
+        RTCIceTransport -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.state Mozilla RTCIceTransport.state documentation> 
+getState ::
+         (MonadIO m) => RTCIceTransport -> m RTCIceTransportState
+getState self = liftIO ((js_getState self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gatheringState\"]; })"
+        js_getGatheringState :: RTCIceTransport -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport.gatheringState Mozilla RTCIceTransport.gatheringState documentation> 
+getGatheringState ::
+                  (MonadIO m) => RTCIceTransport -> m RTCIceGatheringState
+getGatheringState self
+  = liftIO ((js_getGatheringState self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnection.hs
@@ -0,0 +1,630 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnection
+       (js_createOffer, createOffer, createOffer_, js_createAnswer,
+        createAnswer, createAnswer_, js_setLocalDescription,
+        setLocalDescription, js_setRemoteDescription, setRemoteDescription,
+        js_addIceCandidate, addIceCandidate, js_getConfiguration,
+        getConfiguration, getConfiguration_, js_setConfiguration,
+        setConfiguration, js_close, close, js_getSenders, getSenders,
+        getSenders_, js_getReceivers, getReceivers, getReceivers_,
+        js_getTransceivers, getTransceivers, getTransceivers_, js_addTrack,
+        addTrack, addTrack_, js_removeTrack, removeTrack,
+        js_addTransceiverTrack, addTransceiverTrack, addTransceiverTrack_,
+        js_createDataChannel, createDataChannel, createDataChannel_,
+        js_getStats, getStats, getStats_, js_getLocalStreams,
+        getLocalStreams, getLocalStreams_, js_getRemoteStreams,
+        getRemoteStreams, getRemoteStreams_, js_getStreamById,
+        getStreamById, getStreamById_, js_addStream, addStream,
+        js_removeStream, removeStream, js_getLocalDescription,
+        getLocalDescription, getLocalDescriptionUnsafe,
+        getLocalDescriptionUnchecked, js_getCurrentLocalDescription,
+        getCurrentLocalDescription, getCurrentLocalDescriptionUnsafe,
+        getCurrentLocalDescriptionUnchecked, js_getPendingLocalDescription,
+        getPendingLocalDescription, getPendingLocalDescriptionUnsafe,
+        getPendingLocalDescriptionUnchecked, js_getRemoteDescription,
+        getRemoteDescription, getRemoteDescriptionUnsafe,
+        getRemoteDescriptionUnchecked, js_getCurrentRemoteDescription,
+        getCurrentRemoteDescription, getCurrentRemoteDescriptionUnsafe,
+        getCurrentRemoteDescriptionUnchecked,
+        js_getPendingRemoteDescription, getPendingRemoteDescription,
+        getPendingRemoteDescriptionUnsafe,
+        getPendingRemoteDescriptionUnchecked, js_getSignalingState,
+        getSignalingState, js_getIceGatheringState, getIceGatheringState,
+        js_getIceConnectionState, getIceConnectionState,
+        js_getConnectionState, getConnectionState, negotiationNeeded,
+        iceCandidate, signalingStateChange, iceConnectionStateChange,
+        icegatheringstatechange, connectionstatechange, track, dataChannel,
+        addStreamEvent, RTCPeerConnection(..), gTypeRTCPeerConnection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"createOffer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createOffer ::
+        RTCPeerConnection ->
+          Optional RTCOfferOptions -> IO (JSVal, RTCSessionDescriptionInit)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
+createOffer ::
+            (MonadIO m) =>
+              RTCPeerConnection ->
+                Maybe RTCOfferOptions -> m RTCSessionDescriptionInit
+createOffer self offerOptions
+  = liftIO
+      ((js_createOffer self (maybeToOptional offerOptions)) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createOffer Mozilla webkitRTCPeerConnection.createOffer documentation> 
+createOffer_ ::
+             (MonadIO m) => RTCPeerConnection -> Maybe RTCOfferOptions -> m ()
+createOffer_ self offerOptions
+  = liftIO
+      (void (js_createOffer self (maybeToOptional offerOptions)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"createAnswer\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_createAnswer ::
+        RTCPeerConnection ->
+          Optional RTCAnswerOptions -> IO (JSVal, RTCSessionDescriptionInit)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
+createAnswer ::
+             (MonadIO m) =>
+               RTCPeerConnection ->
+                 Maybe RTCAnswerOptions -> m RTCSessionDescriptionInit
+createAnswer self answerOptions
+  = liftIO
+      ((js_createAnswer self (maybeToOptional answerOptions)) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createAnswer Mozilla webkitRTCPeerConnection.createAnswer documentation> 
+createAnswer_ ::
+              (MonadIO m) => RTCPeerConnection -> Maybe RTCAnswerOptions -> m ()
+createAnswer_ self answerOptions
+  = liftIO
+      (void (js_createAnswer self (maybeToOptional answerOptions)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"setLocalDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setLocalDescription ::
+        RTCPeerConnection -> RTCSessionDescriptionInit -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setLocalDescription Mozilla webkitRTCPeerConnection.setLocalDescription documentation> 
+setLocalDescription ::
+                    (MonadIO m) =>
+                      RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
+setLocalDescription self description
+  = liftIO
+      ((js_setLocalDescription self description) >>=
+         maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"setRemoteDescription\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_setRemoteDescription ::
+        RTCPeerConnection -> RTCSessionDescriptionInit -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setRemoteDescription Mozilla webkitRTCPeerConnection.setRemoteDescription documentation> 
+setRemoteDescription ::
+                     (MonadIO m) =>
+                       RTCPeerConnection -> RTCSessionDescriptionInit -> m ()
+setRemoteDescription self description
+  = liftIO
+      ((js_setRemoteDescription self description) >>=
+         maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"addIceCandidate\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_addIceCandidate ::
+        RTCPeerConnection -> RTCIceCandidateOrInit -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addIceCandidate Mozilla webkitRTCPeerConnection.addIceCandidate documentation> 
+addIceCandidate ::
+                (MonadIO m, IsRTCIceCandidateOrInit candidate) =>
+                  RTCPeerConnection -> candidate -> m ()
+addIceCandidate self candidate
+  = liftIO
+      ((toJSVal candidate >>=
+          \ candidate' ->
+            js_addIceCandidate self (RTCIceCandidateOrInit candidate'))
+         >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getConfiguration\"](); })"
+        js_getConfiguration :: RTCPeerConnection -> IO RTCConfiguration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+getConfiguration ::
+                 (MonadIO m) => RTCPeerConnection -> m RTCConfiguration
+getConfiguration self = liftIO (js_getConfiguration self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getConfiguration Mozilla webkitRTCPeerConnection.getConfiguration documentation> 
+getConfiguration_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getConfiguration_ self = liftIO (void (js_getConfiguration self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setConfiguration\"]($2); })"
+        js_setConfiguration ::
+        RTCPeerConnection -> RTCConfiguration -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.setConfiguration Mozilla webkitRTCPeerConnection.setConfiguration documentation> 
+setConfiguration ::
+                 (MonadIO m) => RTCPeerConnection -> RTCConfiguration -> m ()
+setConfiguration self configuration
+  = liftIO (js_setConfiguration self configuration)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        RTCPeerConnection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.close Mozilla webkitRTCPeerConnection.close documentation> 
+close :: (MonadIO m) => RTCPeerConnection -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSenders\"](); })"
+        js_getSenders :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
+getSenders :: (MonadIO m) => RTCPeerConnection -> m [RTCRtpSender]
+getSenders self
+  = liftIO ((js_getSenders self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getSenders Mozilla webkitRTCPeerConnection.getSenders documentation> 
+getSenders_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getSenders_ self = liftIO (void (js_getSenders self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getReceivers\"](); })"
+        js_getReceivers :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
+getReceivers ::
+             (MonadIO m) => RTCPeerConnection -> m [RTCRtpReceiver]
+getReceivers self
+  = liftIO ((js_getReceivers self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getReceivers Mozilla webkitRTCPeerConnection.getReceivers documentation> 
+getReceivers_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getReceivers_ self = liftIO (void (js_getReceivers self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getTransceivers\"](); })"
+        js_getTransceivers :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
+getTransceivers ::
+                (MonadIO m) => RTCPeerConnection -> m [RTCRtpTransceiver]
+getTransceivers self
+  = liftIO ((js_getTransceivers self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getTransceivers Mozilla webkitRTCPeerConnection.getTransceivers documentation> 
+getTransceivers_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getTransceivers_ self = liftIO (void (js_getTransceivers self))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTrack\"]($2, $3); })"
+        js_addTrack ::
+        RTCPeerConnection -> MediaStreamTrack -> JSVal -> IO RTCRtpSender
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
+addTrack ::
+         (MonadIO m, IsMediaStreamTrack track) =>
+           RTCPeerConnection -> track -> [MediaStream] -> m RTCRtpSender
+addTrack self track streams
+  = liftIO
+      (toJSVal streams >>=
+         \ streams' -> js_addTrack self (toMediaStreamTrack track) streams')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTrack Mozilla webkitRTCPeerConnection.addTrack documentation> 
+addTrack_ ::
+          (MonadIO m, IsMediaStreamTrack track) =>
+            RTCPeerConnection -> track -> [MediaStream] -> m ()
+addTrack_ self track streams
+  = liftIO
+      (void
+         (toJSVal streams >>=
+            \ streams' ->
+              js_addTrack self (toMediaStreamTrack track) streams'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeTrack\"]($2); })"
+        js_removeTrack :: RTCPeerConnection -> RTCRtpSender -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeTrack Mozilla webkitRTCPeerConnection.removeTrack documentation> 
+removeTrack ::
+            (MonadIO m) => RTCPeerConnection -> RTCRtpSender -> m ()
+removeTrack self sender = liftIO (js_removeTrack self sender)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"addTransceiver\"]($2, $3); })"
+        js_addTransceiverTrack ::
+        RTCPeerConnection ->
+          MediaStreamTrackOrKind ->
+            Optional RTCRtpTransceiverInit -> IO RTCRtpTransceiver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
+addTransceiverTrack ::
+                    (MonadIO m, IsMediaStreamTrackOrKind track) =>
+                      RTCPeerConnection ->
+                        track -> Maybe RTCRtpTransceiverInit -> m RTCRtpTransceiver
+addTransceiverTrack self track init
+  = liftIO
+      (toJSVal track >>=
+         \ track' ->
+           js_addTransceiverTrack self (MediaStreamTrackOrKind track')
+         (maybeToOptional init))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addTransceiver Mozilla webkitRTCPeerConnection.addTransceiver documentation> 
+addTransceiverTrack_ ::
+                     (MonadIO m, IsMediaStreamTrackOrKind track) =>
+                       RTCPeerConnection -> track -> Maybe RTCRtpTransceiverInit -> m ()
+addTransceiverTrack_ self track init
+  = liftIO
+      (void
+         (toJSVal track >>=
+            \ track' ->
+              js_addTransceiverTrack self (MediaStreamTrackOrKind track')
+            (maybeToOptional init)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createDataChannel\"]($2, $3); })"
+        js_createDataChannel ::
+        RTCPeerConnection ->
+          JSString -> Optional RTCDataChannelInit -> IO RTCDataChannel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
+createDataChannel ::
+                  (MonadIO m, ToJSString label) =>
+                    RTCPeerConnection ->
+                      label -> Maybe RTCDataChannelInit -> m RTCDataChannel
+createDataChannel self label options
+  = liftIO
+      (js_createDataChannel self (toJSString label)
+         (maybeToOptional options))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.createDataChannel Mozilla webkitRTCPeerConnection.createDataChannel documentation> 
+createDataChannel_ ::
+                   (MonadIO m, ToJSString label) =>
+                     RTCPeerConnection -> label -> Maybe RTCDataChannelInit -> m ()
+createDataChannel_ self label options
+  = liftIO
+      (void
+         (js_createDataChannel self (toJSString label)
+            (maybeToOptional options)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"getStats\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getStats ::
+        RTCPeerConnection ->
+          Optional MediaStreamTrack -> IO (JSVal, RTCStatsReport)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
+getStats ::
+         (MonadIO m, IsMediaStreamTrack selector) =>
+           RTCPeerConnection -> Maybe selector -> m RTCStatsReport
+getStats self selector
+  = liftIO
+      ((js_getStats self
+          (maybeToOptional (fmap toMediaStreamTrack selector)))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStats Mozilla webkitRTCPeerConnection.getStats documentation> 
+getStats_ ::
+          (MonadIO m, IsMediaStreamTrack selector) =>
+            RTCPeerConnection -> Maybe selector -> m ()
+getStats_ self selector
+  = liftIO
+      (void
+         (js_getStats self
+            (maybeToOptional (fmap toMediaStreamTrack selector))))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getLocalStreams\"](); })"
+        js_getLocalStreams :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
+getLocalStreams ::
+                (MonadIO m) => RTCPeerConnection -> m [MediaStream]
+getLocalStreams self
+  = liftIO ((js_getLocalStreams self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getLocalStreams Mozilla webkitRTCPeerConnection.getLocalStreams documentation> 
+getLocalStreams_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getLocalStreams_ self = liftIO (void (js_getLocalStreams self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getRemoteStreams\"](); })"
+        js_getRemoteStreams :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
+getRemoteStreams ::
+                 (MonadIO m) => RTCPeerConnection -> m [MediaStream]
+getRemoteStreams self
+  = liftIO ((js_getRemoteStreams self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getRemoteStreams Mozilla webkitRTCPeerConnection.getRemoteStreams documentation> 
+getRemoteStreams_ :: (MonadIO m) => RTCPeerConnection -> m ()
+getRemoteStreams_ self = liftIO (void (js_getRemoteStreams self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getStreamById\"]($2); })"
+        js_getStreamById :: RTCPeerConnection -> JSString -> IO MediaStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
+getStreamById ::
+              (MonadIO m, ToJSString streamId) =>
+                RTCPeerConnection -> streamId -> m MediaStream
+getStreamById self streamId
+  = liftIO (js_getStreamById self (toJSString streamId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.getStreamById Mozilla webkitRTCPeerConnection.getStreamById documentation> 
+getStreamById_ ::
+               (MonadIO m, ToJSString streamId) =>
+                 RTCPeerConnection -> streamId -> m ()
+getStreamById_ self streamId
+  = liftIO (void (js_getStreamById self (toJSString streamId)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addStream\"]($2); })"
+        js_addStream :: RTCPeerConnection -> MediaStream -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.addStream Mozilla webkitRTCPeerConnection.addStream documentation> 
+addStream ::
+          (MonadIO m) => RTCPeerConnection -> MediaStream -> m ()
+addStream self stream = liftIO (js_addStream self stream)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"removeStream\"]($2); })"
+        js_removeStream :: RTCPeerConnection -> MediaStream -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.removeStream Mozilla webkitRTCPeerConnection.removeStream documentation> 
+removeStream ::
+             (MonadIO m) => RTCPeerConnection -> MediaStream -> m ()
+removeStream self stream = liftIO (js_removeStream self stream)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"localDescription\"]; })"
+        js_getLocalDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
+getLocalDescription ::
+                    (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getLocalDescription self
+  = liftIO (nullableToMaybe <$> (js_getLocalDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
+getLocalDescriptionUnsafe ::
+                          (MonadIO m, HasCallStack) =>
+                            RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getLocalDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.localDescription Mozilla webkitRTCPeerConnection.localDescription documentation> 
+getLocalDescriptionUnchecked ::
+                             (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getLocalDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getLocalDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentLocalDescription\"]; })"
+        js_getCurrentLocalDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
+getCurrentLocalDescription ::
+                           (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentLocalDescription self
+  = liftIO (nullableToMaybe <$> (js_getCurrentLocalDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
+getCurrentLocalDescriptionUnsafe ::
+                                 (MonadIO m, HasCallStack) =>
+                                   RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCurrentLocalDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentLocalDescription Mozilla webkitRTCPeerConnection.currentLocalDescription documentation> 
+getCurrentLocalDescriptionUnchecked ::
+                                    (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentLocalDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getCurrentLocalDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pendingLocalDescription\"]; })"
+        js_getPendingLocalDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
+getPendingLocalDescription ::
+                           (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingLocalDescription self
+  = liftIO (nullableToMaybe <$> (js_getPendingLocalDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
+getPendingLocalDescriptionUnsafe ::
+                                 (MonadIO m, HasCallStack) =>
+                                   RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getPendingLocalDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingLocalDescription Mozilla webkitRTCPeerConnection.pendingLocalDescription documentation> 
+getPendingLocalDescriptionUnchecked ::
+                                    (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingLocalDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPendingLocalDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"remoteDescription\"]; })"
+        js_getRemoteDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
+getRemoteDescription ::
+                     (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getRemoteDescription self
+  = liftIO (nullableToMaybe <$> (js_getRemoteDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
+getRemoteDescriptionUnsafe ::
+                           (MonadIO m, HasCallStack) =>
+                             RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getRemoteDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.remoteDescription Mozilla webkitRTCPeerConnection.remoteDescription documentation> 
+getRemoteDescriptionUnchecked ::
+                              (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getRemoteDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getRemoteDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentRemoteDescription\"]; })"
+        js_getCurrentRemoteDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
+getCurrentRemoteDescription ::
+                            (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getCurrentRemoteDescription self
+  = liftIO
+      (nullableToMaybe <$> (js_getCurrentRemoteDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
+getCurrentRemoteDescriptionUnsafe ::
+                                  (MonadIO m, HasCallStack) =>
+                                    RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCurrentRemoteDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.currentRemoteDescription Mozilla webkitRTCPeerConnection.currentRemoteDescription documentation> 
+getCurrentRemoteDescriptionUnchecked ::
+                                     (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getCurrentRemoteDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getCurrentRemoteDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pendingRemoteDescription\"]; })"
+        js_getPendingRemoteDescription ::
+        RTCPeerConnection -> IO (Nullable RTCSessionDescription)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
+getPendingRemoteDescription ::
+                            (MonadIO m) => RTCPeerConnection -> m (Maybe RTCSessionDescription)
+getPendingRemoteDescription self
+  = liftIO
+      (nullableToMaybe <$> (js_getPendingRemoteDescription self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
+getPendingRemoteDescriptionUnsafe ::
+                                  (MonadIO m, HasCallStack) =>
+                                    RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getPendingRemoteDescription self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.pendingRemoteDescription Mozilla webkitRTCPeerConnection.pendingRemoteDescription documentation> 
+getPendingRemoteDescriptionUnchecked ::
+                                     (MonadIO m) => RTCPeerConnection -> m RTCSessionDescription
+getPendingRemoteDescriptionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getPendingRemoteDescription self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"signalingState\"]; })"
+        js_getSignalingState :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.signalingState Mozilla webkitRTCPeerConnection.signalingState documentation> 
+getSignalingState ::
+                  (MonadIO m) => RTCPeerConnection -> m RTCSignalingState
+getSignalingState self
+  = liftIO ((js_getSignalingState self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"iceGatheringState\"]; })"
+        js_getIceGatheringState :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceGatheringState Mozilla webkitRTCPeerConnection.iceGatheringState documentation> 
+getIceGatheringState ::
+                     (MonadIO m) => RTCPeerConnection -> m RTCIceGatheringState
+getIceGatheringState self
+  = liftIO ((js_getIceGatheringState self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"iceConnectionState\"]; })"
+        js_getIceConnectionState :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.iceConnectionState Mozilla webkitRTCPeerConnection.iceConnectionState documentation> 
+getIceConnectionState ::
+                      (MonadIO m) => RTCPeerConnection -> m RTCIceConnectionState
+getIceConnectionState self
+  = liftIO ((js_getIceConnectionState self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"connectionState\"]; })"
+        js_getConnectionState :: RTCPeerConnection -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.connectionState Mozilla webkitRTCPeerConnection.connectionState documentation> 
+getConnectionState ::
+                   (MonadIO m) => RTCPeerConnection -> m RTCPeerConnectionState
+getConnectionState self
+  = liftIO ((js_getConnectionState self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onnegotiationneeded Mozilla webkitRTCPeerConnection.onnegotiationneeded documentation> 
+negotiationNeeded :: EventName RTCPeerConnection Event
+negotiationNeeded
+  = unsafeEventName (toJSString "negotiationneeded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onicecandidate Mozilla webkitRTCPeerConnection.onicecandidate documentation> 
+iceCandidate :: EventName RTCPeerConnection RTCIceCandidateEvent
+iceCandidate = unsafeEventName (toJSString "icecandidate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onsignalingstatechange Mozilla webkitRTCPeerConnection.onsignalingstatechange documentation> 
+signalingStateChange :: EventName RTCPeerConnection Event
+signalingStateChange
+  = unsafeEventName (toJSString "signalingstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.oniceconnectionstatechange Mozilla webkitRTCPeerConnection.oniceconnectionstatechange documentation> 
+iceConnectionStateChange :: EventName RTCPeerConnection Event
+iceConnectionStateChange
+  = unsafeEventName (toJSString "iceconnectionstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onicegatheringstatechange Mozilla webkitRTCPeerConnection.onicegatheringstatechange documentation> 
+icegatheringstatechange ::
+                          EventName RTCPeerConnection onicegatheringstatechange
+icegatheringstatechange
+  = unsafeEventName (toJSString "icegatheringstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onconnectionstatechange Mozilla webkitRTCPeerConnection.onconnectionstatechange documentation> 
+connectionstatechange ::
+                        EventName RTCPeerConnection onconnectionstatechange
+connectionstatechange
+  = unsafeEventName (toJSString "connectionstatechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.ontrack Mozilla webkitRTCPeerConnection.ontrack documentation> 
+track :: EventName RTCPeerConnection ontrack
+track = unsafeEventName (toJSString "track")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.ondatachannel Mozilla webkitRTCPeerConnection.ondatachannel documentation> 
+dataChannel :: EventName RTCPeerConnection Event
+dataChannel = unsafeEventName (toJSString "datachannel")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection.onaddstream Mozilla webkitRTCPeerConnection.onaddstream documentation> 
+addStreamEvent :: EventName RTCPeerConnection Event
+addStreamEvent = unsafeEventName (toJSString "addstream")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCPeerConnectionIceEvent.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCPeerConnectionIceEvent
+       (js_getCandidate, getCandidate, getCandidateUnsafe,
+        getCandidateUnchecked, RTCPeerConnectionIceEvent(..),
+        gTypeRTCPeerConnectionIceEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"candidate\"]; })"
+        js_getCandidate ::
+        RTCPeerConnectionIceEvent -> IO (Nullable RTCIceCandidate)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
+getCandidate ::
+             (MonadIO m) =>
+               RTCPeerConnectionIceEvent -> m (Maybe RTCIceCandidate)
+getCandidate self
+  = liftIO (nullableToMaybe <$> (js_getCandidate self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
+getCandidateUnsafe ::
+                   (MonadIO m, HasCallStack) =>
+                     RTCPeerConnectionIceEvent -> m RTCIceCandidate
+getCandidateUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCandidate self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent.candidate Mozilla RTCPeerConnectionIceEvent.candidate documentation> 
+getCandidateUnchecked ::
+                      (MonadIO m) => RTCPeerConnectionIceEvent -> m RTCIceCandidate
+getCandidateUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getCandidate self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpReceiver.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCRtpReceiver
+       (js_getParameters, getParameters, getParameters_, js_getTrack,
+        getTrack, RTCRtpReceiver(..), gTypeRTCRtpReceiver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getParameters\"](); })"
+        js_getParameters :: RTCRtpReceiver -> IO RTCRtpParameters
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
+getParameters ::
+              (MonadIO m) => RTCRtpReceiver -> m RTCRtpParameters
+getParameters self = liftIO (js_getParameters self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.getParameters Mozilla RTCRtpReceiver.getParameters documentation> 
+getParameters_ :: (MonadIO m) => RTCRtpReceiver -> m ()
+getParameters_ self = liftIO (void (js_getParameters self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        RTCRtpReceiver -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver.track Mozilla RTCRtpReceiver.track documentation> 
+getTrack :: (MonadIO m) => RTCRtpReceiver -> m MediaStreamTrack
+getTrack self = liftIO (js_getTrack self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpSender.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCRtpSender
+       (js_getParameters, getParameters, getParameters_, js_replaceTrack,
+        replaceTrack, js_getTrack, getTrack, getTrackUnsafe,
+        getTrackUnchecked, RTCRtpSender(..), gTypeRTCRtpSender)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getParameters\"](); })"
+        js_getParameters :: RTCRtpSender -> IO RTCRtpParameters
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
+getParameters :: (MonadIO m) => RTCRtpSender -> m RTCRtpParameters
+getParameters self = liftIO (js_getParameters self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.getParameters Mozilla RTCRtpSender.getParameters documentation> 
+getParameters_ :: (MonadIO m) => RTCRtpSender -> m ()
+getParameters_ self = liftIO (void (js_getParameters self))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"replaceTrack\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_replaceTrack ::
+        RTCRtpSender -> Optional MediaStreamTrack -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.replaceTrack Mozilla RTCRtpSender.replaceTrack documentation> 
+replaceTrack ::
+             (MonadIO m, IsMediaStreamTrack withTrack) =>
+               RTCRtpSender -> Maybe withTrack -> m ()
+replaceTrack self withTrack
+  = liftIO
+      ((js_replaceTrack self
+          (maybeToOptional (fmap toMediaStreamTrack withTrack)))
+         >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        RTCRtpSender -> IO (Nullable MediaStreamTrack)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
+getTrack ::
+         (MonadIO m) => RTCRtpSender -> m (Maybe MediaStreamTrack)
+getTrack self = liftIO (nullableToMaybe <$> (js_getTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
+getTrackUnsafe ::
+               (MonadIO m, HasCallStack) => RTCRtpSender -> m MediaStreamTrack
+getTrackUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTrack self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender.track Mozilla RTCRtpSender.track documentation> 
+getTrackUnchecked ::
+                  (MonadIO m) => RTCRtpSender -> m MediaStreamTrack
+getTrackUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTrack self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCRtpTransceiver.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCRtpTransceiver
+       (js_setDirection, setDirection, js_stop, stop, js_getMid, getMid,
+        getMidUnsafe, getMidUnchecked, js_getSender, getSender,
+        js_getReceiver, getReceiver, js_getStopped, getStopped,
+        js_getDirection, getDirection, RTCRtpTransceiver(..),
+        gTypeRTCRtpTransceiver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setDirection\"]($2); })"
+        js_setDirection :: RTCRtpTransceiver -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.setDirection Mozilla RTCRtpTransceiver.setDirection documentation> 
+setDirection ::
+             (MonadIO m) =>
+               RTCRtpTransceiver -> RTCRtpTransceiverDirection -> m ()
+setDirection self direction
+  = liftIO (js_setDirection self (pToJSVal direction))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
+        RTCRtpTransceiver -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stop Mozilla RTCRtpTransceiver.stop documentation> 
+stop :: (MonadIO m) => RTCRtpTransceiver -> m ()
+stop self = liftIO (js_stop self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mid\"]; })" js_getMid ::
+        RTCRtpTransceiver -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
+getMid ::
+       (MonadIO m, FromJSString result) =>
+         RTCRtpTransceiver -> m (Maybe result)
+getMid self = liftIO (fromMaybeJSString <$> (js_getMid self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
+getMidUnsafe ::
+             (MonadIO m, HasCallStack, FromJSString result) =>
+               RTCRtpTransceiver -> m result
+getMidUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getMid self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.mid Mozilla RTCRtpTransceiver.mid documentation> 
+getMidUnchecked ::
+                (MonadIO m, FromJSString result) => RTCRtpTransceiver -> m result
+getMidUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getMid self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sender\"]; })" js_getSender ::
+        RTCRtpTransceiver -> IO RTCRtpSender
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.sender Mozilla RTCRtpTransceiver.sender documentation> 
+getSender :: (MonadIO m) => RTCRtpTransceiver -> m RTCRtpSender
+getSender self = liftIO (js_getSender self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })" js_getReceiver
+        :: RTCRtpTransceiver -> IO RTCRtpReceiver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.receiver Mozilla RTCRtpTransceiver.receiver documentation> 
+getReceiver :: (MonadIO m) => RTCRtpTransceiver -> m RTCRtpReceiver
+getReceiver self = liftIO (js_getReceiver self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"stopped\"] ? 1 : 0); })"
+        js_getStopped :: RTCRtpTransceiver -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.stopped Mozilla RTCRtpTransceiver.stopped documentation> 
+getStopped :: (MonadIO m) => RTCRtpTransceiver -> m Bool
+getStopped self = liftIO (js_getStopped self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"direction\"]; })"
+        js_getDirection :: RTCRtpTransceiver -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver.direction Mozilla RTCRtpTransceiver.direction documentation> 
+getDirection ::
+             (MonadIO m) => RTCRtpTransceiver -> m RTCRtpTransceiverDirection
+getDirection self
+  = liftIO ((js_getDirection self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCSessionDescription.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCSessionDescription
+       (js_newRTCSessionDescription, newRTCSessionDescription, js_getType,
+        getType, js_getSdp, getSdp, RTCSessionDescription(..),
+        gTypeRTCSessionDescription)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"RTCSessionDescription\"]($1); })"
+        js_newRTCSessionDescription ::
+        RTCSessionDescriptionInit -> IO RTCSessionDescription
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation> 
+newRTCSessionDescription ::
+                         (MonadIO m) => RTCSessionDescriptionInit -> m RTCSessionDescription
+newRTCSessionDescription descriptionInitDict
+  = liftIO (js_newRTCSessionDescription descriptionInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        RTCSessionDescription -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.type Mozilla RTCSessionDescription.type documentation> 
+getType :: (MonadIO m) => RTCSessionDescription -> m RTCSdpType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sdp\"]; })" js_getSdp ::
+        RTCSessionDescription -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription.sdp Mozilla RTCSessionDescription.sdp documentation> 
+getSdp ::
+       (MonadIO m, FromJSString result) =>
+         RTCSessionDescription -> m result
+getSdp self = liftIO (fromJSString <$> (js_getSdp self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RTCTrackEvent.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RTCTrackEvent
+       (js_newRTCTrackEvent, newRTCTrackEvent, js_getReceiver,
+        getReceiver, js_getTrack, getTrack, js_getStreams, getStreams,
+        js_getTransceiver, getTransceiver, RTCTrackEvent(..),
+        gTypeRTCTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"RTCTrackEvent\"]($1,\n$2); })" js_newRTCTrackEvent ::
+        JSString -> RTCTrackEventInit -> IO RTCTrackEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent Mozilla RTCTrackEvent documentation> 
+newRTCTrackEvent ::
+                 (MonadIO m, ToJSString type') =>
+                   type' -> RTCTrackEventInit -> m RTCTrackEvent
+newRTCTrackEvent type' eventInitDict
+  = liftIO (js_newRTCTrackEvent (toJSString type') eventInitDict)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"receiver\"]; })" js_getReceiver
+        :: RTCTrackEvent -> IO RTCRtpReceiver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.receiver Mozilla RTCTrackEvent.receiver documentation> 
+getReceiver :: (MonadIO m) => RTCTrackEvent -> m RTCRtpReceiver
+getReceiver self = liftIO (js_getReceiver self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        RTCTrackEvent -> IO MediaStreamTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.track Mozilla RTCTrackEvent.track documentation> 
+getTrack :: (MonadIO m) => RTCTrackEvent -> m MediaStreamTrack
+getTrack self = liftIO (js_getTrack self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"streams\"]; })" js_getStreams ::
+        RTCTrackEvent -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.streams Mozilla RTCTrackEvent.streams documentation> 
+getStreams :: (MonadIO m) => RTCTrackEvent -> m [MediaStream]
+getStreams self
+  = liftIO ((js_getStreams self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transceiver\"]; })"
+        js_getTransceiver :: RTCTrackEvent -> IO RTCRtpTransceiver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent.transceiver Mozilla RTCTrackEvent.transceiver documentation> 
+getTransceiver ::
+               (MonadIO m) => RTCTrackEvent -> m RTCRtpTransceiver
+getTransceiver self = liftIO (js_getTransceiver self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RadioNodeList.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RadioNodeList
+       (js_get, get, get_, js_setValue, setValue, js_getValue, getValue,
+        RadioNodeList(..), gTypeRadioNodeList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        RadioNodeList -> Word -> IO HTMLElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
+get :: (MonadIO m) => RadioNodeList -> Word -> m HTMLElement
+get self index = liftIO (js_get self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.get Mozilla RadioNodeList.get documentation> 
+get_ :: (MonadIO m) => RadioNodeList -> Word -> m ()
+get_ self index = liftIO (void (js_get self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue
+        :: RadioNodeList -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
+setValue ::
+         (MonadIO m, ToJSString val) => RadioNodeList -> val -> m ()
+setValue self val = liftIO (js_setValue self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        RadioNodeList -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList.value Mozilla RadioNodeList.value documentation> 
+getValue ::
+         (MonadIO m, FromJSString result) => RadioNodeList -> m result
+getValue self = liftIO (fromJSString <$> (js_getValue self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Range.hs b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Range.hs
@@ -0,0 +1,381 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Range
+       (js_newRange, newRange, js_setStart, setStart, js_setEnd, setEnd,
+        js_setStartBefore, setStartBefore, js_setStartAfter, setStartAfter,
+        js_setEndBefore, setEndBefore, js_setEndAfter, setEndAfter,
+        js_collapse, collapse, js_selectNode, selectNode,
+        js_selectNodeContents, selectNodeContents,
+        js_compareBoundaryPoints, compareBoundaryPoints,
+        compareBoundaryPoints_, js_deleteContents, deleteContents,
+        js_extractContents, extractContents, extractContents_,
+        js_cloneContents, cloneContents, cloneContents_, js_insertNode,
+        insertNode, js_surroundContents, surroundContents, js_cloneRange,
+        cloneRange, cloneRange_, js_detach, detach, js_isPointInRange,
+        isPointInRange, isPointInRange_, js_comparePoint, comparePoint,
+        comparePoint_, js_intersectsNode, intersectsNode, intersectsNode_,
+        js_toString, toString, toString_, js_getClientRects,
+        getClientRects, getClientRects_, js_getBoundingClientRect,
+        getBoundingClientRect, getBoundingClientRect_,
+        js_createContextualFragment, createContextualFragment,
+        createContextualFragment_, js_expand, expand, js_compareNode,
+        compareNode, compareNode_, pattern START_TO_START,
+        pattern START_TO_END, pattern END_TO_END, pattern END_TO_START,
+        pattern NODE_BEFORE, pattern NODE_AFTER,
+        pattern NODE_BEFORE_AND_AFTER, pattern NODE_INSIDE,
+        js_getStartContainer, getStartContainer, js_getStartOffset,
+        getStartOffset, js_getEndContainer, getEndContainer,
+        js_getEndOffset, getEndOffset, js_getCollapsed, getCollapsed,
+        js_getCommonAncestorContainer, getCommonAncestorContainer,
+        Range(..), gTypeRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"Range\"](); })"
+        js_newRange :: IO Range
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation> 
+newRange :: (MonadIO m) => m Range
+newRange = liftIO (js_newRange)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setStart\"]($2, $3); })"
+        js_setStart :: Range -> Node -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStart Mozilla Range.setStart documentation> 
+setStart ::
+         (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
+setStart self node offset
+  = liftIO (js_setStart self (toNode node) offset)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setEnd\"]($2, $3); })" js_setEnd
+        :: Range -> Node -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEnd Mozilla Range.setEnd documentation> 
+setEnd :: (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
+setEnd self node offset
+  = liftIO (js_setEnd self (toNode node) offset)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setStartBefore\"]($2); })"
+        js_setStartBefore :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartBefore Mozilla Range.setStartBefore documentation> 
+setStartBefore :: (MonadIO m, IsNode node) => Range -> node -> m ()
+setStartBefore self node
+  = liftIO (js_setStartBefore self (toNode node))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setStartAfter\"]($2); })"
+        js_setStartAfter :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setStartAfter Mozilla Range.setStartAfter documentation> 
+setStartAfter :: (MonadIO m, IsNode node) => Range -> node -> m ()
+setStartAfter self node
+  = liftIO (js_setStartAfter self (toNode node))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setEndBefore\"]($2); })"
+        js_setEndBefore :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndBefore Mozilla Range.setEndBefore documentation> 
+setEndBefore :: (MonadIO m, IsNode node) => Range -> node -> m ()
+setEndBefore self node
+  = liftIO (js_setEndBefore self (toNode node))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setEndAfter\"]($2); })"
+        js_setEndAfter :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.setEndAfter Mozilla Range.setEndAfter documentation> 
+setEndAfter :: (MonadIO m, IsNode node) => Range -> node -> m ()
+setEndAfter self node = liftIO (js_setEndAfter self (toNode node))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"collapse\"]($2); })" js_collapse
+        :: Range -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapse Mozilla Range.collapse documentation> 
+collapse :: (MonadIO m) => Range -> Bool -> m ()
+collapse self toStart = liftIO (js_collapse self toStart)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"selectNode\"]($2); })"
+        js_selectNode :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNode Mozilla Range.selectNode documentation> 
+selectNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
+selectNode self node = liftIO (js_selectNode self (toNode node))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"selectNodeContents\"]($2); })"
+        js_selectNodeContents :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.selectNodeContents Mozilla Range.selectNodeContents documentation> 
+selectNodeContents ::
+                   (MonadIO m, IsNode node) => Range -> node -> m ()
+selectNodeContents self node
+  = liftIO (js_selectNodeContents self (toNode node))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"compareBoundaryPoints\"]($2,\n$3); })" js_compareBoundaryPoints
+        :: Range -> Word -> Range -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
+compareBoundaryPoints ::
+                      (MonadIO m) => Range -> Word -> Range -> m Int
+compareBoundaryPoints self how sourceRange
+  = liftIO (js_compareBoundaryPoints self how sourceRange)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareBoundaryPoints Mozilla Range.compareBoundaryPoints documentation> 
+compareBoundaryPoints_ ::
+                       (MonadIO m) => Range -> Word -> Range -> m ()
+compareBoundaryPoints_ self how sourceRange
+  = liftIO (void (js_compareBoundaryPoints self how sourceRange))
+ 
+foreign import javascript safe "(($1) => { return $1[\"deleteContents\"](); })"
+        js_deleteContents :: Range -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.deleteContents Mozilla Range.deleteContents documentation> 
+deleteContents :: (MonadIO m) => Range -> m ()
+deleteContents self = liftIO (js_deleteContents self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"extractContents\"](); })"
+        js_extractContents :: Range -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+extractContents :: (MonadIO m) => Range -> m DocumentFragment
+extractContents self = liftIO (js_extractContents self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.extractContents Mozilla Range.extractContents documentation> 
+extractContents_ :: (MonadIO m) => Range -> m ()
+extractContents_ self = liftIO (void (js_extractContents self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"cloneContents\"](); })"
+        js_cloneContents :: Range -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
+cloneContents :: (MonadIO m) => Range -> m DocumentFragment
+cloneContents self = liftIO (js_cloneContents self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneContents Mozilla Range.cloneContents documentation> 
+cloneContents_ :: (MonadIO m) => Range -> m ()
+cloneContents_ self = liftIO (void (js_cloneContents self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"insertNode\"]($2); })"
+        js_insertNode :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.insertNode Mozilla Range.insertNode documentation> 
+insertNode :: (MonadIO m, IsNode node) => Range -> node -> m ()
+insertNode self node = liftIO (js_insertNode self (toNode node))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"surroundContents\"]($2); })"
+        js_surroundContents :: Range -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.surroundContents Mozilla Range.surroundContents documentation> 
+surroundContents ::
+                 (MonadIO m, IsNode newParent) => Range -> newParent -> m ()
+surroundContents self newParent
+  = liftIO (js_surroundContents self (toNode newParent))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cloneRange\"](); })"
+        js_cloneRange :: Range -> IO Range
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
+cloneRange :: (MonadIO m) => Range -> m Range
+cloneRange self = liftIO (js_cloneRange self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.cloneRange Mozilla Range.cloneRange documentation> 
+cloneRange_ :: (MonadIO m) => Range -> m ()
+cloneRange_ self = liftIO (void (js_cloneRange self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detach\"](); })" js_detach ::
+        Range -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.detach Mozilla Range.detach documentation> 
+detach :: (MonadIO m) => Range -> m ()
+detach self = liftIO (js_detach self)
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return ($1[\"isPointInRange\"]($2,\n$3) ? 1 : 0); })" js_isPointInRange ::
+        Range -> Node -> Word -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
+isPointInRange ::
+               (MonadIO m, IsNode node) => Range -> node -> Word -> m Bool
+isPointInRange self node offset
+  = liftIO (js_isPointInRange self (toNode node) offset)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.isPointInRange Mozilla Range.isPointInRange documentation> 
+isPointInRange_ ::
+                (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
+isPointInRange_ self node offset
+  = liftIO (void (js_isPointInRange self (toNode node) offset))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"comparePoint\"]($2, $3); })"
+        js_comparePoint :: Range -> Node -> Word -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
+comparePoint ::
+             (MonadIO m, IsNode node) => Range -> node -> Word -> m Int
+comparePoint self node offset
+  = liftIO (js_comparePoint self (toNode node) offset)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.comparePoint Mozilla Range.comparePoint documentation> 
+comparePoint_ ::
+              (MonadIO m, IsNode node) => Range -> node -> Word -> m ()
+comparePoint_ self node offset
+  = liftIO (void (js_comparePoint self (toNode node) offset))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return ($1[\"intersectsNode\"]($2) ? 1 : 0); })" js_intersectsNode ::
+        Range -> Node -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
+intersectsNode ::
+               (MonadIO m, IsNode node) => Range -> node -> m Bool
+intersectsNode self node
+  = liftIO (js_intersectsNode self (toNode node))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.intersectsNode Mozilla Range.intersectsNode documentation> 
+intersectsNode_ ::
+                (MonadIO m, IsNode node) => Range -> node -> m ()
+intersectsNode_ self node
+  = liftIO (void (js_intersectsNode self (toNode node)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: Range -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
+toString :: (MonadIO m, FromJSString result) => Range -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.toString Mozilla Range.toString documentation> 
+toString_ :: (MonadIO m) => Range -> m ()
+toString_ self = liftIO (void (js_toString self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getClientRects\"](); })"
+        js_getClientRects :: Range -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
+getClientRects :: (MonadIO m) => Range -> m [DOMRect]
+getClientRects self
+  = liftIO ((js_getClientRects self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getClientRects Mozilla Range.getClientRects documentation> 
+getClientRects_ :: (MonadIO m) => Range -> m ()
+getClientRects_ self = liftIO (void (js_getClientRects self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getBoundingClientRect\"](); })"
+        js_getBoundingClientRect :: Range -> IO DOMRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
+getBoundingClientRect :: (MonadIO m) => Range -> m DOMRect
+getBoundingClientRect self = liftIO (js_getBoundingClientRect self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.getBoundingClientRect Mozilla Range.getBoundingClientRect documentation> 
+getBoundingClientRect_ :: (MonadIO m) => Range -> m ()
+getBoundingClientRect_ self
+  = liftIO (void (js_getBoundingClientRect self))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"createContextualFragment\"]($2); })" js_createContextualFragment
+        :: Range -> JSString -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
+createContextualFragment ::
+                         (MonadIO m, ToJSString fragment) =>
+                           Range -> fragment -> m DocumentFragment
+createContextualFragment self fragment
+  = liftIO (js_createContextualFragment self (toJSString fragment))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.createContextualFragment Mozilla Range.createContextualFragment documentation> 
+createContextualFragment_ ::
+                          (MonadIO m, ToJSString fragment) => Range -> fragment -> m ()
+createContextualFragment_ self fragment
+  = liftIO
+      (void (js_createContextualFragment self (toJSString fragment)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"expand\"]($2); })" js_expand ::
+        Range -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.expand Mozilla Range.expand documentation> 
+expand ::
+       (MonadIO m, ToJSString unit) => Range -> Maybe unit -> m ()
+expand self unit
+  = liftIO (js_expand self (toOptionalJSString unit))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"compareNode\"]($2); })"
+        js_compareNode :: Range -> Node -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
+compareNode :: (MonadIO m, IsNode node) => Range -> node -> m Int
+compareNode self node = liftIO (js_compareNode self (toNode node))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.compareNode Mozilla Range.compareNode documentation> 
+compareNode_ :: (MonadIO m, IsNode node) => Range -> node -> m ()
+compareNode_ self node
+  = liftIO (void (js_compareNode self (toNode node)))
+pattern START_TO_START = 0
+pattern START_TO_END = 1
+pattern END_TO_END = 2
+pattern END_TO_START = 3
+pattern NODE_BEFORE = 0
+pattern NODE_AFTER = 1
+pattern NODE_BEFORE_AND_AFTER = 2
+pattern NODE_INSIDE = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
+        js_getStartContainer :: Range -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startContainer Mozilla Range.startContainer documentation> 
+getStartContainer :: (MonadIO m) => Range -> m Node
+getStartContainer self = liftIO (js_getStartContainer self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: Range -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.startOffset Mozilla Range.startOffset documentation> 
+getStartOffset :: (MonadIO m) => Range -> m Int
+getStartOffset self = liftIO (js_getStartOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
+        js_getEndContainer :: Range -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endContainer Mozilla Range.endContainer documentation> 
+getEndContainer :: (MonadIO m) => Range -> m Node
+getEndContainer self = liftIO (js_getEndContainer self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
+        js_getEndOffset :: Range -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.endOffset Mozilla Range.endOffset documentation> 
+getEndOffset :: (MonadIO m) => Range -> m Int
+getEndOffset self = liftIO (js_getEndOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"collapsed\"] ? 1 : 0); })"
+        js_getCollapsed :: Range -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.collapsed Mozilla Range.collapsed documentation> 
+getCollapsed :: (MonadIO m) => Range -> m Bool
+getCollapsed self = liftIO (js_getCollapsed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"commonAncestorContainer\"]; })"
+        js_getCommonAncestorContainer :: Range -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Range.commonAncestorContainer Mozilla Range.commonAncestorContainer documentation> 
+getCommonAncestorContainer :: (MonadIO m) => Range -> m Node
+getCommonAncestorContainer self
+  = liftIO (js_getCommonAncestorContainer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableByteStreamController.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableByteStreamController
+       (js_newReadableByteStreamController,
+        newReadableByteStreamController, js_enqueue, enqueue, js_close,
+        close, js_error, error, js_getByobRequest, getByobRequest,
+        js_getDesiredSize, getDesiredSize,
+        ReadableByteStreamController(..),
+        gTypeReadableByteStreamController)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return new window[\"ReadableByteStreamController\"]($1,\n$2, $3); })"
+        js_newReadableByteStreamController ::
+        ReadableStream -> JSVal -> Word -> IO ReadableByteStreamController
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController Mozilla ReadableByteStreamController documentation> 
+newReadableByteStreamController ::
+                                (MonadIO m, ToJSVal underlyingByteSource) =>
+                                  ReadableStream ->
+                                    underlyingByteSource -> Word -> m ReadableByteStreamController
+newReadableByteStreamController stream underlyingByteSource
+  highWaterMark
+  = liftIO
+      (toJSVal underlyingByteSource >>=
+         \ underlyingByteSource' ->
+           js_newReadableByteStreamController stream underlyingByteSource'
+         highWaterMark)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"enqueue\"]($2); })" js_enqueue
+        :: ReadableByteStreamController -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.enqueue Mozilla ReadableByteStreamController.enqueue documentation> 
+enqueue ::
+        (MonadIO m, ToJSVal chunk) =>
+          ReadableByteStreamController -> Maybe chunk -> m ()
+enqueue self chunk
+  = liftIO
+      (mapM toJSVal chunk >>=
+         \ chunk' -> js_enqueue self (maybeToOptional chunk'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        ReadableByteStreamController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.close Mozilla ReadableByteStreamController.close documentation> 
+close :: (MonadIO m) => ReadableByteStreamController -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"error\"]($2); })" js_error ::
+        ReadableByteStreamController -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.error Mozilla ReadableByteStreamController.error documentation> 
+error ::
+      (MonadIO m, ToJSVal error) =>
+        ReadableByteStreamController -> Maybe error -> m ()
+error self error
+  = liftIO
+      (mapM toJSVal error >>=
+         \ error' -> js_error self (maybeToOptional error'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"byobRequest\"]; })"
+        js_getByobRequest ::
+        ReadableByteStreamController -> IO ReadableStreamBYOBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.byobRequest Mozilla ReadableByteStreamController.byobRequest documentation> 
+getByobRequest ::
+               (MonadIO m) =>
+                 ReadableByteStreamController -> m ReadableStreamBYOBRequest
+getByobRequest self = liftIO (js_getByobRequest self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
+        js_getDesiredSize :: ReadableByteStreamController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController.desiredSize Mozilla ReadableByteStreamController.desiredSize documentation> 
+getDesiredSize ::
+               (MonadIO m) => ReadableByteStreamController -> m Double
+getDesiredSize self = liftIO (js_getDesiredSize self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStream.hs
@@ -0,0 +1,164 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStream
+       (js_newReadableStream, newReadableStream, js_cancel, cancel,
+        cancel_, js_getReader, getReader, getReader_, js_pipeTo, pipeTo,
+        pipeTo_, js_pipeThrough, pipeThrough, pipeThrough_, js_tee, tee,
+        tee_, js_getLocked, getLocked, ReadableStream(..),
+        gTypeReadableStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"ReadableStream\"]($1,\n$2); })" js_newReadableStream ::
+        Optional JSVal -> Optional JSVal -> IO ReadableStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation> 
+newReadableStream ::
+                  (MonadIO m, ToJSVal underlyingSource, ToJSVal options) =>
+                    Maybe underlyingSource -> Maybe options -> m ReadableStream
+newReadableStream underlyingSource options
+  = liftIO
+      (mapM toJSVal options >>=
+         \ options' ->
+           mapM toJSVal underlyingSource >>=
+             \ underlyingSource' ->
+               js_newReadableStream (maybeToOptional underlyingSource')
+             (maybeToOptional options'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancel :: ReadableStream -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
+cancel ::
+       (MonadIO m, ToJSVal reason) =>
+         ReadableStream -> Maybe reason -> m JSVal
+cancel self reason
+  = liftIO
+      ((mapM toJSVal reason >>=
+          \ reason' -> js_cancel self (maybeToOptional reason'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.cancel Mozilla ReadableStream.cancel documentation> 
+cancel_ ::
+        (MonadIO m, ToJSVal reason) =>
+          ReadableStream -> Maybe reason -> m ()
+cancel_ self reason
+  = liftIO
+      (void
+         (mapM toJSVal reason >>=
+            \ reason' -> js_cancel self (maybeToOptional reason')))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getReader\"]($2); })"
+        js_getReader :: ReadableStream -> Optional JSVal -> IO GObject
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
+getReader ::
+          (MonadIO m, ToJSVal options) =>
+            ReadableStream -> Maybe options -> m GObject
+getReader self options
+  = liftIO
+      (mapM toJSVal options >>=
+         \ options' -> js_getReader self (maybeToOptional options'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.getReader Mozilla ReadableStream.getReader documentation> 
+getReader_ ::
+           (MonadIO m, ToJSVal options) =>
+             ReadableStream -> Maybe options -> m ()
+getReader_ self options
+  = liftIO
+      (void
+         (mapM toJSVal options >>=
+            \ options' -> js_getReader self (maybeToOptional options')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"pipeTo\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_pipeTo ::
+        ReadableStream -> JSVal -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeTo ::
+       (MonadIO m, ToJSVal streams, ToJSVal options) =>
+         ReadableStream -> streams -> Maybe options -> m JSVal
+pipeTo self streams options
+  = liftIO
+      ((mapM toJSVal options >>=
+          \ options' ->
+            toJSVal streams >>= \ streams' -> js_pipeTo self streams'
+              (maybeToOptional options'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeTo Mozilla ReadableStream.pipeTo documentation> 
+pipeTo_ ::
+        (MonadIO m, ToJSVal streams, ToJSVal options) =>
+          ReadableStream -> streams -> Maybe options -> m ()
+pipeTo_ self streams options
+  = liftIO
+      (void
+         (mapM toJSVal options >>=
+            \ options' ->
+              toJSVal streams >>= \ streams' -> js_pipeTo self streams'
+                (maybeToOptional options')))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"pipeThrough\"]($2, $3); })"
+        js_pipeThrough :: ReadableStream -> JSVal -> JSVal -> IO GObject
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThrough ::
+            (MonadIO m, ToJSVal dest, ToJSVal options) =>
+              ReadableStream -> dest -> options -> m GObject
+pipeThrough self dest options
+  = liftIO
+      (toJSVal options >>=
+         \ options' ->
+           toJSVal dest >>= \ dest' -> js_pipeThrough self dest' options')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.pipeThrough Mozilla ReadableStream.pipeThrough documentation> 
+pipeThrough_ ::
+             (MonadIO m, ToJSVal dest, ToJSVal options) =>
+               ReadableStream -> dest -> options -> m ()
+pipeThrough_ self dest options
+  = liftIO
+      (void
+         (toJSVal options >>=
+            \ options' ->
+              toJSVal dest >>= \ dest' -> js_pipeThrough self dest' options'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tee\"](); })" js_tee ::
+        ReadableStream -> IO GObject
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
+tee :: (MonadIO m) => ReadableStream -> m GObject
+tee self = liftIO (js_tee self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.tee Mozilla ReadableStream.tee documentation> 
+tee_ :: (MonadIO m) => ReadableStream -> m ()
+tee_ self = liftIO (void (js_tee self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"locked\"] ? 1 : 0); })"
+        js_getLocked :: ReadableStream -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream.locked Mozilla ReadableStream.locked documentation> 
+getLocked :: (MonadIO m) => ReadableStream -> m Bool
+getLocked self = liftIO (js_getLocked self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBReader.hs
@@ -0,0 +1,106 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBReader
+       (js_newReadableStreamBYOBReader, newReadableStreamBYOBReader,
+        js_read, read, read_, js_cancel, cancel, cancel_, js_releaseLock,
+        releaseLock, js_getClosed, getClosed, ReadableStreamBYOBReader(..),
+        gTypeReadableStreamBYOBReader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"ReadableStreamBYOBReader\"]($1); })"
+        js_newReadableStreamBYOBReader ::
+        ReadableStream -> IO ReadableStreamBYOBReader
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader Mozilla ReadableStreamBYOBReader documentation> 
+newReadableStreamBYOBReader ::
+                            (MonadIO m) => ReadableStream -> m ReadableStreamBYOBReader
+newReadableStreamBYOBReader stream
+  = liftIO (js_newReadableStreamBYOBReader stream)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"read\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read ::
+        ReadableStreamBYOBReader -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
+read ::
+     (MonadIO m, ToJSVal view) =>
+       ReadableStreamBYOBReader -> Maybe view -> m JSVal
+read self view
+  = liftIO
+      ((mapM toJSVal view >>=
+          \ view' -> js_read self (maybeToOptional view'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.read Mozilla ReadableStreamBYOBReader.read documentation> 
+read_ ::
+      (MonadIO m, ToJSVal view) =>
+        ReadableStreamBYOBReader -> Maybe view -> m ()
+read_ self view
+  = liftIO
+      (void
+         (mapM toJSVal view >>=
+            \ view' -> js_read self (maybeToOptional view')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancel ::
+        ReadableStreamBYOBReader -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
+cancel ::
+       (MonadIO m, ToJSVal reason) =>
+         ReadableStreamBYOBReader -> Maybe reason -> m JSVal
+cancel self reason
+  = liftIO
+      ((mapM toJSVal reason >>=
+          \ reason' -> js_cancel self (maybeToOptional reason'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.cancel Mozilla ReadableStreamBYOBReader.cancel documentation> 
+cancel_ ::
+        (MonadIO m, ToJSVal reason) =>
+          ReadableStreamBYOBReader -> Maybe reason -> m ()
+cancel_ self reason
+  = liftIO
+      (void
+         (mapM toJSVal reason >>=
+            \ reason' -> js_cancel self (maybeToOptional reason')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"releaseLock\"](); })"
+        js_releaseLock :: ReadableStreamBYOBReader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.releaseLock Mozilla ReadableStreamBYOBReader.releaseLock documentation> 
+releaseLock :: (MonadIO m) => ReadableStreamBYOBReader -> m ()
+releaseLock self = liftIO (js_releaseLock self)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: ReadableStreamBYOBReader -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader.closed Mozilla ReadableStreamBYOBReader.closed documentation> 
+getClosed :: (MonadIO m) => ReadableStreamBYOBReader -> m Bool
+getClosed self
+  = liftIO ((js_getClosed self) >>= checkPromiseResult)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamBYOBRequest.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamBYOBRequest
+       (js_newReadableStreamBYOBRequest, newReadableStreamBYOBRequest,
+        js_respond, respond, js_respondWithNewView, respondWithNewView,
+        js_getView, getView, ReadableStreamBYOBRequest(..),
+        gTypeReadableStreamBYOBRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"ReadableStreamBYOBRequest\"]($1,\n$2); })"
+        js_newReadableStreamBYOBRequest ::
+        ReadableByteStreamController ->
+          RawTypedArray -> IO ReadableStreamBYOBRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation> 
+newReadableStreamBYOBRequest ::
+                             (MonadIO m, IsRawTypedArray view) =>
+                               ReadableByteStreamController -> view -> m ReadableStreamBYOBRequest
+newReadableStreamBYOBRequest controller view
+  = liftIO
+      (js_newReadableStreamBYOBRequest controller (toRawTypedArray view))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"respond\"]($2); })" js_respond
+        :: ReadableStreamBYOBRequest -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respond Mozilla ReadableStreamBYOBRequest.respond documentation> 
+respond ::
+        (MonadIO m, ToJSVal bytesWritten) =>
+          ReadableStreamBYOBRequest -> Maybe bytesWritten -> m ()
+respond self bytesWritten
+  = liftIO
+      (mapM toJSVal bytesWritten >>=
+         \ bytesWritten' -> js_respond self (maybeToOptional bytesWritten'))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"respondWithNewView\"]($2); })"
+        js_respondWithNewView ::
+        ReadableStreamBYOBRequest -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.respondWithNewView Mozilla ReadableStreamBYOBRequest.respondWithNewView documentation> 
+respondWithNewView ::
+                   (MonadIO m, ToJSVal view) =>
+                     ReadableStreamBYOBRequest -> Maybe view -> m ()
+respondWithNewView self view
+  = liftIO
+      (mapM toJSVal view >>=
+         \ view' -> js_respondWithNewView self (maybeToOptional view'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })" js_getView ::
+        ReadableStreamBYOBRequest -> IO RawTypedArray
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest.view Mozilla ReadableStreamBYOBRequest.view documentation> 
+getView ::
+        (MonadIO m) => ReadableStreamBYOBRequest -> m RawTypedArray
+getView self = liftIO (js_getView self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultController.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultController
+       (js_newReadableStreamDefaultController,
+        newReadableStreamDefaultController, js_enqueue, enqueue, js_close,
+        close, js_error, error, js_getDesiredSize, getDesiredSize,
+        ReadableStreamDefaultController(..),
+        gTypeReadableStreamDefaultController)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"ReadableStreamDefaultController\"]($1,\n$2, $3, $4); })"
+        js_newReadableStreamDefaultController ::
+        ReadableStream ->
+          JSVal -> Word -> Word -> IO ReadableStreamDefaultController
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController Mozilla ReadableStreamDefaultController documentation> 
+newReadableStreamDefaultController ::
+                                   (MonadIO m, ToJSVal underlyingSource) =>
+                                     ReadableStream ->
+                                       underlyingSource ->
+                                         Word -> Word -> m ReadableStreamDefaultController
+newReadableStreamDefaultController stream underlyingSource size
+  highWaterMark
+  = liftIO
+      (toJSVal underlyingSource >>=
+         \ underlyingSource' ->
+           js_newReadableStreamDefaultController stream underlyingSource'
+         size
+         highWaterMark)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"enqueue\"]($2); })" js_enqueue
+        :: ReadableStreamDefaultController -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.enqueue Mozilla ReadableStreamDefaultController.enqueue documentation> 
+enqueue ::
+        (MonadIO m, ToJSVal chunk) =>
+          ReadableStreamDefaultController -> Maybe chunk -> m ()
+enqueue self chunk
+  = liftIO
+      (mapM toJSVal chunk >>=
+         \ chunk' -> js_enqueue self (maybeToOptional chunk'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        ReadableStreamDefaultController -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.close Mozilla ReadableStreamDefaultController.close documentation> 
+close :: (MonadIO m) => ReadableStreamDefaultController -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"error\"]($2); })" js_error ::
+        ReadableStreamDefaultController -> Optional JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.error Mozilla ReadableStreamDefaultController.error documentation> 
+error ::
+      (MonadIO m, ToJSVal error) =>
+        ReadableStreamDefaultController -> Maybe error -> m ()
+error self error
+  = liftIO
+      (mapM toJSVal error >>=
+         \ error' -> js_error self (maybeToOptional error'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"desiredSize\"]; })"
+        js_getDesiredSize :: ReadableStreamDefaultController -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController.desiredSize Mozilla ReadableStreamDefaultController.desiredSize documentation> 
+getDesiredSize ::
+               (MonadIO m) => ReadableStreamDefaultController -> m Double
+getDesiredSize self = liftIO (js_getDesiredSize self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamDefaultReader.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamDefaultReader
+       (js_newReadableStreamDefaultReader, newReadableStreamDefaultReader,
+        js_read, read, read_, js_cancel, cancel, cancel_, js_releaseLock,
+        releaseLock, js_getClosed, getClosed,
+        ReadableStreamDefaultReader(..), gTypeReadableStreamDefaultReader)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"ReadableStreamDefaultReader\"]($1); })"
+        js_newReadableStreamDefaultReader ::
+        ReadableStream -> IO ReadableStreamDefaultReader
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader Mozilla ReadableStreamDefaultReader documentation> 
+newReadableStreamDefaultReader ::
+                               (MonadIO m) => ReadableStream -> m ReadableStreamDefaultReader
+newReadableStreamDefaultReader stream
+  = liftIO (js_newReadableStreamDefaultReader stream)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"read\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_read :: ReadableStreamDefaultReader -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
+read :: (MonadIO m) => ReadableStreamDefaultReader -> m JSVal
+read self = liftIO ((js_read self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.read Mozilla ReadableStreamDefaultReader.read documentation> 
+read_ :: (MonadIO m) => ReadableStreamDefaultReader -> m ()
+read_ self = liftIO (void (js_read self))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"cancel\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_cancel ::
+        ReadableStreamDefaultReader -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
+cancel ::
+       (MonadIO m, ToJSVal reason) =>
+         ReadableStreamDefaultReader -> Maybe reason -> m JSVal
+cancel self reason
+  = liftIO
+      ((mapM toJSVal reason >>=
+          \ reason' -> js_cancel self (maybeToOptional reason'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.cancel Mozilla ReadableStreamDefaultReader.cancel documentation> 
+cancel_ ::
+        (MonadIO m, ToJSVal reason) =>
+          ReadableStreamDefaultReader -> Maybe reason -> m ()
+cancel_ self reason
+  = liftIO
+      (void
+         (mapM toJSVal reason >>=
+            \ reason' -> js_cancel self (maybeToOptional reason')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"releaseLock\"](); })"
+        js_releaseLock :: ReadableStreamDefaultReader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.releaseLock Mozilla ReadableStreamDefaultReader.releaseLock documentation> 
+releaseLock :: (MonadIO m) => ReadableStreamDefaultReader -> m ()
+releaseLock self = liftIO (js_releaseLock self)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: ReadableStreamDefaultReader -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader.closed Mozilla ReadableStreamDefaultReader.closed documentation> 
+getClosed :: (MonadIO m) => ReadableStreamDefaultReader -> m Bool
+getClosed self
+  = liftIO ((js_getClosed self) >>= checkPromiseResult)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ReadableStreamSource.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ReadableStreamSource
+       (js_start, start, js_pull, pull, js_cancel, cancel,
+        js_getController, getController, ReadableStreamSource(..),
+        gTypeReadableStreamSource)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"start\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_start ::
+        ReadableStreamSource -> ReadableStreamDefaultController -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.start Mozilla ReadableStreamSource.start documentation> 
+start ::
+      (MonadIO m) =>
+        ReadableStreamSource -> ReadableStreamDefaultController -> m ()
+start self controller
+  = liftIO ((js_start self controller) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"pull\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_pull ::
+        ReadableStreamSource -> ReadableStreamDefaultController -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.pull Mozilla ReadableStreamSource.pull documentation> 
+pull ::
+     (MonadIO m) =>
+       ReadableStreamSource -> ReadableStreamDefaultController -> m ()
+pull self controller
+  = liftIO ((js_pull self controller) >>= maybeThrowPromiseRejected)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"cancel\"]($2); })" js_cancel ::
+        ReadableStreamSource -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.cancel Mozilla ReadableStreamSource.cancel documentation> 
+cancel ::
+       (MonadIO m, ToJSVal reason) =>
+         ReadableStreamSource -> reason -> m ()
+cancel self reason
+  = liftIO (toJSVal reason >>= \ reason' -> js_cancel self reason')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"controller\"]; })"
+        js_getController :: ReadableStreamSource -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource.controller Mozilla ReadableStreamSource.controller documentation> 
+getController :: (MonadIO m) => ReadableStreamSource -> m JSVal
+getController self = liftIO (js_getController self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Rect.hs b/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Rect.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Rect
+       (js_getTop, getTop, js_getRight, getRight, js_getBottom, getBottom,
+        js_getLeft, getLeft, Rect(..), gTypeRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
+        Rect -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.top Mozilla Rect.top documentation> 
+getTop :: (MonadIO m) => Rect -> m CSSPrimitiveValue
+getTop self = liftIO (js_getTop self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"right\"]; })" js_getRight ::
+        Rect -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.right Mozilla Rect.right documentation> 
+getRight :: (MonadIO m) => Rect -> m CSSPrimitiveValue
+getRight self = liftIO (js_getRight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bottom\"]; })" js_getBottom ::
+        Rect -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.bottom Mozilla Rect.bottom documentation> 
+getBottom :: (MonadIO m) => Rect -> m CSSPrimitiveValue
+getBottom self = liftIO (js_getBottom self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"left\"]; })" js_getLeft ::
+        Rect -> IO CSSPrimitiveValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Rect.left Mozilla Rect.left documentation> 
+getLeft :: (MonadIO m) => Rect -> m CSSPrimitiveValue
+getLeft self = liftIO (js_getLeft self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Request.hs b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Request.hs
@@ -0,0 +1,147 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Request
+       (js_newRequest, newRequest, js_clone, clone, clone_, js_getMethod,
+        getMethod, js_getUrl, getUrl, js_getHeaders, getHeaders,
+        js_getType, getType, js_getDestination, getDestination,
+        js_getReferrer, getReferrer, js_getReferrerPolicy,
+        getReferrerPolicy, js_getMode, getMode, js_getCredentials,
+        getCredentials, js_getCache, getCache, js_getRedirect, getRedirect,
+        js_getIntegrity, getIntegrity, Request(..), gTypeRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return new window[\"Request\"]($1, $2); })"
+        js_newRequest :: JSVal -> Optional RequestInit -> IO Request
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request Mozilla Request documentation> 
+newRequest ::
+           (MonadIO m, ToJSVal input) =>
+             input -> Maybe RequestInit -> m Request
+newRequest input init
+  = liftIO
+      (toJSVal input >>= \ input' -> js_newRequest input'
+         (maybeToOptional init))
+ 
+foreign import javascript safe "(($1) => { return $1[\"clone\"](); })" js_clone ::
+        Request -> IO Request
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
+clone :: (MonadIO m) => Request -> m Request
+clone self = liftIO (js_clone self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.clone Mozilla Request.clone documentation> 
+clone_ :: (MonadIO m) => Request -> m ()
+clone_ self = liftIO (void (js_clone self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
+        Request -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.method Mozilla Request.method documentation> 
+getMethod ::
+          (MonadIO m, FromJSString result) => Request -> m result
+getMethod self = liftIO (fromJSString <$> (js_getMethod self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        Request -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.url Mozilla Request.url documentation> 
+getUrl :: (MonadIO m, FromJSString result) => Request -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
+        Request -> IO Headers
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.headers Mozilla Request.headers documentation> 
+getHeaders :: (MonadIO m) => Request -> m Headers
+getHeaders self = liftIO (js_getHeaders self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.type Mozilla Request.type documentation> 
+getType :: (MonadIO m) => Request -> m RequestType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"destination\"]; })"
+        js_getDestination :: Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.destination Mozilla Request.destination documentation> 
+getDestination :: (MonadIO m) => Request -> m RequestDestination
+getDestination self
+  = liftIO ((js_getDestination self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
+        :: Request -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrer Mozilla Request.referrer documentation> 
+getReferrer ::
+            (MonadIO m, FromJSString result) => Request -> m result
+getReferrer self = liftIO (fromJSString <$> (js_getReferrer self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"referrerPolicy\"]; })"
+        js_getReferrerPolicy :: Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.referrerPolicy Mozilla Request.referrerPolicy documentation> 
+getReferrerPolicy :: (MonadIO m) => Request -> m ReferrerPolicy
+getReferrerPolicy self
+  = liftIO ((js_getReferrerPolicy self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.mode Mozilla Request.mode documentation> 
+getMode :: (MonadIO m) => Request -> m RequestMode
+getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"credentials\"]; })"
+        js_getCredentials :: Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.credentials Mozilla Request.credentials documentation> 
+getCredentials :: (MonadIO m) => Request -> m RequestCredentials
+getCredentials self
+  = liftIO ((js_getCredentials self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cache\"]; })" js_getCache ::
+        Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.cache Mozilla Request.cache documentation> 
+getCache :: (MonadIO m) => Request -> m RequestCache
+getCache self = liftIO ((js_getCache self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"redirect\"]; })" js_getRedirect
+        :: Request -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.redirect Mozilla Request.redirect documentation> 
+getRedirect :: (MonadIO m) => Request -> m RequestRedirect
+getRedirect self
+  = liftIO ((js_getRedirect self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"integrity\"]; })"
+        js_getIntegrity :: Request -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Request.integrity Mozilla Request.integrity documentation> 
+getIntegrity ::
+             (MonadIO m, FromJSString result) => Request -> m result
+getIntegrity self
+  = liftIO (fromJSString <$> (js_getIntegrity self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/RequestAnimationFrameCallback.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.RequestAnimationFrameCallback
+       (newRequestAnimationFrameCallback,
+        newRequestAnimationFrameCallbackSync,
+        newRequestAnimationFrameCallbackAsync,
+        RequestAnimationFrameCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallback ::
+                                 (MonadIO m) => (Double -> IO ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallback callback
+  = liftIO
+      (RequestAnimationFrameCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ highResTime ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallbackSync ::
+                                     (MonadIO m) =>
+                                       (Double -> IO ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallbackSync callback
+  = liftIO
+      (RequestAnimationFrameCallback <$>
+         syncCallback1 ContinueAsync
+           (\ highResTime ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/RequestAnimationFrameCallback Mozilla RequestAnimationFrameCallback documentation> 
+newRequestAnimationFrameCallbackAsync ::
+                                      (MonadIO m) =>
+                                        (Double -> IO ()) -> m RequestAnimationFrameCallback
+newRequestAnimationFrameCallbackAsync callback
+  = liftIO
+      (RequestAnimationFrameCallback <$>
+         asyncCallback1
+           (\ highResTime ->
+              fromJSValUnchecked highResTime >>=
+                \ highResTime' -> callback highResTime'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Response.hs b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Response.hs
@@ -0,0 +1,213 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Response
+       (js_error, error, error_, js_redirect, redirect, redirect_,
+        js_arrayBuffer, arrayBuffer, arrayBuffer_, js_blob, blob, blob_,
+        js_formData, formData, formData_, js_json, json, json_, js_text,
+        text, text_, js_clone, clone, clone_, js_getType, getType,
+        js_getUrl, getUrl, js_getRedirected, getRedirected, js_getStatus,
+        getStatus, js_getOk, getOk, js_getStatusText, getStatusText,
+        js_getHeaders, getHeaders, js_getBody, getBody, getBodyUnsafe,
+        getBodyUnchecked, js_getBodyUsed, getBodyUsed, Response(..),
+        gTypeResponse)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return window[\"Response\"][\"error\"](); })" js_error :: IO Response
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
+error :: (MonadIO m) => m Response
+error = liftIO (js_error)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.error Mozilla Response.error documentation> 
+error_ :: (MonadIO m) => m ()
+error_ = liftIO (void (js_error))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return window[\"Response\"][\"redirect\"]($1,\n$2); })" js_redirect ::
+        JSString -> Optional Word -> IO Response
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
+redirect ::
+         (MonadIO m, ToJSString url) => url -> Maybe Word -> m Response
+redirect url status
+  = liftIO (js_redirect (toJSString url) (maybeToOptional status))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirect Mozilla Response.redirect documentation> 
+redirect_ ::
+          (MonadIO m, ToJSString url) => url -> Maybe Word -> m ()
+redirect_ url status
+  = liftIO
+      (void (js_redirect (toJSString url) (maybeToOptional status)))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"arrayBuffer\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_arrayBuffer :: Response -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
+arrayBuffer :: (MonadIO m) => Response -> m ArrayBuffer
+arrayBuffer self
+  = liftIO ((js_arrayBuffer self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.arrayBuffer Mozilla Response.arrayBuffer documentation> 
+arrayBuffer_ :: (MonadIO m) => Response -> m ()
+arrayBuffer_ self = liftIO (void (js_arrayBuffer self))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"blob\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_blob :: Response -> IO (JSVal, Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
+blob :: (MonadIO m) => Response -> m Blob
+blob self = liftIO ((js_blob self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.blob Mozilla Response.blob documentation> 
+blob_ :: (MonadIO m) => Response -> m ()
+blob_ self = liftIO (void (js_blob self))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"formData\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_formData :: Response -> IO (JSVal, Blob)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
+formData :: (MonadIO m) => Response -> m Blob
+formData self = liftIO ((js_formData self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.formData Mozilla Response.formData documentation> 
+formData_ :: (MonadIO m) => Response -> m ()
+formData_ self = liftIO (void (js_formData self))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"json\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_json :: Response -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
+json :: (MonadIO m) => Response -> m JSVal
+json self = liftIO ((js_json self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.json Mozilla Response.json documentation> 
+json_ :: (MonadIO m) => Response -> m ()
+json_ self = liftIO (void (js_json self))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"text\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_text :: Response -> IO (JSVal, JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
+text :: (MonadIO m, FromJSString result) => Response -> m result
+text self
+  = liftIO (fromJSString <$> ((js_text self) >>= checkPromiseResult))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.text Mozilla Response.text documentation> 
+text_ :: (MonadIO m) => Response -> m ()
+text_ self = liftIO (void (js_text self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clone\"](); })" js_clone ::
+        Response -> IO Response
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
+clone :: (MonadIO m) => Response -> m Response
+clone self = liftIO (js_clone self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.clone Mozilla Response.clone documentation> 
+clone_ :: (MonadIO m) => Response -> m ()
+clone_ self = liftIO (void (js_clone self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        Response -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.type Mozilla Response.type documentation> 
+getType :: (MonadIO m) => Response -> m ResponseType
+getType self = liftIO ((js_getType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        Response -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.url Mozilla Response.url documentation> 
+getUrl :: (MonadIO m, FromJSString result) => Response -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"redirected\"] ? 1 : 0); })"
+        js_getRedirected :: Response -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.redirected Mozilla Response.redirected documentation> 
+getRedirected :: (MonadIO m) => Response -> m Bool
+getRedirected self = liftIO (js_getRedirected self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        Response -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.status Mozilla Response.status documentation> 
+getStatus :: (MonadIO m) => Response -> m Word
+getStatus self = liftIO (js_getStatus self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ok\"] ? 1 : 0); })" js_getOk ::
+        Response -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.ok Mozilla Response.ok documentation> 
+getOk :: (MonadIO m) => Response -> m Bool
+getOk self = liftIO (js_getOk self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"statusText\"]; })"
+        js_getStatusText :: Response -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.statusText Mozilla Response.statusText documentation> 
+getStatusText ::
+              (MonadIO m, FromJSString result) => Response -> m result
+getStatusText self
+  = liftIO (fromJSString <$> (js_getStatusText self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"headers\"]; })" js_getHeaders ::
+        Response -> IO Headers
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.headers Mozilla Response.headers documentation> 
+getHeaders :: (MonadIO m) => Response -> m Headers
+getHeaders self = liftIO (js_getHeaders self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"body\"]; })" js_getBody ::
+        Response -> IO (Nullable ReadableStream)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
+getBody :: (MonadIO m) => Response -> m (Maybe ReadableStream)
+getBody self = liftIO (nullableToMaybe <$> (js_getBody self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
+getBodyUnsafe ::
+              (MonadIO m, HasCallStack) => Response -> m ReadableStream
+getBodyUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBody self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.body Mozilla Response.body documentation> 
+getBodyUnchecked :: (MonadIO m) => Response -> m ReadableStream
+getBodyUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getBody self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"bodyUsed\"] ? 1 : 0); })"
+        js_getBodyUsed :: Response -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Response.bodyUsed Mozilla Response.bodyUsed documentation> 
+getBodyUsed :: (MonadIO m) => Response -> m Bool
+getBodyUsed self = liftIO (js_getBodyUsed self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLError.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLError
+       (pattern UNKNOWN_ERR, pattern DATABASE_ERR, pattern VERSION_ERR,
+        pattern TOO_LARGE_ERR, pattern QUOTA_ERR, pattern SYNTAX_ERR,
+        pattern CONSTRAINT_ERR, pattern TIMEOUT_ERR, js_getCode, getCode,
+        js_getMessage, getMessage, SQLError(..), gTypeSQLError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern UNKNOWN_ERR = 0
+pattern DATABASE_ERR = 1
+pattern VERSION_ERR = 2
+pattern TOO_LARGE_ERR = 3
+pattern QUOTA_ERR = 4
+pattern SYNTAX_ERR = 5
+pattern CONSTRAINT_ERR = 6
+pattern TIMEOUT_ERR = 7
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        SQLError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.code Mozilla SQLError.code documentation> 
+getCode :: (MonadIO m) => SQLError -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        SQLError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLError.message Mozilla SQLError.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => SQLError -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLException.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLException
+       (pattern UNKNOWN_ERR, pattern DATABASE_ERR, pattern VERSION_ERR,
+        pattern TOO_LARGE_ERR, pattern QUOTA_ERR, pattern SYNTAX_ERR,
+        pattern CONSTRAINT_ERR, pattern TIMEOUT_ERR, js_getCode, getCode,
+        js_getMessage, getMessage, SQLException(..), gTypeSQLException)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern UNKNOWN_ERR = 0
+pattern DATABASE_ERR = 1
+pattern VERSION_ERR = 2
+pattern TOO_LARGE_ERR = 3
+pattern QUOTA_ERR = 4
+pattern SYNTAX_ERR = 5
+pattern CONSTRAINT_ERR = 6
+pattern TIMEOUT_ERR = 7
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        SQLException -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.code Mozilla SQLException.code documentation> 
+getCode :: (MonadIO m) => SQLException -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        SQLException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLException.message Mozilla SQLException.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => SQLException -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSet.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLResultSet
+       (js_getRows, getRows, js_getInsertId, getInsertId,
+        js_getRowsAffected, getRowsAffected, SQLResultSet(..),
+        gTypeSQLResultSet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rows\"]; })" js_getRows ::
+        SQLResultSet -> IO SQLResultSetRowList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rows Mozilla SQLResultSet.rows documentation> 
+getRows :: (MonadIO m) => SQLResultSet -> m SQLResultSetRowList
+getRows self = liftIO (js_getRows self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"insertId\"]; })" js_getInsertId ::
+        SQLResultSet -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.insertId Mozilla SQLResultSet.insertId documentation> 
+getInsertId :: (MonadIO m) => SQLResultSet -> m Int64
+getInsertId self = liftIO (round <$> (js_getInsertId self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rowsAffected\"]; })"
+        js_getRowsAffected :: SQLResultSet -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet.rowsAffected Mozilla SQLResultSet.rowsAffected documentation> 
+getRowsAffected :: (MonadIO m) => SQLResultSet -> m Int
+getRowsAffected self = liftIO (js_getRowsAffected self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLResultSetRowList.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLResultSetRowList
+       (js_item, item, item_, js_getLength, getLength,
+        SQLResultSetRowList(..), gTypeSQLResultSetRowList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"item\"]($2); })" js_item ::
+        SQLResultSetRowList -> Word -> IO (Record DOMString SQLValue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
+item ::
+     (MonadIO m) =>
+       SQLResultSetRowList -> Word -> m (Record DOMString SQLValue)
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.item Mozilla SQLResultSetRowList.item documentation> 
+item_ :: (MonadIO m) => SQLResultSetRowList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        SQLResultSetRowList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList.length Mozilla SQLResultSetRowList.length documentation> 
+getLength :: (MonadIO m) => SQLResultSetRowList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementCallback.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLStatementCallback
+       (newSQLStatementCallback, newSQLStatementCallbackSync,
+        newSQLStatementCallbackAsync, SQLStatementCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallback ::
+                        (MonadIO m) =>
+                          (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
+newSQLStatementCallback callback
+  = liftIO
+      (SQLStatementCallback <$>
+         syncCallback2 ThrowWouldBlock
+           (\ transaction resultSet ->
+              fromJSValUnchecked resultSet >>=
+                \ resultSet' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    resultSet'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallbackSync ::
+                            (MonadIO m) =>
+                              (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
+newSQLStatementCallbackSync callback
+  = liftIO
+      (SQLStatementCallback <$>
+         syncCallback2 ContinueAsync
+           (\ transaction resultSet ->
+              fromJSValUnchecked resultSet >>=
+                \ resultSet' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    resultSet'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementCallback Mozilla SQLStatementCallback documentation> 
+newSQLStatementCallbackAsync ::
+                             (MonadIO m) =>
+                               (SQLTransaction -> SQLResultSet -> IO ()) -> m SQLStatementCallback
+newSQLStatementCallbackAsync callback
+  = liftIO
+      (SQLStatementCallback <$>
+         asyncCallback2
+           (\ transaction resultSet ->
+              fromJSValUnchecked resultSet >>=
+                \ resultSet' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    resultSet'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLStatementErrorCallback.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLStatementErrorCallback
+       (newSQLStatementErrorCallback, newSQLStatementErrorCallbackSync,
+        newSQLStatementErrorCallbackAsync, SQLStatementErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallback ::
+                             (MonadIO m) =>
+                               (SQLTransaction -> SQLError -> IO ()) ->
+                                 m SQLStatementErrorCallback
+newSQLStatementErrorCallback callback
+  = liftIO
+      (SQLStatementErrorCallback <$>
+         syncCallback2 ThrowWouldBlock
+           (\ transaction error ->
+              fromJSValUnchecked error >>=
+                \ error' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallbackSync ::
+                                 (MonadIO m) =>
+                                   (SQLTransaction -> SQLError -> IO ()) ->
+                                     m SQLStatementErrorCallback
+newSQLStatementErrorCallbackSync callback
+  = liftIO
+      (SQLStatementErrorCallback <$>
+         syncCallback2 ContinueAsync
+           (\ transaction error ->
+              fromJSValUnchecked error >>=
+                \ error' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLStatementErrorCallback Mozilla SQLStatementErrorCallback documentation> 
+newSQLStatementErrorCallbackAsync ::
+                                  (MonadIO m) =>
+                                    (SQLTransaction -> SQLError -> IO ()) ->
+                                      m SQLStatementErrorCallback
+newSQLStatementErrorCallbackAsync callback
+  = liftIO
+      (SQLStatementErrorCallback <$>
+         asyncCallback2
+           (\ transaction error ->
+              fromJSValUnchecked error >>=
+                \ error' ->
+                  fromJSValUnchecked transaction >>=
+                    \ transaction' -> callback transaction'
+                    error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransaction.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLTransaction
+       (js_executeSql, executeSql, SQLTransaction(..),
+        gTypeSQLTransaction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3, $4, $5) => { return $1[\"executeSql\"]($2, $3, $4, $5); })"
+        js_executeSql ::
+        SQLTransaction ->
+          JSString ->
+            JSVal ->
+              Optional SQLStatementCallback ->
+                Optional SQLStatementErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction.executeSql Mozilla SQLTransaction.executeSql documentation> 
+executeSql ::
+           (MonadIO m, ToJSString sqlStatement, IsSQLValue arguments) =>
+             SQLTransaction ->
+               sqlStatement ->
+                 [arguments] ->
+                   Maybe SQLStatementCallback ->
+                     Maybe SQLStatementErrorCallback -> m ()
+executeSql self sqlStatement arguments callback errorCallback
+  = liftIO
+      (toJSVal arguments >>=
+         \ arguments' ->
+           js_executeSql self (toJSString sqlStatement) arguments'
+         (maybeToOptional callback)
+         (maybeToOptional errorCallback))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionCallback.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLTransactionCallback
+       (newSQLTransactionCallback, newSQLTransactionCallbackSync,
+        newSQLTransactionCallbackAsync, SQLTransactionCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallback ::
+                          (MonadIO m) =>
+                            (SQLTransaction -> IO ()) -> m SQLTransactionCallback
+newSQLTransactionCallback callback
+  = liftIO
+      (SQLTransactionCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ transaction ->
+              fromJSValUnchecked transaction >>=
+                \ transaction' -> callback transaction'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallbackSync ::
+                              (MonadIO m) =>
+                                (SQLTransaction -> IO ()) -> m SQLTransactionCallback
+newSQLTransactionCallbackSync callback
+  = liftIO
+      (SQLTransactionCallback <$>
+         syncCallback1 ContinueAsync
+           (\ transaction ->
+              fromJSValUnchecked transaction >>=
+                \ transaction' -> callback transaction'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionCallback Mozilla SQLTransactionCallback documentation> 
+newSQLTransactionCallbackAsync ::
+                               (MonadIO m) =>
+                                 (SQLTransaction -> IO ()) -> m SQLTransactionCallback
+newSQLTransactionCallbackAsync callback
+  = liftIO
+      (SQLTransactionCallback <$>
+         asyncCallback1
+           (\ transaction ->
+              fromJSValUnchecked transaction >>=
+                \ transaction' -> callback transaction'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SQLTransactionErrorCallback.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SQLTransactionErrorCallback
+       (newSQLTransactionErrorCallback,
+        newSQLTransactionErrorCallbackSync,
+        newSQLTransactionErrorCallbackAsync, SQLTransactionErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallback ::
+                               (MonadIO m) => (SQLError -> IO ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallback callback
+  = liftIO
+      (SQLTransactionErrorCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallbackSync ::
+                                   (MonadIO m) =>
+                                     (SQLError -> IO ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallbackSync callback
+  = liftIO
+      (SQLTransactionErrorCallback <$>
+         syncCallback1 ContinueAsync
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransactionErrorCallback Mozilla SQLTransactionErrorCallback documentation> 
+newSQLTransactionErrorCallbackAsync ::
+                                    (MonadIO m) =>
+                                      (SQLError -> IO ()) -> m SQLTransactionErrorCallback
+newSQLTransactionErrorCallbackAsync callback
+  = liftIO
+      (SQLTransactionErrorCallback <$>
+         asyncCallback1
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAElement.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAElement
+       (js_getTarget, getTarget, SVGAElement(..), gTypeSVGAElement) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        SVGAElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement.target Mozilla SVGAElement.target documentation> 
+getTarget :: (MonadIO m) => SVGAElement -> m SVGAnimatedString
+getTarget self = liftIO (js_getTarget self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAltGlyphElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAltGlyphElement
+       (js_setGlyphRef, setGlyphRef, js_getGlyphRef, getGlyphRef,
+        js_setFormat, setFormat, js_getFormat, getFormat,
+        SVGAltGlyphElement(..), gTypeSVGAltGlyphElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"glyphRef\"] = $2; })"
+        js_setGlyphRef :: SVGAltGlyphElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
+setGlyphRef ::
+            (MonadIO m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
+setGlyphRef self val
+  = liftIO (js_setGlyphRef self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"glyphRef\"]; })" js_getGlyphRef
+        :: SVGAltGlyphElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.glyphRef Mozilla SVGAltGlyphElement.glyphRef documentation> 
+getGlyphRef ::
+            (MonadIO m, FromJSString result) => SVGAltGlyphElement -> m result
+getGlyphRef self = liftIO (fromJSString <$> (js_getGlyphRef self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"format\"] = $2; })" js_setFormat
+        :: SVGAltGlyphElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
+setFormat ::
+          (MonadIO m, ToJSString val) => SVGAltGlyphElement -> val -> m ()
+setFormat self val = liftIO (js_setFormat self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })" js_getFormat ::
+        SVGAltGlyphElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement.format Mozilla SVGAltGlyphElement.format documentation> 
+getFormat ::
+          (MonadIO m, FromJSString result) => SVGAltGlyphElement -> m result
+getFormat self = liftIO (fromJSString <$> (js_getFormat self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAngle.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAngle
+       (js_newValueSpecifiedUnits, newValueSpecifiedUnits,
+        js_convertToSpecifiedUnits, convertToSpecifiedUnits,
+        pattern SVG_ANGLETYPE_UNKNOWN, pattern SVG_ANGLETYPE_UNSPECIFIED,
+        pattern SVG_ANGLETYPE_DEG, pattern SVG_ANGLETYPE_RAD,
+        pattern SVG_ANGLETYPE_GRAD, js_getUnitType, getUnitType,
+        js_setValue, setValue, js_getValue, getValue,
+        js_setValueInSpecifiedUnits, setValueInSpecifiedUnits,
+        js_getValueInSpecifiedUnits, getValueInSpecifiedUnits,
+        js_setValueAsString, setValueAsString, js_getValueAsString,
+        getValueAsString, SVGAngle(..), gTypeSVGAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2,\n$3); })" js_newValueSpecifiedUnits
+        :: SVGAngle -> Word -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.newValueSpecifiedUnits Mozilla SVGAngle.newValueSpecifiedUnits documentation> 
+newValueSpecifiedUnits ::
+                       (MonadIO m) => SVGAngle -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits
+  = liftIO
+      (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })" js_convertToSpecifiedUnits ::
+        SVGAngle -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.convertToSpecifiedUnits Mozilla SVGAngle.convertToSpecifiedUnits documentation> 
+convertToSpecifiedUnits :: (MonadIO m) => SVGAngle -> Word -> m ()
+convertToSpecifiedUnits self unitType
+  = liftIO (js_convertToSpecifiedUnits self unitType)
+pattern SVG_ANGLETYPE_UNKNOWN = 0
+pattern SVG_ANGLETYPE_UNSPECIFIED = 1
+pattern SVG_ANGLETYPE_DEG = 2
+pattern SVG_ANGLETYPE_RAD = 3
+pattern SVG_ANGLETYPE_GRAD = 4
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })" js_getUnitType
+        :: SVGAngle -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.unitType Mozilla SVGAngle.unitType documentation> 
+getUnitType :: (MonadIO m) => SVGAngle -> m Word
+getUnitType self = liftIO (js_getUnitType self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
+        SVGAngle -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+setValue :: (MonadIO m) => SVGAngle -> Float -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        SVGAngle -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.value Mozilla SVGAngle.value documentation> 
+getValue :: (MonadIO m) => SVGAngle -> m Float
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript safe
+        "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })" js_setValueInSpecifiedUnits
+        :: SVGAngle -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
+setValueInSpecifiedUnits ::
+                         (MonadIO m) => SVGAngle -> Float -> m ()
+setValueInSpecifiedUnits self val
+  = liftIO (js_setValueInSpecifiedUnits self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueInSpecifiedUnits\"]; })"
+        js_getValueInSpecifiedUnits :: SVGAngle -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueInSpecifiedUnits Mozilla SVGAngle.valueInSpecifiedUnits documentation> 
+getValueInSpecifiedUnits :: (MonadIO m) => SVGAngle -> m Float
+getValueInSpecifiedUnits self
+  = liftIO (js_getValueInSpecifiedUnits self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsString\"] = $2; })"
+        js_setValueAsString :: SVGAngle -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+setValueAsString ::
+                 (MonadIO m, ToJSString val) => SVGAngle -> val -> m ()
+setValueAsString self val
+  = liftIO (js_setValueAsString self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsString\"]; })"
+        js_getValueAsString :: SVGAngle -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle.valueAsString Mozilla SVGAngle.valueAsString documentation> 
+getValueAsString ::
+                 (MonadIO m, FromJSString result) => SVGAngle -> m result
+getValueAsString self
+  = liftIO (fromJSString <$> (js_getValueAsString self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedAngle.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedAngle
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedAngle(..), gTypeSVGAnimatedAngle)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedAngle -> IO SVGAngle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.baseVal Mozilla SVGAnimatedAngle.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedAngle -> m SVGAngle
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedAngle -> IO SVGAngle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle.animVal Mozilla SVGAnimatedAngle.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedAngle -> m SVGAngle
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedBoolean.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedBoolean
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedBoolean(..),
+        gTypeSVGAnimatedBoolean)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedBoolean -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+setBaseVal :: (MonadIO m) => SVGAnimatedBoolean -> Bool -> m ()
+setBaseVal self val = liftIO (js_setBaseVal self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"baseVal\"] ? 1 : 0); })"
+        js_getBaseVal :: SVGAnimatedBoolean -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.baseVal Mozilla SVGAnimatedBoolean.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedBoolean -> m Bool
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"animVal\"] ? 1 : 0); })"
+        js_getAnimVal :: SVGAnimatedBoolean -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean.animVal Mozilla SVGAnimatedBoolean.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedBoolean -> m Bool
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedEnumeration.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedEnumeration
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedEnumeration(..),
+        gTypeSVGAnimatedEnumeration)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedEnumeration -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
+setBaseVal :: (MonadIO m) => SVGAnimatedEnumeration -> Word -> m ()
+setBaseVal self val = liftIO (js_setBaseVal self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedEnumeration -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.baseVal Mozilla SVGAnimatedEnumeration.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedEnumeration -> m Word
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedEnumeration -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration.animVal Mozilla SVGAnimatedEnumeration.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedEnumeration -> m Word
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedInteger.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedInteger
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedInteger(..),
+        gTypeSVGAnimatedInteger)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedInteger -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+setBaseVal :: (MonadIO m) => SVGAnimatedInteger -> Int -> m ()
+setBaseVal self val = liftIO (js_setBaseVal self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedInteger -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.baseVal Mozilla SVGAnimatedInteger.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedInteger -> m Int
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedInteger -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger.animVal Mozilla SVGAnimatedInteger.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedInteger -> m Int
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLength.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLength
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedLength(..), gTypeSVGAnimatedLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedLength -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.baseVal Mozilla SVGAnimatedLength.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedLength -> m SVGLength
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedLength -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength.animVal Mozilla SVGAnimatedLength.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedLength -> m SVGLength
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedLengthList.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedLengthList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedLengthList(..), gTypeSVGAnimatedLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedLengthList -> IO SVGLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.baseVal Mozilla SVGAnimatedLengthList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedLengthList -> m SVGLengthList
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedLengthList -> IO SVGLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList.animVal Mozilla SVGAnimatedLengthList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedLengthList -> m SVGLengthList
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumber.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumber
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedNumber(..),
+        gTypeSVGAnimatedNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedNumber -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+setBaseVal :: (MonadIO m) => SVGAnimatedNumber -> Float -> m ()
+setBaseVal self val = liftIO (js_setBaseVal self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedNumber -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.baseVal Mozilla SVGAnimatedNumber.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedNumber -> m Float
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedNumber -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber.animVal Mozilla SVGAnimatedNumber.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedNumber -> m Float
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedNumberList.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedNumberList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedNumberList(..), gTypeSVGAnimatedNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedNumberList -> IO SVGNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.baseVal Mozilla SVGAnimatedNumberList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedNumberList -> m SVGNumberList
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedNumberList -> IO SVGNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList.animVal Mozilla SVGAnimatedNumberList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedNumberList -> m SVGNumberList
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedPreserveAspectRatio.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedPreserveAspectRatio
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedPreserveAspectRatio(..),
+        gTypeSVGAnimatedPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.baseVal Mozilla SVGAnimatedPreserveAspectRatio.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) =>
+             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedPreserveAspectRatio -> IO SVGPreserveAspectRatio
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio.animVal Mozilla SVGAnimatedPreserveAspectRatio.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) =>
+             SVGAnimatedPreserveAspectRatio -> m SVGPreserveAspectRatio
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedRect.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedRect
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedRect(..), gTypeSVGAnimatedRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedRect -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.baseVal Mozilla SVGAnimatedRect.baseVal documentation> 
+getBaseVal :: (MonadIO m) => SVGAnimatedRect -> m SVGRect
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedRect -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect.animVal Mozilla SVGAnimatedRect.animVal documentation> 
+getAnimVal :: (MonadIO m) => SVGAnimatedRect -> m SVGRect
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedString.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedString
+       (js_setBaseVal, setBaseVal, js_getBaseVal, getBaseVal,
+        js_getAnimVal, getAnimVal, SVGAnimatedString(..),
+        gTypeSVGAnimatedString)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"baseVal\"] = $2; })"
+        js_setBaseVal :: SVGAnimatedString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
+setBaseVal ::
+           (MonadIO m, ToJSString val) => SVGAnimatedString -> val -> m ()
+setBaseVal self val = liftIO (js_setBaseVal self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.baseVal Mozilla SVGAnimatedString.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m, FromJSString result) => SVGAnimatedString -> m result
+getBaseVal self = liftIO (fromJSString <$> (js_getBaseVal self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString.animVal Mozilla SVGAnimatedString.animVal documentation> 
+getAnimVal ::
+           (MonadIO m, FromJSString result) => SVGAnimatedString -> m result
+getAnimVal self = liftIO (fromJSString <$> (js_getAnimVal self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimatedTransformList.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimatedTransformList
+       (js_getBaseVal, getBaseVal, js_getAnimVal, getAnimVal,
+        SVGAnimatedTransformList(..), gTypeSVGAnimatedTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseVal\"]; })" js_getBaseVal ::
+        SVGAnimatedTransformList -> IO SVGTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.baseVal Mozilla SVGAnimatedTransformList.baseVal documentation> 
+getBaseVal ::
+           (MonadIO m) => SVGAnimatedTransformList -> m SVGTransformList
+getBaseVal self = liftIO (js_getBaseVal self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animVal\"]; })" js_getAnimVal ::
+        SVGAnimatedTransformList -> IO SVGTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList.animVal Mozilla SVGAnimatedTransformList.animVal documentation> 
+getAnimVal ::
+           (MonadIO m) => SVGAnimatedTransformList -> m SVGTransformList
+getAnimVal self = liftIO (js_getAnimVal self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGAnimationElement.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGAnimationElement
+       (js_getStartTime, getStartTime, getStartTime_, js_getCurrentTime,
+        getCurrentTime, getCurrentTime_, js_getSimpleDuration,
+        getSimpleDuration, getSimpleDuration_, js_beginElement,
+        beginElement, js_beginElementAt, beginElementAt, js_endElement,
+        endElement, js_endElementAt, endElementAt, js_getTargetElement,
+        getTargetElement, SVGAnimationElement(..),
+        gTypeSVGAnimationElement, IsSVGAnimationElement,
+        toSVGAnimationElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getStartTime\"](); })"
+        js_getStartTime :: SVGAnimationElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
+getStartTime ::
+             (MonadIO m, IsSVGAnimationElement self) => self -> m Float
+getStartTime self
+  = liftIO (js_getStartTime (toSVGAnimationElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getStartTime Mozilla SVGAnimationElement.getStartTime documentation> 
+getStartTime_ ::
+              (MonadIO m, IsSVGAnimationElement self) => self -> m ()
+getStartTime_ self
+  = liftIO (void (js_getStartTime (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getCurrentTime\"](); })"
+        js_getCurrentTime :: SVGAnimationElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
+getCurrentTime ::
+               (MonadIO m, IsSVGAnimationElement self) => self -> m Float
+getCurrentTime self
+  = liftIO (js_getCurrentTime (toSVGAnimationElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getCurrentTime Mozilla SVGAnimationElement.getCurrentTime documentation> 
+getCurrentTime_ ::
+                (MonadIO m, IsSVGAnimationElement self) => self -> m ()
+getCurrentTime_ self
+  = liftIO (void (js_getCurrentTime (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSimpleDuration\"](); })"
+        js_getSimpleDuration :: SVGAnimationElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
+getSimpleDuration ::
+                  (MonadIO m, IsSVGAnimationElement self) => self -> m Float
+getSimpleDuration self
+  = liftIO (js_getSimpleDuration (toSVGAnimationElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.getSimpleDuration Mozilla SVGAnimationElement.getSimpleDuration documentation> 
+getSimpleDuration_ ::
+                   (MonadIO m, IsSVGAnimationElement self) => self -> m ()
+getSimpleDuration_ self
+  = liftIO (void (js_getSimpleDuration (toSVGAnimationElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"beginElement\"](); })"
+        js_beginElement :: SVGAnimationElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElement Mozilla SVGAnimationElement.beginElement documentation> 
+beginElement ::
+             (MonadIO m, IsSVGAnimationElement self) => self -> m ()
+beginElement self
+  = liftIO (js_beginElement (toSVGAnimationElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"beginElementAt\"]($2); })"
+        js_beginElementAt :: SVGAnimationElement -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.beginElementAt Mozilla SVGAnimationElement.beginElementAt documentation> 
+beginElementAt ::
+               (MonadIO m, IsSVGAnimationElement self) =>
+                 self -> Maybe Float -> m ()
+beginElementAt self offset
+  = liftIO
+      (js_beginElementAt (toSVGAnimationElement self)
+         (maybeToOptional offset))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endElement\"](); })"
+        js_endElement :: SVGAnimationElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElement Mozilla SVGAnimationElement.endElement documentation> 
+endElement ::
+           (MonadIO m, IsSVGAnimationElement self) => self -> m ()
+endElement self
+  = liftIO (js_endElement (toSVGAnimationElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"endElementAt\"]($2); })"
+        js_endElementAt :: SVGAnimationElement -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.endElementAt Mozilla SVGAnimationElement.endElementAt documentation> 
+endElementAt ::
+             (MonadIO m, IsSVGAnimationElement self) =>
+               self -> Maybe Float -> m ()
+endElementAt self offset
+  = liftIO
+      (js_endElementAt (toSVGAnimationElement self)
+         (maybeToOptional offset))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"targetElement\"]; })"
+        js_getTargetElement :: SVGAnimationElement -> IO SVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement.targetElement Mozilla SVGAnimationElement.targetElement documentation> 
+getTargetElement ::
+                 (MonadIO m, IsSVGAnimationElement self) => self -> m SVGElement
+getTargetElement self
+  = liftIO (js_getTargetElement (toSVGAnimationElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGCircleElement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGCircleElement
+       (js_getCx, getCx, js_getCy, getCy, js_getR, getR,
+        SVGCircleElement(..), gTypeSVGCircleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
+        SVGCircleElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cx Mozilla SVGCircleElement.cx documentation> 
+getCx :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
+getCx self = liftIO (js_getCx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
+        SVGCircleElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.cy Mozilla SVGCircleElement.cy documentation> 
+getCy :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
+getCy self = liftIO (js_getCy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })" js_getR ::
+        SVGCircleElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement.r Mozilla SVGCircleElement.r documentation> 
+getR :: (MonadIO m) => SVGCircleElement -> m SVGAnimatedLength
+getR self = liftIO (js_getR self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGClipPathElement.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGClipPathElement
+       (js_getClipPathUnits, getClipPathUnits, SVGClipPathElement(..),
+        gTypeSVGClipPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clipPathUnits\"]; })"
+        js_getClipPathUnits ::
+        SVGClipPathElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement.clipPathUnits Mozilla SVGClipPathElement.clipPathUnits documentation> 
+getClipPathUnits ::
+                 (MonadIO m) => SVGClipPathElement -> m SVGAnimatedEnumeration
+getClipPathUnits self = liftIO (js_getClipPathUnits self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGComponentTransferFunctionElement.hs
@@ -0,0 +1,122 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGComponentTransferFunctionElement
+       (pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR,
+        pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA, js_getType, getType,
+        js_getTableValues, getTableValues, js_getSlope, getSlope,
+        js_getIntercept, getIntercept, js_getAmplitude, getAmplitude,
+        js_getExponent, getExponent, js_getOffset, getOffset,
+        SVGComponentTransferFunctionElement(..),
+        gTypeSVGComponentTransferFunctionElement,
+        IsSVGComponentTransferFunctionElement,
+        toSVGComponentTransferFunctionElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0
+pattern SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1
+pattern SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2
+pattern SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3
+pattern SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4
+pattern SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.type Mozilla SVGComponentTransferFunctionElement.type documentation> 
+getType ::
+        (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+          self -> m SVGAnimatedEnumeration
+getType self
+  = liftIO (js_getType (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tableValues\"]; })"
+        js_getTableValues ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.tableValues Mozilla SVGComponentTransferFunctionElement.tableValues documentation> 
+getTableValues ::
+               (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+                 self -> m SVGAnimatedNumberList
+getTableValues self
+  = liftIO
+      (js_getTableValues (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"slope\"]; })" js_getSlope ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.slope Mozilla SVGComponentTransferFunctionElement.slope documentation> 
+getSlope ::
+         (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+           self -> m SVGAnimatedNumber
+getSlope self
+  = liftIO (js_getSlope (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"intercept\"]; })"
+        js_getIntercept ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.intercept Mozilla SVGComponentTransferFunctionElement.intercept documentation> 
+getIntercept ::
+             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m SVGAnimatedNumber
+getIntercept self
+  = liftIO
+      (js_getIntercept (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"amplitude\"]; })"
+        js_getAmplitude ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.amplitude Mozilla SVGComponentTransferFunctionElement.amplitude documentation> 
+getAmplitude ::
+             (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+               self -> m SVGAnimatedNumber
+getAmplitude self
+  = liftIO
+      (js_getAmplitude (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"exponent\"]; })" js_getExponent
+        :: SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.exponent Mozilla SVGComponentTransferFunctionElement.exponent documentation> 
+getExponent ::
+            (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+              self -> m SVGAnimatedNumber
+getExponent self
+  = liftIO
+      (js_getExponent (toSVGComponentTransferFunctionElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })" js_getOffset ::
+        SVGComponentTransferFunctionElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement.offset Mozilla SVGComponentTransferFunctionElement.offset documentation> 
+getOffset ::
+          (MonadIO m, IsSVGComponentTransferFunctionElement self) =>
+            self -> m SVGAnimatedNumber
+getOffset self
+  = liftIO
+      (js_getOffset (toSVGComponentTransferFunctionElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGCursorElement.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGCursorElement
+       (js_getX, getX, js_getY, getY, SVGCursorElement(..),
+        gTypeSVGCursorElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGCursorElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.x Mozilla SVGCursorElement.x documentation> 
+getX :: (MonadIO m) => SVGCursorElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGCursorElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement.y Mozilla SVGCursorElement.y documentation> 
+getY :: (MonadIO m) => SVGCursorElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGElement.hs
@@ -0,0 +1,161 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGElement
+       (js_getPresentationAttribute, getPresentationAttribute,
+        getPresentationAttribute_, js_focus, focus, js_blur, blur,
+        js_getOwnerSVGElement, getOwnerSVGElement, js_getViewportElement,
+        getViewportElement, js_setXmllang, setXmllang, js_getXmllang,
+        getXmllang, js_setXmlspace, setXmlspace, js_getXmlspace,
+        getXmlspace, js_getClassName, getClassName, js_setTabIndex,
+        setTabIndex, js_getTabIndex, getTabIndex, js_getDataset,
+        getDataset, SVGElement(..), gTypeSVGElement, IsSVGElement,
+        toSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getPresentationAttribute\"]($2); })" js_getPresentationAttribute
+        :: SVGElement -> Optional JSString -> IO CSSValue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
+getPresentationAttribute ::
+                         (MonadIO m, IsSVGElement self, ToJSString name) =>
+                           self -> Maybe name -> m CSSValue
+getPresentationAttribute self name
+  = liftIO
+      (js_getPresentationAttribute (toSVGElement self)
+         (toOptionalJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.getPresentationAttribute Mozilla SVGElement.getPresentationAttribute documentation> 
+getPresentationAttribute_ ::
+                          (MonadIO m, IsSVGElement self, ToJSString name) =>
+                            self -> Maybe name -> m ()
+getPresentationAttribute_ self name
+  = liftIO
+      (void
+         (js_getPresentationAttribute (toSVGElement self)
+            (toOptionalJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
+        SVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.focus Mozilla SVGElement.focus documentation> 
+focus :: (MonadIO m, IsSVGElement self) => self -> m ()
+focus self = liftIO (js_focus (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
+        SVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.blur Mozilla SVGElement.blur documentation> 
+blur :: (MonadIO m, IsSVGElement self) => self -> m ()
+blur self = liftIO (js_blur (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ownerSVGElement\"]; })"
+        js_getOwnerSVGElement :: SVGElement -> IO SVGSVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.ownerSVGElement Mozilla SVGElement.ownerSVGElement documentation> 
+getOwnerSVGElement ::
+                   (MonadIO m, IsSVGElement self) => self -> m SVGSVGElement
+getOwnerSVGElement self
+  = liftIO (js_getOwnerSVGElement (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewportElement\"]; })"
+        js_getViewportElement :: SVGElement -> IO SVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.viewportElement Mozilla SVGElement.viewportElement documentation> 
+getViewportElement ::
+                   (MonadIO m, IsSVGElement self) => self -> m SVGElement
+getViewportElement self
+  = liftIO (js_getViewportElement (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"xmllang\"] = $2; })"
+        js_setXmllang :: SVGElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
+setXmllang ::
+           (MonadIO m, IsSVGElement self, ToJSString val) =>
+             self -> val -> m ()
+setXmllang self val
+  = liftIO (js_setXmllang (toSVGElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"xmllang\"]; })" js_getXmllang ::
+        SVGElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmllang Mozilla SVGElement.xmllang documentation> 
+getXmllang ::
+           (MonadIO m, IsSVGElement self, FromJSString result) =>
+             self -> m result
+getXmllang self
+  = liftIO (fromJSString <$> (js_getXmllang (toSVGElement self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"xmlspace\"] = $2; })"
+        js_setXmlspace :: SVGElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
+setXmlspace ::
+            (MonadIO m, IsSVGElement self, ToJSString val) =>
+              self -> val -> m ()
+setXmlspace self val
+  = liftIO (js_setXmlspace (toSVGElement self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"xmlspace\"]; })" js_getXmlspace
+        :: SVGElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.xmlspace Mozilla SVGElement.xmlspace documentation> 
+getXmlspace ::
+            (MonadIO m, IsSVGElement self, FromJSString result) =>
+              self -> m result
+getXmlspace self
+  = liftIO (fromJSString <$> (js_getXmlspace (toSVGElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"className\"]; })"
+        js_getClassName :: SVGElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.className Mozilla SVGElement.className documentation> 
+getClassName ::
+             (MonadIO m, IsSVGElement self) => self -> m SVGAnimatedString
+getClassName self = liftIO (js_getClassName (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"tabIndex\"] = $2; })"
+        js_setTabIndex :: SVGElement -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
+setTabIndex ::
+            (MonadIO m, IsSVGElement self) => self -> Int -> m ()
+setTabIndex self val
+  = liftIO (js_setTabIndex (toSVGElement self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"tabIndex\"]; })" js_getTabIndex
+        :: SVGElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.tabIndex Mozilla SVGElement.tabIndex documentation> 
+getTabIndex :: (MonadIO m, IsSVGElement self) => self -> m Int
+getTabIndex self = liftIO (js_getTabIndex (toSVGElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dataset\"]; })" js_getDataset ::
+        SVGElement -> IO DOMStringMap
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement.dataset Mozilla SVGElement.dataset documentation> 
+getDataset ::
+           (MonadIO m, IsSVGElement self) => self -> m DOMStringMap
+getDataset self = liftIO (js_getDataset (toSVGElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGEllipseElement.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGEllipseElement
+       (js_getCx, getCx, js_getCy, getCy, js_getRx, getRx, js_getRy,
+        getRy, SVGEllipseElement(..), gTypeSVGEllipseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
+        SVGEllipseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cx Mozilla SVGEllipseElement.cx documentation> 
+getCx :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
+getCx self = liftIO (js_getCx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
+        SVGEllipseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.cy Mozilla SVGEllipseElement.cy documentation> 
+getCy :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
+getCy self = liftIO (js_getCy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })" js_getRx ::
+        SVGEllipseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.rx Mozilla SVGEllipseElement.rx documentation> 
+getRx :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
+getRx self = liftIO (js_getRx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })" js_getRy ::
+        SVGEllipseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement.ry Mozilla SVGEllipseElement.ry documentation> 
+getRy :: (MonadIO m) => SVGEllipseElement -> m SVGAnimatedLength
+getRy self = liftIO (js_getRy self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGException.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGException
+       (js_toString, toString, toString_, pattern SVG_WRONG_TYPE_ERR,
+        pattern SVG_INVALID_VALUE_ERR, pattern SVG_MATRIX_NOT_INVERTABLE,
+        js_getCode, getCode, js_getName, getName, js_getMessage,
+        getMessage, SVGException(..), gTypeSVGException)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: SVGException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => SVGException -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.toString Mozilla SVGException.toString documentation> 
+toString_ :: (MonadIO m) => SVGException -> m ()
+toString_ self = liftIO (void (js_toString self))
+pattern SVG_WRONG_TYPE_ERR = 0
+pattern SVG_INVALID_VALUE_ERR = 1
+pattern SVG_MATRIX_NOT_INVERTABLE = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        SVGException -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.code Mozilla SVGException.code documentation> 
+getCode :: (MonadIO m) => SVGException -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        SVGException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.name Mozilla SVGException.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => SVGException -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        SVGException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGException.message Mozilla SVGException.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => SVGException -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGExternalResourcesRequired.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGExternalResourcesRequired
+       (js_getExternalResourcesRequired, getExternalResourcesRequired,
+        SVGExternalResourcesRequired(..),
+        gTypeSVGExternalResourcesRequired, IsSVGExternalResourcesRequired,
+        toSVGExternalResourcesRequired)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"externalResourcesRequired\"]; })" js_getExternalResourcesRequired
+        :: SVGExternalResourcesRequired -> IO SVGAnimatedBoolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired.externalResourcesRequired Mozilla SVGExternalResourcesRequired.externalResourcesRequired documentation> 
+getExternalResourcesRequired ::
+                             (MonadIO m, IsSVGExternalResourcesRequired self) =>
+                               self -> m SVGAnimatedBoolean
+getExternalResourcesRequired self
+  = liftIO
+      (js_getExternalResourcesRequired
+         (toSVGExternalResourcesRequired self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEBlendElement.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEBlendElement
+       (pattern SVG_FEBLEND_MODE_UNKNOWN, pattern SVG_FEBLEND_MODE_NORMAL,
+        pattern SVG_FEBLEND_MODE_MULTIPLY, pattern SVG_FEBLEND_MODE_SCREEN,
+        pattern SVG_FEBLEND_MODE_DARKEN, pattern SVG_FEBLEND_MODE_LIGHTEN,
+        js_getIn1, getIn1, js_getIn2, getIn2, js_getMode, getMode,
+        SVGFEBlendElement(..), gTypeSVGFEBlendElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_FEBLEND_MODE_UNKNOWN = 0
+pattern SVG_FEBLEND_MODE_NORMAL = 1
+pattern SVG_FEBLEND_MODE_MULTIPLY = 2
+pattern SVG_FEBLEND_MODE_SCREEN = 3
+pattern SVG_FEBLEND_MODE_DARKEN = 4
+pattern SVG_FEBLEND_MODE_LIGHTEN = 5
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEBlendElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in1 Mozilla SVGFEBlendElement.in1 documentation> 
+getIn1 :: (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
+        SVGFEBlendElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.in2 Mozilla SVGFEBlendElement.in2 documentation> 
+getIn2 :: (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedString
+getIn2 self = liftIO (js_getIn2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        SVGFEBlendElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement.mode Mozilla SVGFEBlendElement.mode documentation> 
+getMode ::
+        (MonadIO m) => SVGFEBlendElement -> m SVGAnimatedEnumeration
+getMode self = liftIO (js_getMode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEColorMatrixElement.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEColorMatrixElement
+       (pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN,
+        pattern SVG_FECOLORMATRIX_TYPE_MATRIX,
+        pattern SVG_FECOLORMATRIX_TYPE_SATURATE,
+        pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE,
+        pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA, js_getIn1, getIn1,
+        js_getType, getType, js_getValues, getValues,
+        SVGFEColorMatrixElement(..), gTypeSVGFEColorMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0
+pattern SVG_FECOLORMATRIX_TYPE_MATRIX = 1
+pattern SVG_FECOLORMATRIX_TYPE_SATURATE = 2
+pattern SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3
+pattern SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEColorMatrixElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.in1 Mozilla SVGFEColorMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGFEColorMatrixElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.type Mozilla SVGFEColorMatrixElement.type documentation> 
+getType ::
+        (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedEnumeration
+getType self = liftIO (js_getType self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"values\"]; })" js_getValues ::
+        SVGFEColorMatrixElement -> IO SVGAnimatedNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement.values Mozilla SVGFEColorMatrixElement.values documentation> 
+getValues ::
+          (MonadIO m) => SVGFEColorMatrixElement -> m SVGAnimatedNumberList
+getValues self = liftIO (js_getValues self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEComponentTransferElement.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEComponentTransferElement
+       (js_getIn1, getIn1, SVGFEComponentTransferElement(..),
+        gTypeSVGFEComponentTransferElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEComponentTransferElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement.in1 Mozilla SVGFEComponentTransferElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEComponentTransferElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFECompositeElement.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFECompositeElement
+       (pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN,
+        pattern SVG_FECOMPOSITE_OPERATOR_OVER,
+        pattern SVG_FECOMPOSITE_OPERATOR_IN,
+        pattern SVG_FECOMPOSITE_OPERATOR_OUT,
+        pattern SVG_FECOMPOSITE_OPERATOR_ATOP,
+        pattern SVG_FECOMPOSITE_OPERATOR_XOR,
+        pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC, js_getIn1, getIn1,
+        js_getIn2, getIn2, js_getOperator, getOperator, js_getK1, getK1,
+        js_getK2, getK2, js_getK3, getK3, js_getK4, getK4,
+        SVGFECompositeElement(..), gTypeSVGFECompositeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0
+pattern SVG_FECOMPOSITE_OPERATOR_OVER = 1
+pattern SVG_FECOMPOSITE_OPERATOR_IN = 2
+pattern SVG_FECOMPOSITE_OPERATOR_OUT = 3
+pattern SVG_FECOMPOSITE_OPERATOR_ATOP = 4
+pattern SVG_FECOMPOSITE_OPERATOR_XOR = 5
+pattern SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFECompositeElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in1 Mozilla SVGFECompositeElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
+        SVGFECompositeElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.in2 Mozilla SVGFECompositeElement.in2 documentation> 
+getIn2 ::
+       (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedString
+getIn2 self = liftIO (js_getIn2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })" js_getOperator
+        :: SVGFECompositeElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.operator Mozilla SVGFECompositeElement.operator documentation> 
+getOperator ::
+            (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedEnumeration
+getOperator self = liftIO (js_getOperator self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"k1\"]; })" js_getK1 ::
+        SVGFECompositeElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k1 Mozilla SVGFECompositeElement.k1 documentation> 
+getK1 ::
+      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK1 self = liftIO (js_getK1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"k2\"]; })" js_getK2 ::
+        SVGFECompositeElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k2 Mozilla SVGFECompositeElement.k2 documentation> 
+getK2 ::
+      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK2 self = liftIO (js_getK2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"k3\"]; })" js_getK3 ::
+        SVGFECompositeElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k3 Mozilla SVGFECompositeElement.k3 documentation> 
+getK3 ::
+      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK3 self = liftIO (js_getK3 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"k4\"]; })" js_getK4 ::
+        SVGFECompositeElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement.k4 Mozilla SVGFECompositeElement.k4 documentation> 
+getK4 ::
+      (MonadIO m) => SVGFECompositeElement -> m SVGAnimatedNumber
+getK4 self = liftIO (js_getK4 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEConvolveMatrixElement.hs
@@ -0,0 +1,140 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEConvolveMatrixElement
+       (pattern SVG_EDGEMODE_UNKNOWN, pattern SVG_EDGEMODE_DUPLICATE,
+        pattern SVG_EDGEMODE_WRAP, pattern SVG_EDGEMODE_NONE, js_getIn1,
+        getIn1, js_getOrderX, getOrderX, js_getOrderY, getOrderY,
+        js_getKernelMatrix, getKernelMatrix, js_getDivisor, getDivisor,
+        js_getBias, getBias, js_getTargetX, getTargetX, js_getTargetY,
+        getTargetY, js_getEdgeMode, getEdgeMode, js_getKernelUnitLengthX,
+        getKernelUnitLengthX, js_getKernelUnitLengthY,
+        getKernelUnitLengthY, js_getPreserveAlpha, getPreserveAlpha,
+        SVGFEConvolveMatrixElement(..), gTypeSVGFEConvolveMatrixElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_EDGEMODE_UNKNOWN = 0
+pattern SVG_EDGEMODE_DUPLICATE = 1
+pattern SVG_EDGEMODE_WRAP = 2
+pattern SVG_EDGEMODE_NONE = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.in1 Mozilla SVGFEConvolveMatrixElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orderX\"]; })" js_getOrderX ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderX Mozilla SVGFEConvolveMatrixElement.orderX documentation> 
+getOrderX ::
+          (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderX self = liftIO (js_getOrderX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orderY\"]; })" js_getOrderY ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.orderY Mozilla SVGFEConvolveMatrixElement.orderY documentation> 
+getOrderY ::
+          (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getOrderY self = liftIO (js_getOrderY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kernelMatrix\"]; })"
+        js_getKernelMatrix ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelMatrix Mozilla SVGFEConvolveMatrixElement.kernelMatrix documentation> 
+getKernelMatrix ::
+                (MonadIO m) =>
+                  SVGFEConvolveMatrixElement -> m SVGAnimatedNumberList
+getKernelMatrix self = liftIO (js_getKernelMatrix self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"divisor\"]; })" js_getDivisor ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.divisor Mozilla SVGFEConvolveMatrixElement.divisor documentation> 
+getDivisor ::
+           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getDivisor self = liftIO (js_getDivisor self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bias\"]; })" js_getBias ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.bias Mozilla SVGFEConvolveMatrixElement.bias documentation> 
+getBias ::
+        (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getBias self = liftIO (js_getBias self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"targetX\"]; })" js_getTargetX ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetX Mozilla SVGFEConvolveMatrixElement.targetX documentation> 
+getTargetX ::
+           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetX self = liftIO (js_getTargetX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"targetY\"]; })" js_getTargetY ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.targetY Mozilla SVGFEConvolveMatrixElement.targetY documentation> 
+getTargetY ::
+           (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedInteger
+getTargetY self = liftIO (js_getTargetY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })" js_getEdgeMode
+        :: SVGFEConvolveMatrixElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.edgeMode Mozilla SVGFEConvolveMatrixElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadIO m) =>
+              SVGFEConvolveMatrixElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftIO (js_getEdgeMode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthX\"]; })"
+        js_getKernelUnitLengthX ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthX Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftIO (js_getKernelUnitLengthX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthY\"]; })"
+        js_getKernelUnitLengthY ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.kernelUnitLengthY Mozilla SVGFEConvolveMatrixElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftIO (js_getKernelUnitLengthY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAlpha\"]; })"
+        js_getPreserveAlpha ::
+        SVGFEConvolveMatrixElement -> IO SVGAnimatedBoolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement.preserveAlpha Mozilla SVGFEConvolveMatrixElement.preserveAlpha documentation> 
+getPreserveAlpha ::
+                 (MonadIO m) => SVGFEConvolveMatrixElement -> m SVGAnimatedBoolean
+getPreserveAlpha self = liftIO (js_getPreserveAlpha self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDiffuseLightingElement.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDiffuseLightingElement
+       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
+        js_getDiffuseConstant, getDiffuseConstant, js_getKernelUnitLengthX,
+        getKernelUnitLengthX, js_getKernelUnitLengthY,
+        getKernelUnitLengthY, SVGFEDiffuseLightingElement(..),
+        gTypeSVGFEDiffuseLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEDiffuseLightingElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.in1 Mozilla SVGFEDiffuseLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"surfaceScale\"]; })"
+        js_getSurfaceScale ::
+        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.surfaceScale Mozilla SVGFEDiffuseLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftIO (js_getSurfaceScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"diffuseConstant\"]; })"
+        js_getDiffuseConstant ::
+        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.diffuseConstant Mozilla SVGFEDiffuseLightingElement.diffuseConstant documentation> 
+getDiffuseConstant ::
+                   (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getDiffuseConstant self = liftIO (js_getDiffuseConstant self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthX\"]; })"
+        js_getKernelUnitLengthX ::
+        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthX Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthX documentation> 
+getKernelUnitLengthX ::
+                     (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthX self = liftIO (js_getKernelUnitLengthX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kernelUnitLengthY\"]; })"
+        js_getKernelUnitLengthY ::
+        SVGFEDiffuseLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement.kernelUnitLengthY Mozilla SVGFEDiffuseLightingElement.kernelUnitLengthY documentation> 
+getKernelUnitLengthY ::
+                     (MonadIO m) => SVGFEDiffuseLightingElement -> m SVGAnimatedNumber
+getKernelUnitLengthY self = liftIO (js_getKernelUnitLengthY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDisplacementMapElement.hs
@@ -0,0 +1,80 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDisplacementMapElement
+       (pattern SVG_CHANNEL_UNKNOWN, pattern SVG_CHANNEL_R,
+        pattern SVG_CHANNEL_G, pattern SVG_CHANNEL_B,
+        pattern SVG_CHANNEL_A, js_getIn1, getIn1, js_getIn2, getIn2,
+        js_getScale, getScale, js_getXChannelSelector, getXChannelSelector,
+        js_getYChannelSelector, getYChannelSelector,
+        SVGFEDisplacementMapElement(..), gTypeSVGFEDisplacementMapElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_CHANNEL_UNKNOWN = 0
+pattern SVG_CHANNEL_R = 1
+pattern SVG_CHANNEL_G = 2
+pattern SVG_CHANNEL_B = 3
+pattern SVG_CHANNEL_A = 4
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEDisplacementMapElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in1 Mozilla SVGFEDisplacementMapElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in2\"]; })" js_getIn2 ::
+        SVGFEDisplacementMapElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.in2 Mozilla SVGFEDisplacementMapElement.in2 documentation> 
+getIn2 ::
+       (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedString
+getIn2 self = liftIO (js_getIn2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scale\"]; })" js_getScale ::
+        SVGFEDisplacementMapElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.scale Mozilla SVGFEDisplacementMapElement.scale documentation> 
+getScale ::
+         (MonadIO m) => SVGFEDisplacementMapElement -> m SVGAnimatedNumber
+getScale self = liftIO (js_getScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"xChannelSelector\"]; })"
+        js_getXChannelSelector ::
+        SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.xChannelSelector Mozilla SVGFEDisplacementMapElement.xChannelSelector documentation> 
+getXChannelSelector ::
+                    (MonadIO m) =>
+                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getXChannelSelector self = liftIO (js_getXChannelSelector self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"yChannelSelector\"]; })"
+        js_getYChannelSelector ::
+        SVGFEDisplacementMapElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement.yChannelSelector Mozilla SVGFEDisplacementMapElement.yChannelSelector documentation> 
+getYChannelSelector ::
+                    (MonadIO m) =>
+                      SVGFEDisplacementMapElement -> m SVGAnimatedEnumeration
+getYChannelSelector self = liftIO (js_getYChannelSelector self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDistantLightElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDistantLightElement
+       (js_getAzimuth, getAzimuth, js_getElevation, getElevation,
+        SVGFEDistantLightElement(..), gTypeSVGFEDistantLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"azimuth\"]; })" js_getAzimuth ::
+        SVGFEDistantLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.azimuth Mozilla SVGFEDistantLightElement.azimuth documentation> 
+getAzimuth ::
+           (MonadIO m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getAzimuth self = liftIO (js_getAzimuth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elevation\"]; })"
+        js_getElevation :: SVGFEDistantLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement.elevation Mozilla SVGFEDistantLightElement.elevation documentation> 
+getElevation ::
+             (MonadIO m) => SVGFEDistantLightElement -> m SVGAnimatedNumber
+getElevation self = liftIO (js_getElevation self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEDropShadowElement.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEDropShadowElement
+       (js_setStdDeviation, setStdDeviation, js_getIn1, getIn1, js_getDx,
+        getDx, js_getDy, getDy, js_getStdDeviationX, getStdDeviationX,
+        js_getStdDeviationY, getStdDeviationY, SVGFEDropShadowElement(..),
+        gTypeSVGFEDropShadowElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
+        js_setStdDeviation ::
+        SVGFEDropShadowElement -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.setStdDeviation Mozilla SVGFEDropShadowElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadIO m) =>
+                  SVGFEDropShadowElement -> Maybe Float -> Maybe Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftIO
+      (js_setStdDeviation self (maybeToOptional stdDeviationX)
+         (maybeToOptional stdDeviationY))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEDropShadowElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.in1 Mozilla SVGFEDropShadowElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
+        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dx Mozilla SVGFEDropShadowElement.dx documentation> 
+getDx ::
+      (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDx self = liftIO (js_getDx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
+        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.dy Mozilla SVGFEDropShadowElement.dy documentation> 
+getDy ::
+      (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getDy self = liftIO (js_getDy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationX\"]; })"
+        js_getStdDeviationX ::
+        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationX Mozilla SVGFEDropShadowElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftIO (js_getStdDeviationX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationY\"]; })"
+        js_getStdDeviationY ::
+        SVGFEDropShadowElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement.stdDeviationY Mozilla SVGFEDropShadowElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadIO m) => SVGFEDropShadowElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftIO (js_getStdDeviationY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEGaussianBlurElement.hs
@@ -0,0 +1,83 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEGaussianBlurElement
+       (js_setStdDeviation, setStdDeviation, pattern SVG_EDGEMODE_UNKNOWN,
+        pattern SVG_EDGEMODE_DUPLICATE, pattern SVG_EDGEMODE_WRAP,
+        pattern SVG_EDGEMODE_NONE, js_getIn1, getIn1, js_getStdDeviationX,
+        getStdDeviationX, js_getStdDeviationY, getStdDeviationY,
+        js_getEdgeMode, getEdgeMode, SVGFEGaussianBlurElement(..),
+        gTypeSVGFEGaussianBlurElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setStdDeviation\"]($2, $3); })"
+        js_setStdDeviation ::
+        SVGFEGaussianBlurElement ->
+          Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.setStdDeviation Mozilla SVGFEGaussianBlurElement.setStdDeviation documentation> 
+setStdDeviation ::
+                (MonadIO m) =>
+                  SVGFEGaussianBlurElement -> Maybe Float -> Maybe Float -> m ()
+setStdDeviation self stdDeviationX stdDeviationY
+  = liftIO
+      (js_setStdDeviation self (maybeToOptional stdDeviationX)
+         (maybeToOptional stdDeviationY))
+pattern SVG_EDGEMODE_UNKNOWN = 0
+pattern SVG_EDGEMODE_DUPLICATE = 1
+pattern SVG_EDGEMODE_WRAP = 2
+pattern SVG_EDGEMODE_NONE = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEGaussianBlurElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.in1 Mozilla SVGFEGaussianBlurElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationX\"]; })"
+        js_getStdDeviationX ::
+        SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationX Mozilla SVGFEGaussianBlurElement.stdDeviationX documentation> 
+getStdDeviationX ::
+                 (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationX self = liftIO (js_getStdDeviationX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stdDeviationY\"]; })"
+        js_getStdDeviationY ::
+        SVGFEGaussianBlurElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.stdDeviationY Mozilla SVGFEGaussianBlurElement.stdDeviationY documentation> 
+getStdDeviationY ::
+                 (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedNumber
+getStdDeviationY self = liftIO (js_getStdDeviationY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"edgeMode\"]; })" js_getEdgeMode
+        :: SVGFEGaussianBlurElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement.edgeMode Mozilla SVGFEGaussianBlurElement.edgeMode documentation> 
+getEdgeMode ::
+            (MonadIO m) => SVGFEGaussianBlurElement -> m SVGAnimatedEnumeration
+getEdgeMode self = liftIO (js_getEdgeMode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEImageElement.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEImageElement
+       (js_getPreserveAspectRatio, getPreserveAspectRatio,
+        SVGFEImageElement(..), gTypeSVGFEImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
+        js_getPreserveAspectRatio ::
+        SVGFEImageElement -> IO SVGAnimatedPreserveAspectRatio
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement.preserveAspectRatio Mozilla SVGFEImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m) =>
+                         SVGFEImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self
+  = liftIO (js_getPreserveAspectRatio self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMergeNodeElement.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEMergeNodeElement
+       (js_getIn1, getIn1, SVGFEMergeNodeElement(..),
+        gTypeSVGFEMergeNodeElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEMergeNodeElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement.in1 Mozilla SVGFEMergeNodeElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEMergeNodeElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEMorphologyElement.hs
@@ -0,0 +1,79 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEMorphologyElement
+       (js_setRadius, setRadius, pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN,
+        pattern SVG_MORPHOLOGY_OPERATOR_ERODE,
+        pattern SVG_MORPHOLOGY_OPERATOR_DILATE, js_getIn1, getIn1,
+        js_getOperator, getOperator, js_getRadiusX, getRadiusX,
+        js_getRadiusY, getRadiusY, SVGFEMorphologyElement(..),
+        gTypeSVGFEMorphologyElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setRadius\"]($2, $3); })"
+        js_setRadius ::
+        SVGFEMorphologyElement -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.setRadius Mozilla SVGFEMorphologyElement.setRadius documentation> 
+setRadius ::
+          (MonadIO m) =>
+            SVGFEMorphologyElement -> Maybe Float -> Maybe Float -> m ()
+setRadius self radiusX radiusY
+  = liftIO
+      (js_setRadius self (maybeToOptional radiusX)
+         (maybeToOptional radiusY))
+pattern SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0
+pattern SVG_MORPHOLOGY_OPERATOR_ERODE = 1
+pattern SVG_MORPHOLOGY_OPERATOR_DILATE = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEMorphologyElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.in1 Mozilla SVGFEMorphologyElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"operator\"]; })" js_getOperator
+        :: SVGFEMorphologyElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.operator Mozilla SVGFEMorphologyElement.operator documentation> 
+getOperator ::
+            (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedEnumeration
+getOperator self = liftIO (js_getOperator self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"radiusX\"]; })" js_getRadiusX ::
+        SVGFEMorphologyElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusX Mozilla SVGFEMorphologyElement.radiusX documentation> 
+getRadiusX ::
+           (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusX self = liftIO (js_getRadiusX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"radiusY\"]; })" js_getRadiusY ::
+        SVGFEMorphologyElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement.radiusY Mozilla SVGFEMorphologyElement.radiusY documentation> 
+getRadiusY ::
+           (MonadIO m) => SVGFEMorphologyElement -> m SVGAnimatedNumber
+getRadiusY self = liftIO (js_getRadiusY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEOffsetElement.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEOffsetElement
+       (js_getIn1, getIn1, js_getDx, getDx, js_getDy, getDy,
+        SVGFEOffsetElement(..), gTypeSVGFEOffsetElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFEOffsetElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.in1 Mozilla SVGFEOffsetElement.in1 documentation> 
+getIn1 :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
+        SVGFEOffsetElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dx Mozilla SVGFEOffsetElement.dx documentation> 
+getDx :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedNumber
+getDx self = liftIO (js_getDx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
+        SVGFEOffsetElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement.dy Mozilla SVGFEOffsetElement.dy documentation> 
+getDy :: (MonadIO m) => SVGFEOffsetElement -> m SVGAnimatedNumber
+getDy self = liftIO (js_getDy self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFEPointLightElement.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFEPointLightElement
+       (js_getX, getX, js_getY, getY, js_getZ, getZ,
+        SVGFEPointLightElement(..), gTypeSVGFEPointLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGFEPointLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.x Mozilla SVGFEPointLightElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGFEPointLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.y Mozilla SVGFEPointLightElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
+        SVGFEPointLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement.z Mozilla SVGFEPointLightElement.z documentation> 
+getZ ::
+     (MonadIO m) => SVGFEPointLightElement -> m SVGAnimatedNumber
+getZ self = liftIO (js_getZ self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpecularLightingElement.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFESpecularLightingElement
+       (js_getIn1, getIn1, js_getSurfaceScale, getSurfaceScale,
+        js_getSpecularConstant, getSpecularConstant,
+        js_getSpecularExponent, getSpecularExponent,
+        SVGFESpecularLightingElement(..),
+        gTypeSVGFESpecularLightingElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFESpecularLightingElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.in1 Mozilla SVGFESpecularLightingElement.in1 documentation> 
+getIn1 ::
+       (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"surfaceScale\"]; })"
+        js_getSurfaceScale ::
+        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.surfaceScale Mozilla SVGFESpecularLightingElement.surfaceScale documentation> 
+getSurfaceScale ::
+                (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSurfaceScale self = liftIO (js_getSurfaceScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"specularConstant\"]; })"
+        js_getSpecularConstant ::
+        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularConstant Mozilla SVGFESpecularLightingElement.specularConstant documentation> 
+getSpecularConstant ::
+                    (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularConstant self = liftIO (js_getSpecularConstant self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"specularExponent\"]; })"
+        js_getSpecularExponent ::
+        SVGFESpecularLightingElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement.specularExponent Mozilla SVGFESpecularLightingElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadIO m) => SVGFESpecularLightingElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftIO (js_getSpecularExponent self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFESpotLightElement.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFESpotLightElement
+       (js_getX, getX, js_getY, getY, js_getZ, getZ, js_getPointsAtX,
+        getPointsAtX, js_getPointsAtY, getPointsAtY, js_getPointsAtZ,
+        getPointsAtZ, js_getSpecularExponent, getSpecularExponent,
+        js_getLimitingConeAngle, getLimitingConeAngle,
+        SVGFESpotLightElement(..), gTypeSVGFESpotLightElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.x Mozilla SVGFESpotLightElement.x documentation> 
+getX :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.y Mozilla SVGFESpotLightElement.y documentation> 
+getY :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"z\"]; })" js_getZ ::
+        SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.z Mozilla SVGFESpotLightElement.z documentation> 
+getZ :: (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getZ self = liftIO (js_getZ self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pointsAtX\"]; })"
+        js_getPointsAtX :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtX Mozilla SVGFESpotLightElement.pointsAtX documentation> 
+getPointsAtX ::
+             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtX self = liftIO (js_getPointsAtX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pointsAtY\"]; })"
+        js_getPointsAtY :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtY Mozilla SVGFESpotLightElement.pointsAtY documentation> 
+getPointsAtY ::
+             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtY self = liftIO (js_getPointsAtY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pointsAtZ\"]; })"
+        js_getPointsAtZ :: SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.pointsAtZ Mozilla SVGFESpotLightElement.pointsAtZ documentation> 
+getPointsAtZ ::
+             (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getPointsAtZ self = liftIO (js_getPointsAtZ self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"specularExponent\"]; })"
+        js_getSpecularExponent ::
+        SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.specularExponent Mozilla SVGFESpotLightElement.specularExponent documentation> 
+getSpecularExponent ::
+                    (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getSpecularExponent self = liftIO (js_getSpecularExponent self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"limitingConeAngle\"]; })"
+        js_getLimitingConeAngle ::
+        SVGFESpotLightElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement.limitingConeAngle Mozilla SVGFESpotLightElement.limitingConeAngle documentation> 
+getLimitingConeAngle ::
+                     (MonadIO m) => SVGFESpotLightElement -> m SVGAnimatedNumber
+getLimitingConeAngle self = liftIO (js_getLimitingConeAngle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETileElement.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFETileElement
+       (js_getIn1, getIn1, SVGFETileElement(..), gTypeSVGFETileElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"in1\"]; })" js_getIn1 ::
+        SVGFETileElement -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement.in1 Mozilla SVGFETileElement.in1 documentation> 
+getIn1 :: (MonadIO m) => SVGFETileElement -> m SVGAnimatedString
+getIn1 self = liftIO (js_getIn1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFETurbulenceElement.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFETurbulenceElement
+       (pattern SVG_TURBULENCE_TYPE_UNKNOWN,
+        pattern SVG_TURBULENCE_TYPE_FRACTALNOISE,
+        pattern SVG_TURBULENCE_TYPE_TURBULENCE,
+        pattern SVG_STITCHTYPE_UNKNOWN, pattern SVG_STITCHTYPE_STITCH,
+        pattern SVG_STITCHTYPE_NOSTITCH, js_getBaseFrequencyX,
+        getBaseFrequencyX, js_getBaseFrequencyY, getBaseFrequencyY,
+        js_getNumOctaves, getNumOctaves, js_getSeed, getSeed,
+        js_getStitchTiles, getStitchTiles, js_getType, getType,
+        SVGFETurbulenceElement(..), gTypeSVGFETurbulenceElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_TURBULENCE_TYPE_UNKNOWN = 0
+pattern SVG_TURBULENCE_TYPE_FRACTALNOISE = 1
+pattern SVG_TURBULENCE_TYPE_TURBULENCE = 2
+pattern SVG_STITCHTYPE_UNKNOWN = 0
+pattern SVG_STITCHTYPE_STITCH = 1
+pattern SVG_STITCHTYPE_NOSTITCH = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseFrequencyX\"]; })"
+        js_getBaseFrequencyX ::
+        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyX Mozilla SVGFETurbulenceElement.baseFrequencyX documentation> 
+getBaseFrequencyX ::
+                  (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyX self = liftIO (js_getBaseFrequencyX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseFrequencyY\"]; })"
+        js_getBaseFrequencyY ::
+        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.baseFrequencyY Mozilla SVGFETurbulenceElement.baseFrequencyY documentation> 
+getBaseFrequencyY ::
+                  (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getBaseFrequencyY self = liftIO (js_getBaseFrequencyY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numOctaves\"]; })"
+        js_getNumOctaves :: SVGFETurbulenceElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.numOctaves Mozilla SVGFETurbulenceElement.numOctaves documentation> 
+getNumOctaves ::
+              (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedInteger
+getNumOctaves self = liftIO (js_getNumOctaves self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"seed\"]; })" js_getSeed ::
+        SVGFETurbulenceElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.seed Mozilla SVGFETurbulenceElement.seed documentation> 
+getSeed ::
+        (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedNumber
+getSeed self = liftIO (js_getSeed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stitchTiles\"]; })"
+        js_getStitchTiles ::
+        SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.stitchTiles Mozilla SVGFETurbulenceElement.stitchTiles documentation> 
+getStitchTiles ::
+               (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getStitchTiles self = liftIO (js_getStitchTiles self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGFETurbulenceElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement.type Mozilla SVGFETurbulenceElement.type documentation> 
+getType ::
+        (MonadIO m) => SVGFETurbulenceElement -> m SVGAnimatedEnumeration
+getType self = liftIO (js_getType self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterElement.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFilterElement
+       (js_setFilterRes, setFilterRes, js_getFilterUnits, getFilterUnits,
+        js_getPrimitiveUnits, getPrimitiveUnits, js_getX, getX, js_getY,
+        getY, js_getWidth, getWidth, js_getHeight, getHeight,
+        js_getFilterResX, getFilterResX, js_getFilterResY, getFilterResY,
+        SVGFilterElement(..), gTypeSVGFilterElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setFilterRes\"]($2, $3); })"
+        js_setFilterRes ::
+        SVGFilterElement -> Optional Word -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.setFilterRes Mozilla SVGFilterElement.setFilterRes documentation> 
+setFilterRes ::
+             (MonadIO m) => SVGFilterElement -> Maybe Word -> Maybe Word -> m ()
+setFilterRes self filterResX filterResY
+  = liftIO
+      (js_setFilterRes self (maybeToOptional filterResX)
+         (maybeToOptional filterResY))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"filterUnits\"]; })"
+        js_getFilterUnits :: SVGFilterElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterUnits Mozilla SVGFilterElement.filterUnits documentation> 
+getFilterUnits ::
+               (MonadIO m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getFilterUnits self = liftIO (js_getFilterUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"primitiveUnits\"]; })"
+        js_getPrimitiveUnits ::
+        SVGFilterElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.primitiveUnits Mozilla SVGFilterElement.primitiveUnits documentation> 
+getPrimitiveUnits ::
+                  (MonadIO m) => SVGFilterElement -> m SVGAnimatedEnumeration
+getPrimitiveUnits self = liftIO (js_getPrimitiveUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGFilterElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.x Mozilla SVGFilterElement.x documentation> 
+getX :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGFilterElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.y Mozilla SVGFilterElement.y documentation> 
+getY :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGFilterElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.width Mozilla SVGFilterElement.width documentation> 
+getWidth :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGFilterElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.height Mozilla SVGFilterElement.height documentation> 
+getHeight :: (MonadIO m) => SVGFilterElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"filterResX\"]; })"
+        js_getFilterResX :: SVGFilterElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResX Mozilla SVGFilterElement.filterResX documentation> 
+getFilterResX ::
+              (MonadIO m) => SVGFilterElement -> m SVGAnimatedInteger
+getFilterResX self = liftIO (js_getFilterResX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"filterResY\"]; })"
+        js_getFilterResY :: SVGFilterElement -> IO SVGAnimatedInteger
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement.filterResY Mozilla SVGFilterElement.filterResY documentation> 
+getFilterResY ::
+              (MonadIO m) => SVGFilterElement -> m SVGAnimatedInteger
+getFilterResY self = liftIO (js_getFilterResY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFilterPrimitiveStandardAttributes.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFilterPrimitiveStandardAttributes
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, js_getResult, getResult,
+        SVGFilterPrimitiveStandardAttributes(..),
+        gTypeSVGFilterPrimitiveStandardAttributes,
+        IsSVGFilterPrimitiveStandardAttributes,
+        toSVGFilterPrimitiveStandardAttributes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.x Mozilla SVGFilterPrimitiveStandardAttributes.x documentation> 
+getX ::
+     (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
+       self -> m SVGAnimatedLength
+getX self
+  = liftIO (js_getX (toSVGFilterPrimitiveStandardAttributes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.y Mozilla SVGFilterPrimitiveStandardAttributes.y documentation> 
+getY ::
+     (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
+       self -> m SVGAnimatedLength
+getY self
+  = liftIO (js_getY (toSVGFilterPrimitiveStandardAttributes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.width Mozilla SVGFilterPrimitiveStandardAttributes.width documentation> 
+getWidth ::
+         (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
+           self -> m SVGAnimatedLength
+getWidth self
+  = liftIO
+      (js_getWidth (toSVGFilterPrimitiveStandardAttributes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.height Mozilla SVGFilterPrimitiveStandardAttributes.height documentation> 
+getHeight ::
+          (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
+            self -> m SVGAnimatedLength
+getHeight self
+  = liftIO
+      (js_getHeight (toSVGFilterPrimitiveStandardAttributes self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"result\"]; })" js_getResult ::
+        SVGFilterPrimitiveStandardAttributes -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes.result Mozilla SVGFilterPrimitiveStandardAttributes.result documentation> 
+getResult ::
+          (MonadIO m, IsSVGFilterPrimitiveStandardAttributes self) =>
+            self -> m SVGAnimatedString
+getResult self
+  = liftIO
+      (js_getResult (toSVGFilterPrimitiveStandardAttributes self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGFitToViewBox.hs
@@ -0,0 +1,47 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGFitToViewBox
+       (js_getViewBox, getViewBox, js_getPreserveAspectRatio,
+        getPreserveAspectRatio, SVGFitToViewBox(..), gTypeSVGFitToViewBox,
+        IsSVGFitToViewBox, toSVGFitToViewBox)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewBox\"]; })" js_getViewBox ::
+        SVGFitToViewBox -> IO SVGAnimatedRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.viewBox Mozilla SVGFitToViewBox.viewBox documentation> 
+getViewBox ::
+           (MonadIO m, IsSVGFitToViewBox self) => self -> m SVGAnimatedRect
+getViewBox self = liftIO (js_getViewBox (toSVGFitToViewBox self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
+        js_getPreserveAspectRatio ::
+        SVGFitToViewBox -> IO SVGAnimatedPreserveAspectRatio
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox.preserveAspectRatio Mozilla SVGFitToViewBox.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m, IsSVGFitToViewBox self) =>
+                         self -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self
+  = liftIO (js_getPreserveAspectRatio (toSVGFitToViewBox self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGForeignObjectElement.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGForeignObjectElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, SVGForeignObjectElement(..),
+        gTypeSVGForeignObjectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGForeignObjectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.x Mozilla SVGForeignObjectElement.x documentation> 
+getX ::
+     (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGForeignObjectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.y Mozilla SVGForeignObjectElement.y documentation> 
+getY ::
+     (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGForeignObjectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.width Mozilla SVGForeignObjectElement.width documentation> 
+getWidth ::
+         (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGForeignObjectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement.height Mozilla SVGForeignObjectElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGForeignObjectElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGlyphRefElement.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGGlyphRefElement
+       (js_setGlyphRef, setGlyphRef, js_getGlyphRef, getGlyphRef,
+        js_setFormat, setFormat, js_getFormat, getFormat, js_setX, setX,
+        js_getX, getX, js_setY, setY, js_getY, getY, js_setDx, setDx,
+        js_getDx, getDx, js_setDy, setDy, js_getDy, getDy,
+        SVGGlyphRefElement(..), gTypeSVGGlyphRefElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"glyphRef\"] = $2; })"
+        js_setGlyphRef :: SVGGlyphRefElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
+setGlyphRef ::
+            (MonadIO m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
+setGlyphRef self val
+  = liftIO (js_setGlyphRef self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"glyphRef\"]; })" js_getGlyphRef
+        :: SVGGlyphRefElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.glyphRef Mozilla SVGGlyphRefElement.glyphRef documentation> 
+getGlyphRef ::
+            (MonadIO m, FromJSString result) => SVGGlyphRefElement -> m result
+getGlyphRef self = liftIO (fromJSString <$> (js_getGlyphRef self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"format\"] = $2; })"
+        js_setFormat :: SVGGlyphRefElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
+setFormat ::
+          (MonadIO m, ToJSString val) => SVGGlyphRefElement -> val -> m ()
+setFormat self val = liftIO (js_setFormat self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"format\"]; })" js_getFormat ::
+        SVGGlyphRefElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.format Mozilla SVGGlyphRefElement.format documentation> 
+getFormat ::
+          (MonadIO m, FromJSString result) => SVGGlyphRefElement -> m result
+getFormat self = liftIO (fromJSString <$> (js_getFormat self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGGlyphRefElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
+setX :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGGlyphRefElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.x Mozilla SVGGlyphRefElement.x documentation> 
+getX :: (MonadIO m) => SVGGlyphRefElement -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGGlyphRefElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
+setY :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGGlyphRefElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.y Mozilla SVGGlyphRefElement.y documentation> 
+getY :: (MonadIO m) => SVGGlyphRefElement -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dx\"] = $2; })" js_setDx ::
+        SVGGlyphRefElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
+setDx :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
+setDx self val = liftIO (js_setDx self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
+        SVGGlyphRefElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dx Mozilla SVGGlyphRefElement.dx documentation> 
+getDx :: (MonadIO m) => SVGGlyphRefElement -> m Float
+getDx self = liftIO (js_getDx self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"dy\"] = $2; })" js_setDy ::
+        SVGGlyphRefElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
+setDy :: (MonadIO m) => SVGGlyphRefElement -> Float -> m ()
+setDy self val = liftIO (js_setDy self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
+        SVGGlyphRefElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement.dy Mozilla SVGGlyphRefElement.dy documentation> 
+getDy :: (MonadIO m) => SVGGlyphRefElement -> m Float
+getDy self = liftIO (js_getDy self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGradientElement.hs
@@ -0,0 +1,68 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGGradientElement
+       (pattern SVG_SPREADMETHOD_UNKNOWN, pattern SVG_SPREADMETHOD_PAD,
+        pattern SVG_SPREADMETHOD_REFLECT, pattern SVG_SPREADMETHOD_REPEAT,
+        js_getGradientUnits, getGradientUnits, js_getGradientTransform,
+        getGradientTransform, js_getSpreadMethod, getSpreadMethod,
+        SVGGradientElement(..), gTypeSVGGradientElement,
+        IsSVGGradientElement, toSVGGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_SPREADMETHOD_UNKNOWN = 0
+pattern SVG_SPREADMETHOD_PAD = 1
+pattern SVG_SPREADMETHOD_REFLECT = 2
+pattern SVG_SPREADMETHOD_REPEAT = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gradientUnits\"]; })"
+        js_getGradientUnits ::
+        SVGGradientElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientUnits Mozilla SVGGradientElement.gradientUnits documentation> 
+getGradientUnits ::
+                 (MonadIO m, IsSVGGradientElement self) =>
+                   self -> m SVGAnimatedEnumeration
+getGradientUnits self
+  = liftIO (js_getGradientUnits (toSVGGradientElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"gradientTransform\"]; })"
+        js_getGradientTransform ::
+        SVGGradientElement -> IO SVGAnimatedTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.gradientTransform Mozilla SVGGradientElement.gradientTransform documentation> 
+getGradientTransform ::
+                     (MonadIO m, IsSVGGradientElement self) =>
+                       self -> m SVGAnimatedTransformList
+getGradientTransform self
+  = liftIO (js_getGradientTransform (toSVGGradientElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"spreadMethod\"]; })"
+        js_getSpreadMethod ::
+        SVGGradientElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement.spreadMethod Mozilla SVGGradientElement.spreadMethod documentation> 
+getSpreadMethod ::
+                (MonadIO m, IsSVGGradientElement self) =>
+                  self -> m SVGAnimatedEnumeration
+getSpreadMethod self
+  = liftIO (js_getSpreadMethod (toSVGGradientElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGGraphicsElement.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGGraphicsElement
+       (js_getBBox, getBBox, getBBox_, js_getCTM, getCTM, getCTM_,
+        js_getScreenCTM, getScreenCTM, getScreenCTM_,
+        js_getTransformToElement, getTransformToElement,
+        getTransformToElement_, js_getTransform, getTransform,
+        js_getNearestViewportElement, getNearestViewportElement,
+        js_getFarthestViewportElement, getFarthestViewportElement,
+        SVGGraphicsElement(..), gTypeSVGGraphicsElement,
+        IsSVGGraphicsElement, toSVGGraphicsElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getBBox\"](); })" js_getBBox ::
+        SVGGraphicsElement -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+getBBox ::
+        (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGRect
+getBBox self = liftIO (js_getBBox (toSVGGraphicsElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getBBox Mozilla SVGGraphicsElement.getBBox documentation> 
+getBBox_ :: (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
+getBBox_ self
+  = liftIO (void (js_getBBox (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getCTM\"](); })" js_getCTM ::
+        SVGGraphicsElement -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+getCTM ::
+       (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGMatrix
+getCTM self = liftIO (js_getCTM (toSVGGraphicsElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getCTM Mozilla SVGGraphicsElement.getCTM documentation> 
+getCTM_ :: (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
+getCTM_ self
+  = liftIO (void (js_getCTM (toSVGGraphicsElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getScreenCTM\"](); })"
+        js_getScreenCTM :: SVGGraphicsElement -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
+getScreenCTM ::
+             (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGMatrix
+getScreenCTM self
+  = liftIO (js_getScreenCTM (toSVGGraphicsElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getScreenCTM Mozilla SVGGraphicsElement.getScreenCTM documentation> 
+getScreenCTM_ ::
+              (MonadIO m, IsSVGGraphicsElement self) => self -> m ()
+getScreenCTM_ self
+  = liftIO (void (js_getScreenCTM (toSVGGraphicsElement self)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getTransformToElement\"]($2); })"
+        js_getTransformToElement ::
+        SVGGraphicsElement -> Optional SVGElement -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
+getTransformToElement ::
+                      (MonadIO m, IsSVGGraphicsElement self, IsSVGElement element) =>
+                        self -> Maybe element -> m SVGMatrix
+getTransformToElement self element
+  = liftIO
+      (js_getTransformToElement (toSVGGraphicsElement self)
+         (maybeToOptional (fmap toSVGElement element)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.getTransformToElement Mozilla SVGGraphicsElement.getTransformToElement documentation> 
+getTransformToElement_ ::
+                       (MonadIO m, IsSVGGraphicsElement self, IsSVGElement element) =>
+                         self -> Maybe element -> m ()
+getTransformToElement_ self element
+  = liftIO
+      (void
+         (js_getTransformToElement (toSVGGraphicsElement self)
+            (maybeToOptional (fmap toSVGElement element))))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform ::
+        SVGGraphicsElement -> IO SVGAnimatedTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.transform Mozilla SVGGraphicsElement.transform documentation> 
+getTransform ::
+             (MonadIO m, IsSVGGraphicsElement self) =>
+               self -> m SVGAnimatedTransformList
+getTransform self
+  = liftIO (js_getTransform (toSVGGraphicsElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nearestViewportElement\"]; })"
+        js_getNearestViewportElement :: SVGGraphicsElement -> IO SVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.nearestViewportElement Mozilla SVGGraphicsElement.nearestViewportElement documentation> 
+getNearestViewportElement ::
+                          (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGElement
+getNearestViewportElement self
+  = liftIO (js_getNearestViewportElement (toSVGGraphicsElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"farthestViewportElement\"]; })"
+        js_getFarthestViewportElement ::
+        SVGGraphicsElement -> IO SVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement.farthestViewportElement Mozilla SVGGraphicsElement.farthestViewportElement documentation> 
+getFarthestViewportElement ::
+                           (MonadIO m, IsSVGGraphicsElement self) => self -> m SVGElement
+getFarthestViewportElement self
+  = liftIO
+      (js_getFarthestViewportElement (toSVGGraphicsElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGImageElement.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGImageElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, js_getPreserveAspectRatio, getPreserveAspectRatio,
+        SVGImageElement(..), gTypeSVGImageElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGImageElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.x Mozilla SVGImageElement.x documentation> 
+getX :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGImageElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.y Mozilla SVGImageElement.y documentation> 
+getY :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGImageElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.width Mozilla SVGImageElement.width documentation> 
+getWidth :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGImageElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.height Mozilla SVGImageElement.height documentation> 
+getHeight :: (MonadIO m) => SVGImageElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"preserveAspectRatio\"]; })"
+        js_getPreserveAspectRatio ::
+        SVGImageElement -> IO SVGAnimatedPreserveAspectRatio
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement.preserveAspectRatio Mozilla SVGImageElement.preserveAspectRatio documentation> 
+getPreserveAspectRatio ::
+                       (MonadIO m) => SVGImageElement -> m SVGAnimatedPreserveAspectRatio
+getPreserveAspectRatio self
+  = liftIO (js_getPreserveAspectRatio self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLength.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLength
+       (js_newValueSpecifiedUnits, newValueSpecifiedUnits,
+        js_convertToSpecifiedUnits, convertToSpecifiedUnits,
+        pattern SVG_LENGTHTYPE_UNKNOWN, pattern SVG_LENGTHTYPE_NUMBER,
+        pattern SVG_LENGTHTYPE_PERCENTAGE, pattern SVG_LENGTHTYPE_EMS,
+        pattern SVG_LENGTHTYPE_EXS, pattern SVG_LENGTHTYPE_PX,
+        pattern SVG_LENGTHTYPE_CM, pattern SVG_LENGTHTYPE_MM,
+        pattern SVG_LENGTHTYPE_IN, pattern SVG_LENGTHTYPE_PT,
+        pattern SVG_LENGTHTYPE_PC, js_getUnitType, getUnitType,
+        js_setValue, setValue, js_getValue, getValue,
+        js_setValueInSpecifiedUnits, setValueInSpecifiedUnits,
+        js_getValueInSpecifiedUnits, getValueInSpecifiedUnits,
+        js_setValueAsString, setValueAsString, js_getValueAsString,
+        getValueAsString, SVGLength(..), gTypeSVGLength)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"newValueSpecifiedUnits\"]($2,\n$3); })" js_newValueSpecifiedUnits
+        :: SVGLength -> Word -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.newValueSpecifiedUnits Mozilla SVGLength.newValueSpecifiedUnits documentation> 
+newValueSpecifiedUnits ::
+                       (MonadIO m) => SVGLength -> Word -> Float -> m ()
+newValueSpecifiedUnits self unitType valueInSpecifiedUnits
+  = liftIO
+      (js_newValueSpecifiedUnits self unitType valueInSpecifiedUnits)
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"convertToSpecifiedUnits\"]($2); })" js_convertToSpecifiedUnits ::
+        SVGLength -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.convertToSpecifiedUnits Mozilla SVGLength.convertToSpecifiedUnits documentation> 
+convertToSpecifiedUnits :: (MonadIO m) => SVGLength -> Word -> m ()
+convertToSpecifiedUnits self unitType
+  = liftIO (js_convertToSpecifiedUnits self unitType)
+pattern SVG_LENGTHTYPE_UNKNOWN = 0
+pattern SVG_LENGTHTYPE_NUMBER = 1
+pattern SVG_LENGTHTYPE_PERCENTAGE = 2
+pattern SVG_LENGTHTYPE_EMS = 3
+pattern SVG_LENGTHTYPE_EXS = 4
+pattern SVG_LENGTHTYPE_PX = 5
+pattern SVG_LENGTHTYPE_CM = 6
+pattern SVG_LENGTHTYPE_MM = 7
+pattern SVG_LENGTHTYPE_IN = 8
+pattern SVG_LENGTHTYPE_PT = 9
+pattern SVG_LENGTHTYPE_PC = 10
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unitType\"]; })" js_getUnitType
+        :: SVGLength -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.unitType Mozilla SVGLength.unitType documentation> 
+getUnitType :: (MonadIO m) => SVGLength -> m Word
+getUnitType self = liftIO (js_getUnitType self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
+        SVGLength -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+setValue :: (MonadIO m) => SVGLength -> Float -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript safe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        SVGLength -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.value Mozilla SVGLength.value documentation> 
+getValue :: (MonadIO m) => SVGLength -> m Float
+getValue self = liftIO (js_getValue self)
+ 
+foreign import javascript safe
+        "(($1, $2) => { $1[\"valueInSpecifiedUnits\"] = $2; })" js_setValueInSpecifiedUnits
+        :: SVGLength -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
+setValueInSpecifiedUnits ::
+                         (MonadIO m) => SVGLength -> Float -> m ()
+setValueInSpecifiedUnits self val
+  = liftIO (js_setValueInSpecifiedUnits self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueInSpecifiedUnits\"]; })"
+        js_getValueInSpecifiedUnits :: SVGLength -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueInSpecifiedUnits Mozilla SVGLength.valueInSpecifiedUnits documentation> 
+getValueInSpecifiedUnits :: (MonadIO m) => SVGLength -> m Float
+getValueInSpecifiedUnits self
+  = liftIO (js_getValueInSpecifiedUnits self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"valueAsString\"] = $2; })"
+        js_setValueAsString :: SVGLength -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+setValueAsString ::
+                 (MonadIO m, ToJSString val) => SVGLength -> val -> m ()
+setValueAsString self val
+  = liftIO (js_setValueAsString self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"valueAsString\"]; })"
+        js_getValueAsString :: SVGLength -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength.valueAsString Mozilla SVGLength.valueAsString documentation> 
+getValueAsString ::
+                 (MonadIO m, FromJSString result) => SVGLength -> m result
+getValueAsString self
+  = liftIO (fromJSString <$> (js_getValueAsString self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLengthList.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLengthList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
+        getNumberOfItems, SVGLengthList(..), gTypeSVGLengthList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGLengthList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.clear Mozilla SVGLengthList.clear documentation> 
+clear :: (MonadIO m) => SVGLengthList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGLengthList -> SVGLength -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
+initialize ::
+           (MonadIO m) => SVGLengthList -> SVGLength -> m SVGLength
+initialize self item = liftIO (js_initialize self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.initialize Mozilla SVGLengthList.initialize documentation> 
+initialize_ :: (MonadIO m) => SVGLengthList -> SVGLength -> m ()
+initialize_ self item = liftIO (void (js_initialize self item))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGLengthList -> Word -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+getItem :: (MonadIO m) => SVGLengthList -> Word -> m SVGLength
+getItem self index = liftIO (js_getItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.getItem Mozilla SVGLengthList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGLengthList -> SVGLength -> Word -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
+insertItemBefore self item index
+  = liftIO (js_insertItemBefore self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.insertItemBefore Mozilla SVGLengthList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m ()
+insertItemBefore_ self item index
+  = liftIO (void (js_insertItemBefore self item index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem ::
+        SVGLengthList -> SVGLength -> Word -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m SVGLength
+replaceItem self item index
+  = liftIO (js_replaceItem self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.replaceItem Mozilla SVGLengthList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m) => SVGLengthList -> SVGLength -> Word -> m ()
+replaceItem_ self item index
+  = liftIO (void (js_replaceItem self item index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGLengthList -> Word -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+removeItem :: (MonadIO m) => SVGLengthList -> Word -> m SVGLength
+removeItem self index = liftIO (js_removeItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.removeItem Mozilla SVGLengthList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGLengthList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGLengthList -> SVGLength -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) => SVGLengthList -> SVGLength -> m SVGLength
+appendItem self item = liftIO (js_appendItem self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.appendItem Mozilla SVGLengthList.appendItem documentation> 
+appendItem_ :: (MonadIO m) => SVGLengthList -> SVGLength -> m ()
+appendItem_ self item = liftIO (void (js_appendItem self item))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGLengthList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList.numberOfItems Mozilla SVGLengthList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGLengthList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLineElement.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLineElement
+       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
+        getY2, SVGLineElement(..), gTypeSVGLineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGLineElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x1 Mozilla SVGLineElement.x1 documentation> 
+getX1 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGLineElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y1 Mozilla SVGLineElement.y1 documentation> 
+getY1 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
+getY1 self = liftIO (js_getY1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGLineElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.x2 Mozilla SVGLineElement.x2 documentation> 
+getX2 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGLineElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement.y2 Mozilla SVGLineElement.y2 documentation> 
+getY2 :: (MonadIO m) => SVGLineElement -> m SVGAnimatedLength
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGLinearGradientElement.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGLinearGradientElement
+       (js_getX1, getX1, js_getY1, getY1, js_getX2, getX2, js_getY2,
+        getY2, SVGLinearGradientElement(..), gTypeSVGLinearGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGLinearGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x1 Mozilla SVGLinearGradientElement.x1 documentation> 
+getX1 ::
+      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGLinearGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y1 Mozilla SVGLinearGradientElement.y1 documentation> 
+getY1 ::
+      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY1 self = liftIO (js_getY1 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGLinearGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.x2 Mozilla SVGLinearGradientElement.x2 documentation> 
+getX2 ::
+      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGLinearGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement.y2 Mozilla SVGLinearGradientElement.y2 documentation> 
+getY2 ::
+      (MonadIO m) => SVGLinearGradientElement -> m SVGAnimatedLength
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMarkerElement.hs
@@ -0,0 +1,111 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGMarkerElement
+       (js_setOrientToAuto, setOrientToAuto, js_setOrientToAngle,
+        setOrientToAngle, pattern SVG_MARKERUNITS_UNKNOWN,
+        pattern SVG_MARKERUNITS_USERSPACEONUSE,
+        pattern SVG_MARKERUNITS_STROKEWIDTH,
+        pattern SVG_MARKER_ORIENT_UNKNOWN, pattern SVG_MARKER_ORIENT_AUTO,
+        pattern SVG_MARKER_ORIENT_ANGLE, js_getRefX, getRefX, js_getRefY,
+        getRefY, js_getMarkerUnits, getMarkerUnits, js_getMarkerWidth,
+        getMarkerWidth, js_getMarkerHeight, getMarkerHeight,
+        js_getOrientType, getOrientType, js_getOrientAngle, getOrientAngle,
+        SVGMarkerElement(..), gTypeSVGMarkerElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"setOrientToAuto\"](); })"
+        js_setOrientToAuto :: SVGMarkerElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAuto Mozilla SVGMarkerElement.setOrientToAuto documentation> 
+setOrientToAuto :: (MonadIO m) => SVGMarkerElement -> m ()
+setOrientToAuto self = liftIO (js_setOrientToAuto self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setOrientToAngle\"]($2); })"
+        js_setOrientToAngle :: SVGMarkerElement -> SVGAngle -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.setOrientToAngle Mozilla SVGMarkerElement.setOrientToAngle documentation> 
+setOrientToAngle ::
+                 (MonadIO m) => SVGMarkerElement -> SVGAngle -> m ()
+setOrientToAngle self angle
+  = liftIO (js_setOrientToAngle self angle)
+pattern SVG_MARKERUNITS_UNKNOWN = 0
+pattern SVG_MARKERUNITS_USERSPACEONUSE = 1
+pattern SVG_MARKERUNITS_STROKEWIDTH = 2
+pattern SVG_MARKER_ORIENT_UNKNOWN = 0
+pattern SVG_MARKER_ORIENT_AUTO = 1
+pattern SVG_MARKER_ORIENT_ANGLE = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"refX\"]; })" js_getRefX ::
+        SVGMarkerElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refX Mozilla SVGMarkerElement.refX documentation> 
+getRefX :: (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
+getRefX self = liftIO (js_getRefX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"refY\"]; })" js_getRefY ::
+        SVGMarkerElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.refY Mozilla SVGMarkerElement.refY documentation> 
+getRefY :: (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
+getRefY self = liftIO (js_getRefY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"markerUnits\"]; })"
+        js_getMarkerUnits :: SVGMarkerElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerUnits Mozilla SVGMarkerElement.markerUnits documentation> 
+getMarkerUnits ::
+               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getMarkerUnits self = liftIO (js_getMarkerUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"markerWidth\"]; })"
+        js_getMarkerWidth :: SVGMarkerElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerWidth Mozilla SVGMarkerElement.markerWidth documentation> 
+getMarkerWidth ::
+               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerWidth self = liftIO (js_getMarkerWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"markerHeight\"]; })"
+        js_getMarkerHeight :: SVGMarkerElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.markerHeight Mozilla SVGMarkerElement.markerHeight documentation> 
+getMarkerHeight ::
+                (MonadIO m) => SVGMarkerElement -> m SVGAnimatedLength
+getMarkerHeight self = liftIO (js_getMarkerHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orientType\"]; })"
+        js_getOrientType :: SVGMarkerElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientType Mozilla SVGMarkerElement.orientType documentation> 
+getOrientType ::
+              (MonadIO m) => SVGMarkerElement -> m SVGAnimatedEnumeration
+getOrientType self = liftIO (js_getOrientType self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orientAngle\"]; })"
+        js_getOrientAngle :: SVGMarkerElement -> IO SVGAnimatedAngle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement.orientAngle Mozilla SVGMarkerElement.orientAngle documentation> 
+getOrientAngle ::
+               (MonadIO m) => SVGMarkerElement -> m SVGAnimatedAngle
+getOrientAngle self = liftIO (js_getOrientAngle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMaskElement.hs
@@ -0,0 +1,74 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGMaskElement
+       (js_getMaskUnits, getMaskUnits, js_getMaskContentUnits,
+        getMaskContentUnits, js_getX, getX, js_getY, getY, js_getWidth,
+        getWidth, js_getHeight, getHeight, SVGMaskElement(..),
+        gTypeSVGMaskElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maskUnits\"]; })"
+        js_getMaskUnits :: SVGMaskElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskUnits Mozilla SVGMaskElement.maskUnits documentation> 
+getMaskUnits ::
+             (MonadIO m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskUnits self = liftIO (js_getMaskUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"maskContentUnits\"]; })"
+        js_getMaskContentUnits ::
+        SVGMaskElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.maskContentUnits Mozilla SVGMaskElement.maskContentUnits documentation> 
+getMaskContentUnits ::
+                    (MonadIO m) => SVGMaskElement -> m SVGAnimatedEnumeration
+getMaskContentUnits self = liftIO (js_getMaskContentUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGMaskElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.x Mozilla SVGMaskElement.x documentation> 
+getX :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGMaskElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.y Mozilla SVGMaskElement.y documentation> 
+getY :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGMaskElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.width Mozilla SVGMaskElement.width documentation> 
+getWidth :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGMaskElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement.height Mozilla SVGMaskElement.height documentation> 
+getHeight :: (MonadIO m) => SVGMaskElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGMatrix.hs
@@ -0,0 +1,249 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGMatrix
+       (js_multiply, multiply, multiply_, js_inverse, inverse, inverse_,
+        js_translate, translate, translate_, js_scale, scale, scale_,
+        js_scaleNonUniform, scaleNonUniform, scaleNonUniform_, js_rotate,
+        rotate, rotate_, js_rotateFromVector, rotateFromVector,
+        rotateFromVector_, js_flipX, flipX, flipX_, js_flipY, flipY,
+        flipY_, js_skewX, skewX, skewX_, js_skewY, skewY, skewY_, js_setA,
+        setA, js_getA, getA, js_setB, setB, js_getB, getB, js_setC, setC,
+        js_getC, getC, js_setD, setD, js_getD, getD, js_setE, setE,
+        js_getE, getE, js_setF, setF, js_getF, getF, SVGMatrix(..),
+        gTypeSVGMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"multiply\"]($2); })" js_multiply
+        :: SVGMatrix -> SVGMatrix -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
+multiply :: (MonadIO m) => SVGMatrix -> SVGMatrix -> m SVGMatrix
+multiply self secondMatrix = liftIO (js_multiply self secondMatrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.multiply Mozilla SVGMatrix.multiply documentation> 
+multiply_ :: (MonadIO m) => SVGMatrix -> SVGMatrix -> m ()
+multiply_ self secondMatrix
+  = liftIO (void (js_multiply self secondMatrix))
+ 
+foreign import javascript safe "(($1) => { return $1[\"inverse\"](); })" js_inverse ::
+        SVGMatrix -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
+inverse :: (MonadIO m) => SVGMatrix -> m SVGMatrix
+inverse self = liftIO (js_inverse self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.inverse Mozilla SVGMatrix.inverse documentation> 
+inverse_ :: (MonadIO m) => SVGMatrix -> m ()
+inverse_ self = liftIO (void (js_inverse self))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"translate\"]($2, $3); })"
+        js_translate :: SVGMatrix -> Float -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
+translate ::
+          (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
+translate self x y = liftIO (js_translate self x y)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.translate Mozilla SVGMatrix.translate documentation> 
+translate_ :: (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
+translate_ self x y = liftIO (void (js_translate self x y))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"scale\"]($2); })" js_scale ::
+        SVGMatrix -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
+scale :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
+scale self scaleFactor = liftIO (js_scale self scaleFactor)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scale Mozilla SVGMatrix.scale documentation> 
+scale_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
+scale_ self scaleFactor = liftIO (void (js_scale self scaleFactor))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"scaleNonUniform\"]($2, $3); })"
+        js_scaleNonUniform :: SVGMatrix -> Float -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
+scaleNonUniform ::
+                (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
+scaleNonUniform self scaleFactorX scaleFactorY
+  = liftIO (js_scaleNonUniform self scaleFactorX scaleFactorY)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.scaleNonUniform Mozilla SVGMatrix.scaleNonUniform documentation> 
+scaleNonUniform_ ::
+                 (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
+scaleNonUniform_ self scaleFactorX scaleFactorY
+  = liftIO (void (js_scaleNonUniform self scaleFactorX scaleFactorY))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"rotate\"]($2); })" js_rotate ::
+        SVGMatrix -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
+rotate :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
+rotate self angle = liftIO (js_rotate self angle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotate Mozilla SVGMatrix.rotate documentation> 
+rotate_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
+rotate_ self angle = liftIO (void (js_rotate self angle))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"rotateFromVector\"]($2, $3); })"
+        js_rotateFromVector :: SVGMatrix -> Float -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
+rotateFromVector ::
+                 (MonadIO m) => SVGMatrix -> Float -> Float -> m SVGMatrix
+rotateFromVector self x y = liftIO (js_rotateFromVector self x y)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.rotateFromVector Mozilla SVGMatrix.rotateFromVector documentation> 
+rotateFromVector_ ::
+                  (MonadIO m) => SVGMatrix -> Float -> Float -> m ()
+rotateFromVector_ self x y
+  = liftIO (void (js_rotateFromVector self x y))
+ 
+foreign import javascript safe "(($1) => { return $1[\"flipX\"](); })" js_flipX ::
+        SVGMatrix -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
+flipX :: (MonadIO m) => SVGMatrix -> m SVGMatrix
+flipX self = liftIO (js_flipX self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipX Mozilla SVGMatrix.flipX documentation> 
+flipX_ :: (MonadIO m) => SVGMatrix -> m ()
+flipX_ self = liftIO (void (js_flipX self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"flipY\"](); })" js_flipY ::
+        SVGMatrix -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
+flipY :: (MonadIO m) => SVGMatrix -> m SVGMatrix
+flipY self = liftIO (js_flipY self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.flipY Mozilla SVGMatrix.flipY documentation> 
+flipY_ :: (MonadIO m) => SVGMatrix -> m ()
+flipY_ self = liftIO (void (js_flipY self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"skewX\"]($2); })" js_skewX ::
+        SVGMatrix -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
+skewX :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
+skewX self angle = liftIO (js_skewX self angle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewX Mozilla SVGMatrix.skewX documentation> 
+skewX_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
+skewX_ self angle = liftIO (void (js_skewX self angle))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"skewY\"]($2); })" js_skewY ::
+        SVGMatrix -> Float -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
+skewY :: (MonadIO m) => SVGMatrix -> Float -> m SVGMatrix
+skewY self angle = liftIO (js_skewY self angle)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.skewY Mozilla SVGMatrix.skewY documentation> 
+skewY_ :: (MonadIO m) => SVGMatrix -> Float -> m ()
+skewY_ self angle = liftIO (void (js_skewY self angle))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"a\"] = $2; })" js_setA ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
+setA :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setA self val = liftIO (js_setA self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })" js_getA ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.a Mozilla SVGMatrix.a documentation> 
+getA :: (MonadIO m) => SVGMatrix -> m Double
+getA self = liftIO (js_getA self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"b\"] = $2; })" js_setB ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
+setB :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setB self val = liftIO (js_setB self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })" js_getB ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.b Mozilla SVGMatrix.b documentation> 
+getB :: (MonadIO m) => SVGMatrix -> m Double
+getB self = liftIO (js_getB self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"c\"] = $2; })" js_setC ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
+setC :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setC self val = liftIO (js_setC self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })" js_getC ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.c Mozilla SVGMatrix.c documentation> 
+getC :: (MonadIO m) => SVGMatrix -> m Double
+getC self = liftIO (js_getC self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"d\"] = $2; })" js_setD ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
+setD :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setD self val = liftIO (js_setD self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })" js_getD ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.d Mozilla SVGMatrix.d documentation> 
+getD :: (MonadIO m) => SVGMatrix -> m Double
+getD self = liftIO (js_getD self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"e\"] = $2; })" js_setE ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
+setE :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setE self val = liftIO (js_setE self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })" js_getE ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.e Mozilla SVGMatrix.e documentation> 
+getE :: (MonadIO m) => SVGMatrix -> m Double
+getE self = liftIO (js_getE self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"f\"] = $2; })" js_setF ::
+        SVGMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
+setF :: (MonadIO m) => SVGMatrix -> Double -> m ()
+setF self val = liftIO (js_setF self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })" js_getF ::
+        SVGMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix.f Mozilla SVGMatrix.f documentation> 
+getF :: (MonadIO m) => SVGMatrix -> m Double
+getF self = liftIO (js_getF self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumber.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGNumber
+       (js_setValue, setValue, js_getValue, getValue, SVGNumber(..),
+        gTypeSVGNumber)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"value\"] = $2; })" js_setValue ::
+        SVGNumber -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+setValue :: (MonadIO m) => SVGNumber -> Float -> m ()
+setValue self val = liftIO (js_setValue self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"value\"]; })" js_getValue ::
+        SVGNumber -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber.value Mozilla SVGNumber.value documentation> 
+getValue :: (MonadIO m) => SVGNumber -> m Float
+getValue self = liftIO (js_getValue self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGNumberList.hs
@@ -0,0 +1,123 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGNumberList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
+        getNumberOfItems, SVGNumberList(..), gTypeSVGNumberList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGNumberList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.clear Mozilla SVGNumberList.clear documentation> 
+clear :: (MonadIO m) => SVGNumberList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGNumberList -> SVGNumber -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
+initialize ::
+           (MonadIO m) => SVGNumberList -> SVGNumber -> m SVGNumber
+initialize self item = liftIO (js_initialize self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.initialize Mozilla SVGNumberList.initialize documentation> 
+initialize_ :: (MonadIO m) => SVGNumberList -> SVGNumber -> m ()
+initialize_ self item = liftIO (void (js_initialize self item))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGNumberList -> Word -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+getItem :: (MonadIO m) => SVGNumberList -> Word -> m SVGNumber
+getItem self index = liftIO (js_getItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.getItem Mozilla SVGNumberList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
+insertItemBefore self item index
+  = liftIO (js_insertItemBefore self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.insertItemBefore Mozilla SVGNumberList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m ()
+insertItemBefore_ self item index
+  = liftIO (void (js_insertItemBefore self item index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem ::
+        SVGNumberList -> SVGNumber -> Word -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m SVGNumber
+replaceItem self item index
+  = liftIO (js_replaceItem self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.replaceItem Mozilla SVGNumberList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m) => SVGNumberList -> SVGNumber -> Word -> m ()
+replaceItem_ self item index
+  = liftIO (void (js_replaceItem self item index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGNumberList -> Word -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+removeItem :: (MonadIO m) => SVGNumberList -> Word -> m SVGNumber
+removeItem self index = liftIO (js_removeItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.removeItem Mozilla SVGNumberList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGNumberList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGNumberList -> SVGNumber -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) => SVGNumberList -> SVGNumber -> m SVGNumber
+appendItem self item = liftIO (js_appendItem self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.appendItem Mozilla SVGNumberList.appendItem documentation> 
+appendItem_ :: (MonadIO m) => SVGNumberList -> SVGNumber -> m ()
+appendItem_ self item = liftIO (void (js_appendItem self item))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGNumberList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList.numberOfItems Mozilla SVGNumberList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGNumberList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathElement.hs
@@ -0,0 +1,767 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathElement
+       (js_getTotalLength, getTotalLength, getTotalLength_,
+        js_getPointAtLength, getPointAtLength, getPointAtLength_,
+        js_getPathSegAtLength, getPathSegAtLength, getPathSegAtLength_,
+        js_createSVGPathSegClosePath, createSVGPathSegClosePath,
+        createSVGPathSegClosePath_, js_createSVGPathSegMovetoAbs,
+        createSVGPathSegMovetoAbs, createSVGPathSegMovetoAbs_,
+        js_createSVGPathSegMovetoRel, createSVGPathSegMovetoRel,
+        createSVGPathSegMovetoRel_, js_createSVGPathSegLinetoAbs,
+        createSVGPathSegLinetoAbs, createSVGPathSegLinetoAbs_,
+        js_createSVGPathSegLinetoRel, createSVGPathSegLinetoRel,
+        createSVGPathSegLinetoRel_, js_createSVGPathSegCurvetoCubicAbs,
+        createSVGPathSegCurvetoCubicAbs, createSVGPathSegCurvetoCubicAbs_,
+        js_createSVGPathSegCurvetoCubicRel,
+        createSVGPathSegCurvetoCubicRel, createSVGPathSegCurvetoCubicRel_,
+        js_createSVGPathSegCurvetoQuadraticAbs,
+        createSVGPathSegCurvetoQuadraticAbs,
+        createSVGPathSegCurvetoQuadraticAbs_,
+        js_createSVGPathSegCurvetoQuadraticRel,
+        createSVGPathSegCurvetoQuadraticRel,
+        createSVGPathSegCurvetoQuadraticRel_, js_createSVGPathSegArcAbs,
+        createSVGPathSegArcAbs, createSVGPathSegArcAbs_,
+        js_createSVGPathSegArcRel, createSVGPathSegArcRel,
+        createSVGPathSegArcRel_, js_createSVGPathSegLinetoHorizontalAbs,
+        createSVGPathSegLinetoHorizontalAbs,
+        createSVGPathSegLinetoHorizontalAbs_,
+        js_createSVGPathSegLinetoHorizontalRel,
+        createSVGPathSegLinetoHorizontalRel,
+        createSVGPathSegLinetoHorizontalRel_,
+        js_createSVGPathSegLinetoVerticalAbs,
+        createSVGPathSegLinetoVerticalAbs,
+        createSVGPathSegLinetoVerticalAbs_,
+        js_createSVGPathSegLinetoVerticalRel,
+        createSVGPathSegLinetoVerticalRel,
+        createSVGPathSegLinetoVerticalRel_,
+        js_createSVGPathSegCurvetoCubicSmoothAbs,
+        createSVGPathSegCurvetoCubicSmoothAbs,
+        createSVGPathSegCurvetoCubicSmoothAbs_,
+        js_createSVGPathSegCurvetoCubicSmoothRel,
+        createSVGPathSegCurvetoCubicSmoothRel,
+        createSVGPathSegCurvetoCubicSmoothRel_,
+        js_createSVGPathSegCurvetoQuadraticSmoothAbs,
+        createSVGPathSegCurvetoQuadraticSmoothAbs,
+        createSVGPathSegCurvetoQuadraticSmoothAbs_,
+        js_createSVGPathSegCurvetoQuadraticSmoothRel,
+        createSVGPathSegCurvetoQuadraticSmoothRel,
+        createSVGPathSegCurvetoQuadraticSmoothRel_, js_getPathLength,
+        getPathLength, js_getPathSegList, getPathSegList,
+        js_getNormalizedPathSegList, getNormalizedPathSegList,
+        js_getAnimatedPathSegList, getAnimatedPathSegList,
+        js_getAnimatedNormalizedPathSegList,
+        getAnimatedNormalizedPathSegList, SVGPathElement(..),
+        gTypeSVGPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getTotalLength\"](); })"
+        js_getTotalLength :: SVGPathElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
+getTotalLength :: (MonadIO m) => SVGPathElement -> m Float
+getTotalLength self = liftIO (js_getTotalLength self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getTotalLength Mozilla SVGPathElement.getTotalLength documentation> 
+getTotalLength_ :: (MonadIO m) => SVGPathElement -> m ()
+getTotalLength_ self = liftIO (void (js_getTotalLength self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPointAtLength\"]($2); })"
+        js_getPointAtLength ::
+        SVGPathElement -> Optional Float -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
+getPointAtLength ::
+                 (MonadIO m) => SVGPathElement -> Maybe Float -> m SVGPoint
+getPointAtLength self distance
+  = liftIO (js_getPointAtLength self (maybeToOptional distance))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPointAtLength Mozilla SVGPathElement.getPointAtLength documentation> 
+getPointAtLength_ ::
+                  (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+getPointAtLength_ self distance
+  = liftIO
+      (void (js_getPointAtLength self (maybeToOptional distance)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getPathSegAtLength\"]($2); })"
+        js_getPathSegAtLength ::
+        SVGPathElement -> Optional Float -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
+getPathSegAtLength ::
+                   (MonadIO m) => SVGPathElement -> Maybe Float -> m Word
+getPathSegAtLength self distance
+  = liftIO (js_getPathSegAtLength self (maybeToOptional distance))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.getPathSegAtLength Mozilla SVGPathElement.getPathSegAtLength documentation> 
+getPathSegAtLength_ ::
+                    (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+getPathSegAtLength_ self distance
+  = liftIO
+      (void (js_getPathSegAtLength self (maybeToOptional distance)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"createSVGPathSegClosePath\"](); })" js_createSVGPathSegClosePath
+        :: SVGPathElement -> IO SVGPathSegClosePath
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
+createSVGPathSegClosePath ::
+                          (MonadIO m) => SVGPathElement -> m SVGPathSegClosePath
+createSVGPathSegClosePath self
+  = liftIO (js_createSVGPathSegClosePath self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegClosePath Mozilla SVGPathElement.createSVGPathSegClosePath documentation> 
+createSVGPathSegClosePath_ :: (MonadIO m) => SVGPathElement -> m ()
+createSVGPathSegClosePath_ self
+  = liftIO (void (js_createSVGPathSegClosePath self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegMovetoAbs\"]($2,\n$3); })"
+        js_createSVGPathSegMovetoAbs ::
+        SVGPathElement ->
+          Optional Float -> Optional Float -> IO SVGPathSegMovetoAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
+createSVGPathSegMovetoAbs ::
+                          (MonadIO m) =>
+                            SVGPathElement ->
+                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoAbs
+createSVGPathSegMovetoAbs self x y
+  = liftIO
+      (js_createSVGPathSegMovetoAbs self (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoAbs Mozilla SVGPathElement.createSVGPathSegMovetoAbs documentation> 
+createSVGPathSegMovetoAbs_ ::
+                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegMovetoAbs_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegMovetoAbs self (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegMovetoRel\"]($2,\n$3); })"
+        js_createSVGPathSegMovetoRel ::
+        SVGPathElement ->
+          Optional Float -> Optional Float -> IO SVGPathSegMovetoRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
+createSVGPathSegMovetoRel ::
+                          (MonadIO m) =>
+                            SVGPathElement ->
+                              Maybe Float -> Maybe Float -> m SVGPathSegMovetoRel
+createSVGPathSegMovetoRel self x y
+  = liftIO
+      (js_createSVGPathSegMovetoRel self (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegMovetoRel Mozilla SVGPathElement.createSVGPathSegMovetoRel documentation> 
+createSVGPathSegMovetoRel_ ::
+                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegMovetoRel_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegMovetoRel self (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegLinetoAbs\"]($2,\n$3); })"
+        js_createSVGPathSegLinetoAbs ::
+        SVGPathElement ->
+          Optional Float -> Optional Float -> IO SVGPathSegLinetoAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
+createSVGPathSegLinetoAbs ::
+                          (MonadIO m) =>
+                            SVGPathElement ->
+                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoAbs
+createSVGPathSegLinetoAbs self x y
+  = liftIO
+      (js_createSVGPathSegLinetoAbs self (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoAbs Mozilla SVGPathElement.createSVGPathSegLinetoAbs documentation> 
+createSVGPathSegLinetoAbs_ ::
+                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegLinetoAbs_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoAbs self (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegLinetoRel\"]($2,\n$3); })"
+        js_createSVGPathSegLinetoRel ::
+        SVGPathElement ->
+          Optional Float -> Optional Float -> IO SVGPathSegLinetoRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
+createSVGPathSegLinetoRel ::
+                          (MonadIO m) =>
+                            SVGPathElement ->
+                              Maybe Float -> Maybe Float -> m SVGPathSegLinetoRel
+createSVGPathSegLinetoRel self x y
+  = liftIO
+      (js_createSVGPathSegLinetoRel self (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoRel Mozilla SVGPathElement.createSVGPathSegLinetoRel documentation> 
+createSVGPathSegLinetoRel_ ::
+                           (MonadIO m) => SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegLinetoRel_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoRel self (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createSVGPathSegCurvetoCubicAbs\"]($2,\n$3, $4, $5, $6, $7); })"
+        js_createSVGPathSegCurvetoCubicAbs ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float ->
+                  Optional Float -> Optional Float -> IO SVGPathSegCurvetoCubicAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
+createSVGPathSegCurvetoCubicAbs ::
+                                (MonadIO m) =>
+                                  SVGPathElement ->
+                                    Maybe Float ->
+                                      Maybe Float ->
+                                        Maybe Float ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float -> m SVGPathSegCurvetoCubicAbs
+createSVGPathSegCurvetoCubicAbs self x y x1 y1 x2 y2
+  = liftIO
+      (js_createSVGPathSegCurvetoCubicAbs self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x1)
+         (maybeToOptional y1)
+         (maybeToOptional x2)
+         (maybeToOptional y2))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicAbs documentation> 
+createSVGPathSegCurvetoCubicAbs_ ::
+                                 (MonadIO m) =>
+                                   SVGPathElement ->
+                                     Maybe Float ->
+                                       Maybe Float ->
+                                         Maybe Float ->
+                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoCubicAbs_ self x y x1 y1 x2 y2
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoCubicAbs self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x1)
+            (maybeToOptional y1)
+            (maybeToOptional x2)
+            (maybeToOptional y2)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"createSVGPathSegCurvetoCubicRel\"]($2,\n$3, $4, $5, $6, $7); })"
+        js_createSVGPathSegCurvetoCubicRel ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float ->
+                  Optional Float -> Optional Float -> IO SVGPathSegCurvetoCubicRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
+createSVGPathSegCurvetoCubicRel ::
+                                (MonadIO m) =>
+                                  SVGPathElement ->
+                                    Maybe Float ->
+                                      Maybe Float ->
+                                        Maybe Float ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float -> m SVGPathSegCurvetoCubicRel
+createSVGPathSegCurvetoCubicRel self x y x1 y1 x2 y2
+  = liftIO
+      (js_createSVGPathSegCurvetoCubicRel self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x1)
+         (maybeToOptional y1)
+         (maybeToOptional x2)
+         (maybeToOptional y2))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicRel documentation> 
+createSVGPathSegCurvetoCubicRel_ ::
+                                 (MonadIO m) =>
+                                   SVGPathElement ->
+                                     Maybe Float ->
+                                       Maybe Float ->
+                                         Maybe Float ->
+                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoCubicRel_ self x y x1 y1 x2 y2
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoCubicRel self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x1)
+            (maybeToOptional y1)
+            (maybeToOptional x2)
+            (maybeToOptional y2)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoQuadraticAbs\"]($2,\n$3, $4, $5); })"
+        js_createSVGPathSegCurvetoQuadraticAbs ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float -> IO SVGPathSegCurvetoQuadraticAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
+createSVGPathSegCurvetoQuadraticAbs ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Maybe Float ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float -> m SVGPathSegCurvetoQuadraticAbs
+createSVGPathSegCurvetoQuadraticAbs self x y x1 y1
+  = liftIO
+      (js_createSVGPathSegCurvetoQuadraticAbs self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x1)
+         (maybeToOptional y1))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticAbs documentation> 
+createSVGPathSegCurvetoQuadraticAbs_ ::
+                                     (MonadIO m) =>
+                                       SVGPathElement ->
+                                         Maybe Float ->
+                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoQuadraticAbs_ self x y x1 y1
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoQuadraticAbs self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x1)
+            (maybeToOptional y1)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoQuadraticRel\"]($2,\n$3, $4, $5); })"
+        js_createSVGPathSegCurvetoQuadraticRel ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float -> IO SVGPathSegCurvetoQuadraticRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
+createSVGPathSegCurvetoQuadraticRel ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Maybe Float ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float -> m SVGPathSegCurvetoQuadraticRel
+createSVGPathSegCurvetoQuadraticRel self x y x1 y1
+  = liftIO
+      (js_createSVGPathSegCurvetoQuadraticRel self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x1)
+         (maybeToOptional y1))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticRel documentation> 
+createSVGPathSegCurvetoQuadraticRel_ ::
+                                     (MonadIO m) =>
+                                       SVGPathElement ->
+                                         Maybe Float ->
+                                           Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoQuadraticRel_ self x y x1 y1
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoQuadraticRel self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x1)
+            (maybeToOptional y1)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"createSVGPathSegArcAbs\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_createSVGPathSegArcAbs ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float ->
+                  Optional Float -> Bool -> Bool -> IO SVGPathSegArcAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
+createSVGPathSegArcAbs ::
+                       (MonadIO m) =>
+                         SVGPathElement ->
+                           Maybe Float ->
+                             Maybe Float ->
+                               Maybe Float ->
+                                 Maybe Float -> Maybe Float -> Bool -> Bool -> m SVGPathSegArcAbs
+createSVGPathSegArcAbs self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (js_createSVGPathSegArcAbs self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional r1)
+         (maybeToOptional r2)
+         (maybeToOptional angle)
+         largeArcFlag
+         sweepFlag)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcAbs Mozilla SVGPathElement.createSVGPathSegArcAbs documentation> 
+createSVGPathSegArcAbs_ ::
+                        (MonadIO m) =>
+                          SVGPathElement ->
+                            Maybe Float ->
+                              Maybe Float ->
+                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
+createSVGPathSegArcAbs_ self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (void
+         (js_createSVGPathSegArcAbs self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional r1)
+            (maybeToOptional r2)
+            (maybeToOptional angle)
+            largeArcFlag
+            sweepFlag))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"createSVGPathSegArcRel\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_createSVGPathSegArcRel ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float ->
+                  Optional Float -> Bool -> Bool -> IO SVGPathSegArcRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
+createSVGPathSegArcRel ::
+                       (MonadIO m) =>
+                         SVGPathElement ->
+                           Maybe Float ->
+                             Maybe Float ->
+                               Maybe Float ->
+                                 Maybe Float -> Maybe Float -> Bool -> Bool -> m SVGPathSegArcRel
+createSVGPathSegArcRel self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (js_createSVGPathSegArcRel self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional r1)
+         (maybeToOptional r2)
+         (maybeToOptional angle)
+         largeArcFlag
+         sweepFlag)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegArcRel Mozilla SVGPathElement.createSVGPathSegArcRel documentation> 
+createSVGPathSegArcRel_ ::
+                        (MonadIO m) =>
+                          SVGPathElement ->
+                            Maybe Float ->
+                              Maybe Float ->
+                                Maybe Float -> Maybe Float -> Maybe Float -> Bool -> Bool -> m ()
+createSVGPathSegArcRel_ self x y r1 r2 angle largeArcFlag sweepFlag
+  = liftIO
+      (void
+         (js_createSVGPathSegArcRel self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional r1)
+            (maybeToOptional r2)
+            (maybeToOptional angle)
+            largeArcFlag
+            sweepFlag))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createSVGPathSegLinetoHorizontalAbs\"]($2); })"
+        js_createSVGPathSegLinetoHorizontalAbs ::
+        SVGPathElement ->
+          Optional Float -> IO SVGPathSegLinetoHorizontalAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
+createSVGPathSegLinetoHorizontalAbs ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Maybe Float -> m SVGPathSegLinetoHorizontalAbs
+createSVGPathSegLinetoHorizontalAbs self x
+  = liftIO
+      (js_createSVGPathSegLinetoHorizontalAbs self (maybeToOptional x))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalAbs Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalAbs documentation> 
+createSVGPathSegLinetoHorizontalAbs_ ::
+                                     (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+createSVGPathSegLinetoHorizontalAbs_ self x
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoHorizontalAbs self (maybeToOptional x)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createSVGPathSegLinetoHorizontalRel\"]($2); })"
+        js_createSVGPathSegLinetoHorizontalRel ::
+        SVGPathElement ->
+          Optional Float -> IO SVGPathSegLinetoHorizontalRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
+createSVGPathSegLinetoHorizontalRel ::
+                                    (MonadIO m) =>
+                                      SVGPathElement ->
+                                        Maybe Float -> m SVGPathSegLinetoHorizontalRel
+createSVGPathSegLinetoHorizontalRel self x
+  = liftIO
+      (js_createSVGPathSegLinetoHorizontalRel self (maybeToOptional x))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoHorizontalRel Mozilla SVGPathElement.createSVGPathSegLinetoHorizontalRel documentation> 
+createSVGPathSegLinetoHorizontalRel_ ::
+                                     (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+createSVGPathSegLinetoHorizontalRel_ self x
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoHorizontalRel self (maybeToOptional x)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createSVGPathSegLinetoVerticalAbs\"]($2); })"
+        js_createSVGPathSegLinetoVerticalAbs ::
+        SVGPathElement -> Optional Float -> IO SVGPathSegLinetoVerticalAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
+createSVGPathSegLinetoVerticalAbs ::
+                                  (MonadIO m) =>
+                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalAbs
+createSVGPathSegLinetoVerticalAbs self y
+  = liftIO
+      (js_createSVGPathSegLinetoVerticalAbs self (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalAbs Mozilla SVGPathElement.createSVGPathSegLinetoVerticalAbs documentation> 
+createSVGPathSegLinetoVerticalAbs_ ::
+                                   (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+createSVGPathSegLinetoVerticalAbs_ self y
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoVerticalAbs self (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createSVGPathSegLinetoVerticalRel\"]($2); })"
+        js_createSVGPathSegLinetoVerticalRel ::
+        SVGPathElement -> Optional Float -> IO SVGPathSegLinetoVerticalRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
+createSVGPathSegLinetoVerticalRel ::
+                                  (MonadIO m) =>
+                                    SVGPathElement -> Maybe Float -> m SVGPathSegLinetoVerticalRel
+createSVGPathSegLinetoVerticalRel self y
+  = liftIO
+      (js_createSVGPathSegLinetoVerticalRel self (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegLinetoVerticalRel Mozilla SVGPathElement.createSVGPathSegLinetoVerticalRel documentation> 
+createSVGPathSegLinetoVerticalRel_ ::
+                                   (MonadIO m) => SVGPathElement -> Maybe Float -> m ()
+createSVGPathSegLinetoVerticalRel_ self y
+  = liftIO
+      (void
+         (js_createSVGPathSegLinetoVerticalRel self (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoCubicSmoothAbs\"]($2,\n$3, $4, $5); })"
+        js_createSVGPathSegCurvetoCubicSmoothAbs ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float -> IO SVGPathSegCurvetoCubicSmoothAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
+createSVGPathSegCurvetoCubicSmoothAbs ::
+                                      (MonadIO m) =>
+                                        SVGPathElement ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float ->
+                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothAbs
+createSVGPathSegCurvetoCubicSmoothAbs self x y x2 y2
+  = liftIO
+      (js_createSVGPathSegCurvetoCubicSmoothAbs self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x2)
+         (maybeToOptional y2))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothAbs documentation> 
+createSVGPathSegCurvetoCubicSmoothAbs_ ::
+                                       (MonadIO m) =>
+                                         SVGPathElement ->
+                                           Maybe Float ->
+                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoCubicSmoothAbs_ self x y x2 y2
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoCubicSmoothAbs self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x2)
+            (maybeToOptional y2)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"createSVGPathSegCurvetoCubicSmoothRel\"]($2,\n$3, $4, $5); })"
+        js_createSVGPathSegCurvetoCubicSmoothRel ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float ->
+              Optional Float ->
+                Optional Float -> IO SVGPathSegCurvetoCubicSmoothRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
+createSVGPathSegCurvetoCubicSmoothRel ::
+                                      (MonadIO m) =>
+                                        SVGPathElement ->
+                                          Maybe Float ->
+                                            Maybe Float ->
+                                              Maybe Float ->
+                                                Maybe Float -> m SVGPathSegCurvetoCubicSmoothRel
+createSVGPathSegCurvetoCubicSmoothRel self x y x2 y2
+  = liftIO
+      (js_createSVGPathSegCurvetoCubicSmoothRel self (maybeToOptional x)
+         (maybeToOptional y)
+         (maybeToOptional x2)
+         (maybeToOptional y2))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoCubicSmoothRel documentation> 
+createSVGPathSegCurvetoCubicSmoothRel_ ::
+                                       (MonadIO m) =>
+                                         SVGPathElement ->
+                                           Maybe Float ->
+                                             Maybe Float -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoCubicSmoothRel_ self x y x2 y2
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoCubicSmoothRel self (maybeToOptional x)
+            (maybeToOptional y)
+            (maybeToOptional x2)
+            (maybeToOptional y2)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegCurvetoQuadraticSmoothAbs\"]($2,\n$3); })"
+        js_createSVGPathSegCurvetoQuadraticSmoothAbs ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float -> IO SVGPathSegCurvetoQuadraticSmoothAbs
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
+createSVGPathSegCurvetoQuadraticSmoothAbs ::
+                                          (MonadIO m) =>
+                                            SVGPathElement ->
+                                              Maybe Float ->
+                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothAbs
+createSVGPathSegCurvetoQuadraticSmoothAbs self x y
+  = liftIO
+      (js_createSVGPathSegCurvetoQuadraticSmoothAbs self
+         (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothAbs documentation> 
+createSVGPathSegCurvetoQuadraticSmoothAbs_ ::
+                                           (MonadIO m) =>
+                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoQuadraticSmoothAbs_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoQuadraticSmoothAbs self
+            (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"createSVGPathSegCurvetoQuadraticSmoothRel\"]($2,\n$3); })"
+        js_createSVGPathSegCurvetoQuadraticSmoothRel ::
+        SVGPathElement ->
+          Optional Float ->
+            Optional Float -> IO SVGPathSegCurvetoQuadraticSmoothRel
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
+createSVGPathSegCurvetoQuadraticSmoothRel ::
+                                          (MonadIO m) =>
+                                            SVGPathElement ->
+                                              Maybe Float ->
+                                                Maybe Float -> m SVGPathSegCurvetoQuadraticSmoothRel
+createSVGPathSegCurvetoQuadraticSmoothRel self x y
+  = liftIO
+      (js_createSVGPathSegCurvetoQuadraticSmoothRel self
+         (maybeToOptional x)
+         (maybeToOptional y))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathElement.createSVGPathSegCurvetoQuadraticSmoothRel documentation> 
+createSVGPathSegCurvetoQuadraticSmoothRel_ ::
+                                           (MonadIO m) =>
+                                             SVGPathElement -> Maybe Float -> Maybe Float -> m ()
+createSVGPathSegCurvetoQuadraticSmoothRel_ self x y
+  = liftIO
+      (void
+         (js_createSVGPathSegCurvetoQuadraticSmoothRel self
+            (maybeToOptional x)
+            (maybeToOptional y)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathLength\"]; })"
+        js_getPathLength :: SVGPathElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathLength Mozilla SVGPathElement.pathLength documentation> 
+getPathLength ::
+              (MonadIO m) => SVGPathElement -> m SVGAnimatedNumber
+getPathLength self = liftIO (js_getPathLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathSegList\"]; })"
+        js_getPathSegList :: SVGPathElement -> IO SVGPathSegList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.pathSegList Mozilla SVGPathElement.pathSegList documentation> 
+getPathSegList :: (MonadIO m) => SVGPathElement -> m SVGPathSegList
+getPathSegList self = liftIO (js_getPathSegList self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"normalizedPathSegList\"]; })"
+        js_getNormalizedPathSegList :: SVGPathElement -> IO SVGPathSegList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.normalizedPathSegList Mozilla SVGPathElement.normalizedPathSegList documentation> 
+getNormalizedPathSegList ::
+                         (MonadIO m) => SVGPathElement -> m SVGPathSegList
+getNormalizedPathSegList self
+  = liftIO (js_getNormalizedPathSegList self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animatedPathSegList\"]; })"
+        js_getAnimatedPathSegList :: SVGPathElement -> IO SVGPathSegList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedPathSegList Mozilla SVGPathElement.animatedPathSegList documentation> 
+getAnimatedPathSegList ::
+                       (MonadIO m) => SVGPathElement -> m SVGPathSegList
+getAnimatedPathSegList self
+  = liftIO (js_getAnimatedPathSegList self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"animatedNormalizedPathSegList\"]; })"
+        js_getAnimatedNormalizedPathSegList ::
+        SVGPathElement -> IO SVGPathSegList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement.animatedNormalizedPathSegList Mozilla SVGPathElement.animatedNormalizedPathSegList documentation> 
+getAnimatedNormalizedPathSegList ::
+                                 (MonadIO m) => SVGPathElement -> m SVGPathSegList
+getAnimatedNormalizedPathSegList self
+  = liftIO (js_getAnimatedNormalizedPathSegList self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSeg.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSeg
+       (pattern PATHSEG_UNKNOWN, pattern PATHSEG_CLOSEPATH,
+        pattern PATHSEG_MOVETO_ABS, pattern PATHSEG_MOVETO_REL,
+        pattern PATHSEG_LINETO_ABS, pattern PATHSEG_LINETO_REL,
+        pattern PATHSEG_CURVETO_CUBIC_ABS,
+        pattern PATHSEG_CURVETO_CUBIC_REL,
+        pattern PATHSEG_CURVETO_QUADRATIC_ABS,
+        pattern PATHSEG_CURVETO_QUADRATIC_REL, pattern PATHSEG_ARC_ABS,
+        pattern PATHSEG_ARC_REL, pattern PATHSEG_LINETO_HORIZONTAL_ABS,
+        pattern PATHSEG_LINETO_HORIZONTAL_REL,
+        pattern PATHSEG_LINETO_VERTICAL_ABS,
+        pattern PATHSEG_LINETO_VERTICAL_REL,
+        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS,
+        pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL,
+        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS,
+        pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL, js_getPathSegType,
+        getPathSegType, js_getPathSegTypeAsLetter, getPathSegTypeAsLetter,
+        SVGPathSeg(..), gTypeSVGPathSeg, IsSVGPathSeg, toSVGPathSeg)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern PATHSEG_UNKNOWN = 0
+pattern PATHSEG_CLOSEPATH = 1
+pattern PATHSEG_MOVETO_ABS = 2
+pattern PATHSEG_MOVETO_REL = 3
+pattern PATHSEG_LINETO_ABS = 4
+pattern PATHSEG_LINETO_REL = 5
+pattern PATHSEG_CURVETO_CUBIC_ABS = 6
+pattern PATHSEG_CURVETO_CUBIC_REL = 7
+pattern PATHSEG_CURVETO_QUADRATIC_ABS = 8
+pattern PATHSEG_CURVETO_QUADRATIC_REL = 9
+pattern PATHSEG_ARC_ABS = 10
+pattern PATHSEG_ARC_REL = 11
+pattern PATHSEG_LINETO_HORIZONTAL_ABS = 12
+pattern PATHSEG_LINETO_HORIZONTAL_REL = 13
+pattern PATHSEG_LINETO_VERTICAL_ABS = 14
+pattern PATHSEG_LINETO_VERTICAL_REL = 15
+pattern PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16
+pattern PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17
+pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18
+pattern PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathSegType\"]; })"
+        js_getPathSegType :: SVGPathSeg -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegType Mozilla SVGPathSeg.pathSegType documentation> 
+getPathSegType :: (MonadIO m, IsSVGPathSeg self) => self -> m Word
+getPathSegType self
+  = liftIO (js_getPathSegType (toSVGPathSeg self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathSegTypeAsLetter\"]; })"
+        js_getPathSegTypeAsLetter :: SVGPathSeg -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg.pathSegTypeAsLetter Mozilla SVGPathSeg.pathSegTypeAsLetter documentation> 
+getPathSegTypeAsLetter ::
+                       (MonadIO m, IsSVGPathSeg self, FromJSString result) =>
+                         self -> m result
+getPathSegTypeAsLetter self
+  = liftIO
+      (fromJSString <$> (js_getPathSegTypeAsLetter (toSVGPathSeg self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcAbs.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setR1, setR1, js_getR1, getR1, js_setR2, setR2, js_getR2, getR2,
+        js_setAngle, setAngle, js_getAngle, getAngle, js_setLargeArcFlag,
+        setLargeArcFlag, js_getLargeArcFlag, getLargeArcFlag,
+        js_setSweepFlag, setSweepFlag, js_getSweepFlag, getSweepFlag,
+        SVGPathSegArcAbs(..), gTypeSVGPathSegArcAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegArcAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
+setX :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegArcAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.x Mozilla SVGPathSegArcAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegArcAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegArcAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
+setY :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegArcAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.y Mozilla SVGPathSegArcAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegArcAbs -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"r1\"] = $2; })" js_setR1 ::
+        SVGPathSegArcAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
+setR1 :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
+setR1 self val = liftIO (js_setR1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r1\"]; })" js_getR1 ::
+        SVGPathSegArcAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r1 Mozilla SVGPathSegArcAbs.r1 documentation> 
+getR1 :: (MonadIO m) => SVGPathSegArcAbs -> m Float
+getR1 self = liftIO (js_getR1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"r2\"] = $2; })" js_setR2 ::
+        SVGPathSegArcAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
+setR2 :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
+setR2 self val = liftIO (js_setR2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r2\"]; })" js_getR2 ::
+        SVGPathSegArcAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.r2 Mozilla SVGPathSegArcAbs.r2 documentation> 
+getR2 :: (MonadIO m) => SVGPathSegArcAbs -> m Float
+getR2 self = liftIO (js_getR2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"angle\"] = $2; })" js_setAngle
+        :: SVGPathSegArcAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
+setAngle :: (MonadIO m) => SVGPathSegArcAbs -> Float -> m ()
+setAngle self val = liftIO (js_setAngle self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
+        SVGPathSegArcAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.angle Mozilla SVGPathSegArcAbs.angle documentation> 
+getAngle :: (MonadIO m) => SVGPathSegArcAbs -> m Float
+getAngle self = liftIO (js_getAngle self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"largeArcFlag\"] = $2; })"
+        js_setLargeArcFlag :: SVGPathSegArcAbs -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
+setLargeArcFlag :: (MonadIO m) => SVGPathSegArcAbs -> Bool -> m ()
+setLargeArcFlag self val = liftIO (js_setLargeArcFlag self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"largeArcFlag\"] ? 1 : 0); })"
+        js_getLargeArcFlag :: SVGPathSegArcAbs -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.largeArcFlag Mozilla SVGPathSegArcAbs.largeArcFlag documentation> 
+getLargeArcFlag :: (MonadIO m) => SVGPathSegArcAbs -> m Bool
+getLargeArcFlag self = liftIO (js_getLargeArcFlag self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"sweepFlag\"] = $2; })"
+        js_setSweepFlag :: SVGPathSegArcAbs -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
+setSweepFlag :: (MonadIO m) => SVGPathSegArcAbs -> Bool -> m ()
+setSweepFlag self val = liftIO (js_setSweepFlag self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"sweepFlag\"] ? 1 : 0); })"
+        js_getSweepFlag :: SVGPathSegArcAbs -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs.sweepFlag Mozilla SVGPathSegArcAbs.sweepFlag documentation> 
+getSweepFlag :: (MonadIO m) => SVGPathSegArcAbs -> m Bool
+getSweepFlag self = liftIO (js_getSweepFlag self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegArcRel.hs
@@ -0,0 +1,129 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegArcRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setR1, setR1, js_getR1, getR1, js_setR2, setR2, js_getR2, getR2,
+        js_setAngle, setAngle, js_getAngle, getAngle, js_setLargeArcFlag,
+        setLargeArcFlag, js_getLargeArcFlag, getLargeArcFlag,
+        js_setSweepFlag, setSweepFlag, js_getSweepFlag, getSweepFlag,
+        SVGPathSegArcRel(..), gTypeSVGPathSegArcRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegArcRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
+setX :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegArcRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.x Mozilla SVGPathSegArcRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegArcRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegArcRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
+setY :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegArcRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.y Mozilla SVGPathSegArcRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegArcRel -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"r1\"] = $2; })" js_setR1 ::
+        SVGPathSegArcRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
+setR1 :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
+setR1 self val = liftIO (js_setR1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r1\"]; })" js_getR1 ::
+        SVGPathSegArcRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r1 Mozilla SVGPathSegArcRel.r1 documentation> 
+getR1 :: (MonadIO m) => SVGPathSegArcRel -> m Float
+getR1 self = liftIO (js_getR1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"r2\"] = $2; })" js_setR2 ::
+        SVGPathSegArcRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
+setR2 :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
+setR2 self val = liftIO (js_setR2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r2\"]; })" js_getR2 ::
+        SVGPathSegArcRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.r2 Mozilla SVGPathSegArcRel.r2 documentation> 
+getR2 :: (MonadIO m) => SVGPathSegArcRel -> m Float
+getR2 self = liftIO (js_getR2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"angle\"] = $2; })" js_setAngle
+        :: SVGPathSegArcRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
+setAngle :: (MonadIO m) => SVGPathSegArcRel -> Float -> m ()
+setAngle self val = liftIO (js_setAngle self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
+        SVGPathSegArcRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.angle Mozilla SVGPathSegArcRel.angle documentation> 
+getAngle :: (MonadIO m) => SVGPathSegArcRel -> m Float
+getAngle self = liftIO (js_getAngle self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"largeArcFlag\"] = $2; })"
+        js_setLargeArcFlag :: SVGPathSegArcRel -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
+setLargeArcFlag :: (MonadIO m) => SVGPathSegArcRel -> Bool -> m ()
+setLargeArcFlag self val = liftIO (js_setLargeArcFlag self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"largeArcFlag\"] ? 1 : 0); })"
+        js_getLargeArcFlag :: SVGPathSegArcRel -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.largeArcFlag Mozilla SVGPathSegArcRel.largeArcFlag documentation> 
+getLargeArcFlag :: (MonadIO m) => SVGPathSegArcRel -> m Bool
+getLargeArcFlag self = liftIO (js_getLargeArcFlag self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"sweepFlag\"] = $2; })"
+        js_setSweepFlag :: SVGPathSegArcRel -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
+setSweepFlag :: (MonadIO m) => SVGPathSegArcRel -> Bool -> m ()
+setSweepFlag self val = liftIO (js_setSweepFlag self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"sweepFlag\"] ? 1 : 0); })"
+        js_getSweepFlag :: SVGPathSegArcRel -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel.sweepFlag Mozilla SVGPathSegArcRel.sweepFlag documentation> 
+getSweepFlag :: (MonadIO m) => SVGPathSegArcRel -> m Bool
+getSweepFlag self = liftIO (js_getSweepFlag self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicAbs.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
+        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
+        SVGPathSegCurvetoCubicAbs(..), gTypeSVGPathSegCurvetoCubicAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
+setX :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x Mozilla SVGPathSegCurvetoCubicAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
+setY :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y Mozilla SVGPathSegCurvetoCubicAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
+setX1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX1 self val = liftIO (js_setX1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x1 Mozilla SVGPathSegCurvetoCubicAbs.x1 documentation> 
+getX1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
+setY1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY1 self val = liftIO (js_setY1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y1 Mozilla SVGPathSegCurvetoCubicAbs.y1 documentation> 
+getY1 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY1 self = liftIO (js_getY1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
+setX2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setX2 self val = liftIO (js_setX2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.x2 Mozilla SVGPathSegCurvetoCubicAbs.x2 documentation> 
+getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
+        SVGPathSegCurvetoCubicAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
+setY2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> Float -> m ()
+setY2 self val = liftIO (js_setY2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGPathSegCurvetoCubicAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs.y2 Mozilla SVGPathSegCurvetoCubicAbs.y2 documentation> 
+getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicAbs -> m Float
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicRel.hs
@@ -0,0 +1,113 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
+        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
+        SVGPathSegCurvetoCubicRel(..), gTypeSVGPathSegCurvetoCubicRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
+setX :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x Mozilla SVGPathSegCurvetoCubicRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
+setY :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y Mozilla SVGPathSegCurvetoCubicRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
+setX1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX1 self val = liftIO (js_setX1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x1 Mozilla SVGPathSegCurvetoCubicRel.x1 documentation> 
+getX1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
+setY1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY1 self val = liftIO (js_setY1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y1 Mozilla SVGPathSegCurvetoCubicRel.y1 documentation> 
+getY1 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getY1 self = liftIO (js_getY1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
+setX2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setX2 self val = liftIO (js_setX2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.x2 Mozilla SVGPathSegCurvetoCubicRel.x2 documentation> 
+getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
+        SVGPathSegCurvetoCubicRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
+setY2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> Float -> m ()
+setY2 self val = liftIO (js_setY2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGPathSegCurvetoCubicRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel.y2 Mozilla SVGPathSegCurvetoCubicRel.y2 documentation> 
+getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicRel -> m Float
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothAbs.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
+        SVGPathSegCurvetoCubicSmoothAbs(..),
+        gTypeSVGPathSegCurvetoCubicSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x Mozilla SVGPathSegCurvetoCubicSmoothAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y Mozilla SVGPathSegCurvetoCubicSmoothAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
+        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
+setX2 ::
+      (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setX2 self val = liftIO (js_setX2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.x2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.x2 documentation> 
+getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
+        SVGPathSegCurvetoCubicSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
+setY2 ::
+      (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> Float -> m ()
+setY2 self val = liftIO (js_setY2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGPathSegCurvetoCubicSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs.y2 Mozilla SVGPathSegCurvetoCubicSmoothAbs.y2 documentation> 
+getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothAbs -> m Float
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoCubicSmoothRel.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoCubicSmoothRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX2, setX2, js_getX2, getX2, js_setY2, setY2, js_getY2, getY2,
+        SVGPathSegCurvetoCubicSmoothRel(..),
+        gTypeSVGPathSegCurvetoCubicSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoCubicSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x Mozilla SVGPathSegCurvetoCubicSmoothRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoCubicSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y Mozilla SVGPathSegCurvetoCubicSmoothRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x2\"] = $2; })" js_setX2 ::
+        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
+setX2 ::
+      (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setX2 self val = liftIO (js_setX2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x2\"]; })" js_getX2 ::
+        SVGPathSegCurvetoCubicSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.x2 Mozilla SVGPathSegCurvetoCubicSmoothRel.x2 documentation> 
+getX2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getX2 self = liftIO (js_getX2 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y2\"] = $2; })" js_setY2 ::
+        SVGPathSegCurvetoCubicSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
+setY2 ::
+      (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> Float -> m ()
+setY2 self val = liftIO (js_setY2 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y2\"]; })" js_getY2 ::
+        SVGPathSegCurvetoCubicSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel.y2 Mozilla SVGPathSegCurvetoCubicSmoothRel.y2 documentation> 
+getY2 :: (MonadIO m) => SVGPathSegCurvetoCubicSmoothRel -> m Float
+getY2 self = liftIO (js_getY2 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticAbs.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
+        SVGPathSegCurvetoQuadraticAbs(..),
+        gTypeSVGPathSegCurvetoQuadraticAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoQuadraticAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x Mozilla SVGPathSegCurvetoQuadraticAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoQuadraticAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y Mozilla SVGPathSegCurvetoQuadraticAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
+        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
+setX1 ::
+      (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setX1 self val = liftIO (js_setX1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGPathSegCurvetoQuadraticAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.x1 Mozilla SVGPathSegCurvetoQuadraticAbs.x1 documentation> 
+getX1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
+        SVGPathSegCurvetoQuadraticAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
+setY1 ::
+      (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> Float -> m ()
+setY1 self val = liftIO (js_setY1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGPathSegCurvetoQuadraticAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs.y1 Mozilla SVGPathSegCurvetoQuadraticAbs.y1 documentation> 
+getY1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticAbs -> m Float
+getY1 self = liftIO (js_getY1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticRel.hs
@@ -0,0 +1,89 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setX1, setX1, js_getX1, getX1, js_setY1, setY1, js_getY1, getY1,
+        SVGPathSegCurvetoQuadraticRel(..),
+        gTypeSVGPathSegCurvetoQuadraticRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoQuadraticRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x Mozilla SVGPathSegCurvetoQuadraticRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoQuadraticRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y Mozilla SVGPathSegCurvetoQuadraticRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x1\"] = $2; })" js_setX1 ::
+        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
+setX1 ::
+      (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setX1 self val = liftIO (js_setX1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x1\"]; })" js_getX1 ::
+        SVGPathSegCurvetoQuadraticRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.x1 Mozilla SVGPathSegCurvetoQuadraticRel.x1 documentation> 
+getX1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getX1 self = liftIO (js_getX1 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y1\"] = $2; })" js_setY1 ::
+        SVGPathSegCurvetoQuadraticRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
+setY1 ::
+      (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> Float -> m ()
+setY1 self val = liftIO (js_setY1 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y1\"]; })" js_getY1 ::
+        SVGPathSegCurvetoQuadraticRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel.y1 Mozilla SVGPathSegCurvetoQuadraticRel.y1 documentation> 
+getY1 :: (MonadIO m) => SVGPathSegCurvetoQuadraticRel -> m Float
+getY1 self = liftIO (js_getY1 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothAbs.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegCurvetoQuadraticSmoothAbs(..),
+        gTypeSVGPathSegCurvetoQuadraticSmoothAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoQuadraticSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.x Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.x documentation> 
+getX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoQuadraticSmoothAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs.y Mozilla SVGPathSegCurvetoQuadraticSmoothAbs.y documentation> 
+getY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothAbs -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegCurvetoQuadraticSmoothRel.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegCurvetoQuadraticSmoothRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegCurvetoQuadraticSmoothRel(..),
+        gTypeSVGPathSegCurvetoQuadraticSmoothRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegCurvetoQuadraticSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegCurvetoQuadraticSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.x Mozilla SVGPathSegCurvetoQuadraticSmoothRel.x documentation> 
+getX ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegCurvetoQuadraticSmoothRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
+setY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegCurvetoQuadraticSmoothRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel.y Mozilla SVGPathSegCurvetoQuadraticSmoothRel.y documentation> 
+getY ::
+     (MonadIO m) => SVGPathSegCurvetoQuadraticSmoothRel -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoAbs.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegLinetoAbs(..), gTypeSVGPathSegLinetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegLinetoAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
+setX :: (MonadIO m) => SVGPathSegLinetoAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegLinetoAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.x Mozilla SVGPathSegLinetoAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegLinetoAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegLinetoAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
+setY :: (MonadIO m) => SVGPathSegLinetoAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegLinetoAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs.y Mozilla SVGPathSegLinetoAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegLinetoAbs -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalAbs.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalAbs
+       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalAbs(..),
+        gTypeSVGPathSegLinetoHorizontalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegLinetoHorizontalAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegLinetoHorizontalAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegLinetoHorizontalAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs.x Mozilla SVGPathSegLinetoHorizontalAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegLinetoHorizontalAbs -> m Float
+getX self = liftIO (js_getX self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoHorizontalRel.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoHorizontalRel
+       (js_setX, setX, js_getX, getX, SVGPathSegLinetoHorizontalRel(..),
+        gTypeSVGPathSegLinetoHorizontalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegLinetoHorizontalRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
+setX ::
+     (MonadIO m) => SVGPathSegLinetoHorizontalRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegLinetoHorizontalRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel.x Mozilla SVGPathSegLinetoHorizontalRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegLinetoHorizontalRel -> m Float
+getX self = liftIO (js_getX self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoRel.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegLinetoRel(..), gTypeSVGPathSegLinetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegLinetoRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
+setX :: (MonadIO m) => SVGPathSegLinetoRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegLinetoRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.x Mozilla SVGPathSegLinetoRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegLinetoRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegLinetoRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
+setY :: (MonadIO m) => SVGPathSegLinetoRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegLinetoRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel.y Mozilla SVGPathSegLinetoRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegLinetoRel -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalAbs.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalAbs
+       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalAbs(..),
+        gTypeSVGPathSegLinetoVerticalAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegLinetoVerticalAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
+setY :: (MonadIO m) => SVGPathSegLinetoVerticalAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegLinetoVerticalAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs.y Mozilla SVGPathSegLinetoVerticalAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegLinetoVerticalAbs -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegLinetoVerticalRel.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegLinetoVerticalRel
+       (js_setY, setY, js_getY, getY, SVGPathSegLinetoVerticalRel(..),
+        gTypeSVGPathSegLinetoVerticalRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegLinetoVerticalRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
+setY :: (MonadIO m) => SVGPathSegLinetoVerticalRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegLinetoVerticalRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel.y Mozilla SVGPathSegLinetoVerticalRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegLinetoVerticalRel -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegList.hs
@@ -0,0 +1,157 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
+        getNumberOfItems, SVGPathSegList(..), gTypeSVGPathSegList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGPathSegList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.clear Mozilla SVGPathSegList.clear documentation> 
+clear :: (MonadIO m) => SVGPathSegList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize ::
+        SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
+initialize ::
+           (MonadIO m, IsSVGPathSeg newItem) =>
+             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
+initialize self newItem
+  = liftIO
+      (js_initialize self (maybeToOptional (fmap toSVGPathSeg newItem)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.initialize Mozilla SVGPathSegList.initialize documentation> 
+initialize_ ::
+            (MonadIO m, IsSVGPathSeg newItem) =>
+              SVGPathSegList -> Maybe newItem -> m ()
+initialize_ self newItem
+  = liftIO
+      (void
+         (js_initialize self (maybeToOptional (fmap toSVGPathSeg newItem))))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGPathSegList -> Word -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
+getItem :: (MonadIO m) => SVGPathSegList -> Word -> m SVGPathSeg
+getItem self index = liftIO (js_getItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.getItem Mozilla SVGPathSegList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m, IsSVGPathSeg newItem) =>
+                   SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
+insertItemBefore self newItem index
+  = liftIO
+      (js_insertItemBefore self
+         (maybeToOptional (fmap toSVGPathSeg newItem))
+         index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.insertItemBefore Mozilla SVGPathSegList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m, IsSVGPathSeg newItem) =>
+                    SVGPathSegList -> Maybe newItem -> Word -> m ()
+insertItemBefore_ self newItem index
+  = liftIO
+      (void
+         (js_insertItemBefore self
+            (maybeToOptional (fmap toSVGPathSeg newItem))
+            index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem ::
+        SVGPathSegList -> Optional SVGPathSeg -> Word -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m, IsSVGPathSeg newItem) =>
+              SVGPathSegList -> Maybe newItem -> Word -> m SVGPathSeg
+replaceItem self newItem index
+  = liftIO
+      (js_replaceItem self (maybeToOptional (fmap toSVGPathSeg newItem))
+         index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.replaceItem Mozilla SVGPathSegList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m, IsSVGPathSeg newItem) =>
+               SVGPathSegList -> Maybe newItem -> Word -> m ()
+replaceItem_ self newItem index
+  = liftIO
+      (void
+         (js_replaceItem self (maybeToOptional (fmap toSVGPathSeg newItem))
+            index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGPathSegList -> Word -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
+removeItem :: (MonadIO m) => SVGPathSegList -> Word -> m SVGPathSeg
+removeItem self index = liftIO (js_removeItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.removeItem Mozilla SVGPathSegList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGPathSegList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem ::
+        SVGPathSegList -> Optional SVGPathSeg -> IO SVGPathSeg
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
+appendItem ::
+           (MonadIO m, IsSVGPathSeg newItem) =>
+             SVGPathSegList -> Maybe newItem -> m SVGPathSeg
+appendItem self newItem
+  = liftIO
+      (js_appendItem self (maybeToOptional (fmap toSVGPathSeg newItem)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.appendItem Mozilla SVGPathSegList.appendItem documentation> 
+appendItem_ ::
+            (MonadIO m, IsSVGPathSeg newItem) =>
+              SVGPathSegList -> Maybe newItem -> m ()
+appendItem_ self newItem
+  = liftIO
+      (void
+         (js_appendItem self (maybeToOptional (fmap toSVGPathSeg newItem))))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGPathSegList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList.numberOfItems Mozilla SVGPathSegList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGPathSegList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoAbs.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoAbs
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegMovetoAbs(..), gTypeSVGPathSegMovetoAbs)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegMovetoAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
+setX :: (MonadIO m) => SVGPathSegMovetoAbs -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegMovetoAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.x Mozilla SVGPathSegMovetoAbs.x documentation> 
+getX :: (MonadIO m) => SVGPathSegMovetoAbs -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegMovetoAbs -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
+setY :: (MonadIO m) => SVGPathSegMovetoAbs -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegMovetoAbs -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs.y Mozilla SVGPathSegMovetoAbs.y documentation> 
+getY :: (MonadIO m) => SVGPathSegMovetoAbs -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPathSegMovetoRel.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPathSegMovetoRel
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        SVGPathSegMovetoRel(..), gTypeSVGPathSegMovetoRel)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPathSegMovetoRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
+setX :: (MonadIO m) => SVGPathSegMovetoRel -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPathSegMovetoRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.x Mozilla SVGPathSegMovetoRel.x documentation> 
+getX :: (MonadIO m) => SVGPathSegMovetoRel -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPathSegMovetoRel -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
+setY :: (MonadIO m) => SVGPathSegMovetoRel -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPathSegMovetoRel -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel.y Mozilla SVGPathSegMovetoRel.y documentation> 
+getY :: (MonadIO m) => SVGPathSegMovetoRel -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPatternElement.hs
@@ -0,0 +1,87 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPatternElement
+       (js_getPatternUnits, getPatternUnits, js_getPatternContentUnits,
+        getPatternContentUnits, js_getPatternTransform,
+        getPatternTransform, js_getX, getX, js_getY, getY, js_getWidth,
+        getWidth, js_getHeight, getHeight, SVGPatternElement(..),
+        gTypeSVGPatternElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"patternUnits\"]; })"
+        js_getPatternUnits ::
+        SVGPatternElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternUnits Mozilla SVGPatternElement.patternUnits documentation> 
+getPatternUnits ::
+                (MonadIO m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternUnits self = liftIO (js_getPatternUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"patternContentUnits\"]; })"
+        js_getPatternContentUnits ::
+        SVGPatternElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternContentUnits Mozilla SVGPatternElement.patternContentUnits documentation> 
+getPatternContentUnits ::
+                       (MonadIO m) => SVGPatternElement -> m SVGAnimatedEnumeration
+getPatternContentUnits self
+  = liftIO (js_getPatternContentUnits self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"patternTransform\"]; })"
+        js_getPatternTransform ::
+        SVGPatternElement -> IO SVGAnimatedTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.patternTransform Mozilla SVGPatternElement.patternTransform documentation> 
+getPatternTransform ::
+                    (MonadIO m) => SVGPatternElement -> m SVGAnimatedTransformList
+getPatternTransform self = liftIO (js_getPatternTransform self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPatternElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.x Mozilla SVGPatternElement.x documentation> 
+getX :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPatternElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.y Mozilla SVGPatternElement.y documentation> 
+getY :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGPatternElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.width Mozilla SVGPatternElement.width documentation> 
+getWidth :: (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGPatternElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement.height Mozilla SVGPatternElement.height documentation> 
+getHeight ::
+          (MonadIO m) => SVGPatternElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPoint.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPoint
+       (js_matrixTransform, matrixTransform, matrixTransform_, js_setX,
+        setX, js_getX, getX, js_setY, setY, js_getY, getY, SVGPoint(..),
+        gTypeSVGPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"matrixTransform\"]($2); })"
+        js_matrixTransform :: SVGPoint -> SVGMatrix -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
+matrixTransform ::
+                (MonadIO m) => SVGPoint -> SVGMatrix -> m SVGPoint
+matrixTransform self matrix
+  = liftIO (js_matrixTransform self matrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.matrixTransform Mozilla SVGPoint.matrixTransform documentation> 
+matrixTransform_ :: (MonadIO m) => SVGPoint -> SVGMatrix -> m ()
+matrixTransform_ self matrix
+  = liftIO (void (js_matrixTransform self matrix))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGPoint -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
+setX :: (MonadIO m) => SVGPoint -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGPoint -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.x Mozilla SVGPoint.x documentation> 
+getX :: (MonadIO m) => SVGPoint -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGPoint -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
+setY :: (MonadIO m) => SVGPoint -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGPoint -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint.y Mozilla SVGPoint.y documentation> 
+getY :: (MonadIO m) => SVGPoint -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPointList.hs
@@ -0,0 +1,120 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPointList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
+        getNumberOfItems, SVGPointList(..), gTypeSVGPointList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGPointList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.clear Mozilla SVGPointList.clear documentation> 
+clear :: (MonadIO m) => SVGPointList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGPointList -> SVGPoint -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
+initialize :: (MonadIO m) => SVGPointList -> SVGPoint -> m SVGPoint
+initialize self item = liftIO (js_initialize self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.initialize Mozilla SVGPointList.initialize documentation> 
+initialize_ :: (MonadIO m) => SVGPointList -> SVGPoint -> m ()
+initialize_ self item = liftIO (void (js_initialize self item))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGPointList -> Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+getItem :: (MonadIO m) => SVGPointList -> Word -> m SVGPoint
+getItem self index = liftIO (js_getItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.getItem Mozilla SVGPointList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGPointList -> SVGPoint -> Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
+insertItemBefore self item index
+  = liftIO (js_insertItemBefore self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.insertItemBefore Mozilla SVGPointList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m ()
+insertItemBefore_ self item index
+  = liftIO (void (js_insertItemBefore self item index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGPointList -> SVGPoint -> Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m SVGPoint
+replaceItem self item index
+  = liftIO (js_replaceItem self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.replaceItem Mozilla SVGPointList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m) => SVGPointList -> SVGPoint -> Word -> m ()
+replaceItem_ self item index
+  = liftIO (void (js_replaceItem self item index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGPointList -> Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+removeItem :: (MonadIO m) => SVGPointList -> Word -> m SVGPoint
+removeItem self index = liftIO (js_removeItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.removeItem Mozilla SVGPointList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGPointList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGPointList -> SVGPoint -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
+appendItem :: (MonadIO m) => SVGPointList -> SVGPoint -> m SVGPoint
+appendItem self item = liftIO (js_appendItem self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.appendItem Mozilla SVGPointList.appendItem documentation> 
+appendItem_ :: (MonadIO m) => SVGPointList -> SVGPoint -> m ()
+appendItem_ self item = liftIO (void (js_appendItem self item))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGPointList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList.numberOfItems Mozilla SVGPointList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGPointList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolygonElement.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPolygonElement
+       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
+        SVGPolygonElement(..), gTypeSVGPolygonElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"points\"]; })" js_getPoints ::
+        SVGPolygonElement -> IO SVGPointList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.points Mozilla SVGPolygonElement.points documentation> 
+getPoints :: (MonadIO m) => SVGPolygonElement -> m SVGPointList
+getPoints self = liftIO (js_getPoints self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animatedPoints\"]; })"
+        js_getAnimatedPoints :: SVGPolygonElement -> IO SVGPointList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement.animatedPoints Mozilla SVGPolygonElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadIO m) => SVGPolygonElement -> m SVGPointList
+getAnimatedPoints self = liftIO (js_getAnimatedPoints self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPolylineElement.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPolylineElement
+       (js_getPoints, getPoints, js_getAnimatedPoints, getAnimatedPoints,
+        SVGPolylineElement(..), gTypeSVGPolylineElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"points\"]; })" js_getPoints ::
+        SVGPolylineElement -> IO SVGPointList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.points Mozilla SVGPolylineElement.points documentation> 
+getPoints :: (MonadIO m) => SVGPolylineElement -> m SVGPointList
+getPoints self = liftIO (js_getPoints self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animatedPoints\"]; })"
+        js_getAnimatedPoints :: SVGPolylineElement -> IO SVGPointList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement.animatedPoints Mozilla SVGPolylineElement.animatedPoints documentation> 
+getAnimatedPoints ::
+                  (MonadIO m) => SVGPolylineElement -> m SVGPointList
+getAnimatedPoints self = liftIO (js_getAnimatedPoints self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGPreserveAspectRatio.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGPreserveAspectRatio
+       (pattern SVG_PRESERVEASPECTRATIO_UNKNOWN,
+        pattern SVG_PRESERVEASPECTRATIO_NONE,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMID,
+        pattern SVG_PRESERVEASPECTRATIO_XMINYMAX,
+        pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX,
+        pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX,
+        pattern SVG_MEETORSLICE_UNKNOWN, pattern SVG_MEETORSLICE_MEET,
+        pattern SVG_MEETORSLICE_SLICE, js_setAlign, setAlign, js_getAlign,
+        getAlign, js_setMeetOrSlice, setMeetOrSlice, js_getMeetOrSlice,
+        getMeetOrSlice, SVGPreserveAspectRatio(..),
+        gTypeSVGPreserveAspectRatio)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_PRESERVEASPECTRATIO_UNKNOWN = 0
+pattern SVG_PRESERVEASPECTRATIO_NONE = 1
+pattern SVG_PRESERVEASPECTRATIO_XMINYMIN = 2
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4
+pattern SVG_PRESERVEASPECTRATIO_XMINYMID = 5
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMID = 6
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMID = 7
+pattern SVG_PRESERVEASPECTRATIO_XMINYMAX = 8
+pattern SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9
+pattern SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10
+pattern SVG_MEETORSLICE_UNKNOWN = 0
+pattern SVG_MEETORSLICE_MEET = 1
+pattern SVG_MEETORSLICE_SLICE = 2
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign ::
+        SVGPreserveAspectRatio -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
+setAlign :: (MonadIO m) => SVGPreserveAspectRatio -> Word -> m ()
+setAlign self val = liftIO (js_setAlign self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        SVGPreserveAspectRatio -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.align Mozilla SVGPreserveAspectRatio.align documentation> 
+getAlign :: (MonadIO m) => SVGPreserveAspectRatio -> m Word
+getAlign self = liftIO (js_getAlign self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"meetOrSlice\"] = $2; })"
+        js_setMeetOrSlice :: SVGPreserveAspectRatio -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
+setMeetOrSlice ::
+               (MonadIO m) => SVGPreserveAspectRatio -> Word -> m ()
+setMeetOrSlice self val = liftIO (js_setMeetOrSlice self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"meetOrSlice\"]; })"
+        js_getMeetOrSlice :: SVGPreserveAspectRatio -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio.meetOrSlice Mozilla SVGPreserveAspectRatio.meetOrSlice documentation> 
+getMeetOrSlice :: (MonadIO m) => SVGPreserveAspectRatio -> m Word
+getMeetOrSlice self = liftIO (js_getMeetOrSlice self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRadialGradientElement.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGRadialGradientElement
+       (js_getCx, getCx, js_getCy, getCy, js_getR, getR, js_getFx, getFx,
+        js_getFy, getFy, js_getFr, getFr, SVGRadialGradientElement(..),
+        gTypeSVGRadialGradientElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cx\"]; })" js_getCx ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cx Mozilla SVGRadialGradientElement.cx documentation> 
+getCx ::
+      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCx self = liftIO (js_getCx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cy\"]; })" js_getCy ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.cy Mozilla SVGRadialGradientElement.cy documentation> 
+getCy ::
+      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getCy self = liftIO (js_getCy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"r\"]; })" js_getR ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.r Mozilla SVGRadialGradientElement.r documentation> 
+getR ::
+     (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getR self = liftIO (js_getR self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fx\"]; })" js_getFx ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fx Mozilla SVGRadialGradientElement.fx documentation> 
+getFx ::
+      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFx self = liftIO (js_getFx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fy\"]; })" js_getFy ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fy Mozilla SVGRadialGradientElement.fy documentation> 
+getFy ::
+      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFy self = liftIO (js_getFy self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fr\"]; })" js_getFr ::
+        SVGRadialGradientElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement.fr Mozilla SVGRadialGradientElement.fr documentation> 
+getFr ::
+      (MonadIO m) => SVGRadialGradientElement -> m SVGAnimatedLength
+getFr self = liftIO (js_getFr self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRect.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGRect
+       (js_setX, setX, js_getX, getX, js_setY, setY, js_getY, getY,
+        js_setWidth, setWidth, js_getWidth, getWidth, js_setHeight,
+        setHeight, js_getHeight, getHeight, SVGRect(..), gTypeSVGRect)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        SVGRect -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
+setX :: (MonadIO m) => SVGRect -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.x Mozilla SVGRect.x documentation> 
+getX :: (MonadIO m) => SVGRect -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        SVGRect -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
+setY :: (MonadIO m) => SVGRect -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.y Mozilla SVGRect.y documentation> 
+getY :: (MonadIO m) => SVGRect -> m Float
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth ::
+        SVGRect -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
+setWidth :: (MonadIO m) => SVGRect -> Float -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.width Mozilla SVGRect.width documentation> 
+getWidth :: (MonadIO m) => SVGRect -> m Float
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })" js_setHeight
+        :: SVGRect -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
+setHeight :: (MonadIO m) => SVGRect -> Float -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGRect -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect.height Mozilla SVGRect.height documentation> 
+getHeight :: (MonadIO m) => SVGRect -> m Float
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRectElement.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGRectElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, js_getRx, getRx, js_getRy, getRy, SVGRectElement(..),
+        gTypeSVGRectElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.x Mozilla SVGRectElement.x documentation> 
+getX :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.y Mozilla SVGRectElement.y documentation> 
+getY :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.width Mozilla SVGRectElement.width documentation> 
+getWidth :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.height Mozilla SVGRectElement.height documentation> 
+getHeight :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rx\"]; })" js_getRx ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.rx Mozilla SVGRectElement.rx documentation> 
+getRx :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getRx self = liftIO (js_getRx self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ry\"]; })" js_getRy ::
+        SVGRectElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement.ry Mozilla SVGRectElement.ry documentation> 
+getRy :: (MonadIO m) => SVGRectElement -> m SVGAnimatedLength
+getRy self = liftIO (js_getRy self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGRenderingIntent.hs
@@ -0,0 +1,37 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGRenderingIntent
+       (pattern RENDERING_INTENT_UNKNOWN, pattern RENDERING_INTENT_AUTO,
+        pattern RENDERING_INTENT_PERCEPTUAL,
+        pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC,
+        pattern RENDERING_INTENT_SATURATION,
+        pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC,
+        SVGRenderingIntent(..), gTypeSVGRenderingIntent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern RENDERING_INTENT_UNKNOWN = 0
+pattern RENDERING_INTENT_AUTO = 1
+pattern RENDERING_INTENT_PERCEPTUAL = 2
+pattern RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3
+pattern RENDERING_INTENT_SATURATION = 4
+pattern RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGSVGElement.hs
@@ -0,0 +1,505 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGSVGElement
+       (js_suspendRedraw, suspendRedraw, suspendRedraw_,
+        js_unsuspendRedraw, unsuspendRedraw, js_unsuspendRedrawAll,
+        unsuspendRedrawAll, js_forceRedraw, forceRedraw,
+        js_pauseAnimations, pauseAnimations, js_unpauseAnimations,
+        unpauseAnimations, js_animationsPaused, animationsPaused,
+        animationsPaused_, js_getCurrentTime, getCurrentTime,
+        getCurrentTime_, js_setCurrentTime, setCurrentTime,
+        js_getIntersectionList, getIntersectionList, getIntersectionList_,
+        js_getEnclosureList, getEnclosureList, getEnclosureList_,
+        js_checkIntersection, checkIntersection, checkIntersection_,
+        js_checkEnclosure, checkEnclosure, checkEnclosure_, js_deselectAll,
+        deselectAll, js_createSVGNumber, createSVGNumber, createSVGNumber_,
+        js_createSVGLength, createSVGLength, createSVGLength_,
+        js_createSVGAngle, createSVGAngle, createSVGAngle_,
+        js_createSVGPoint, createSVGPoint, createSVGPoint_,
+        js_createSVGMatrix, createSVGMatrix, createSVGMatrix_,
+        js_createSVGRect, createSVGRect, createSVGRect_,
+        js_createSVGTransform, createSVGTransform, createSVGTransform_,
+        js_createSVGTransformFromMatrix, createSVGTransformFromMatrix,
+        createSVGTransformFromMatrix_, js_getElementById, getElementById,
+        getElementById_, js_getX, getX, js_getY, getY, js_getWidth,
+        getWidth, js_getHeight, getHeight, js_setContentScriptType,
+        setContentScriptType, js_getContentScriptType,
+        getContentScriptType, js_setContentStyleType, setContentStyleType,
+        js_getContentStyleType, getContentStyleType, js_getViewport,
+        getViewport, js_getPixelUnitToMillimeterX,
+        getPixelUnitToMillimeterX, js_getPixelUnitToMillimeterY,
+        getPixelUnitToMillimeterY, js_getScreenPixelToMillimeterX,
+        getScreenPixelToMillimeterX, js_getScreenPixelToMillimeterY,
+        getScreenPixelToMillimeterY, js_getUseCurrentView,
+        getUseCurrentView, js_getCurrentView, getCurrentView,
+        js_setCurrentScale, setCurrentScale, js_getCurrentScale,
+        getCurrentScale, js_getCurrentTranslate, getCurrentTranslate,
+        SVGSVGElement(..), gTypeSVGSVGElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"suspendRedraw\"]($2); })"
+        js_suspendRedraw :: SVGSVGElement -> Optional Word -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
+suspendRedraw ::
+              (MonadIO m) => SVGSVGElement -> Maybe Word -> m Word
+suspendRedraw self maxWaitMilliseconds
+  = liftIO
+      (js_suspendRedraw self (maybeToOptional maxWaitMilliseconds))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.suspendRedraw Mozilla SVGSVGElement.suspendRedraw documentation> 
+suspendRedraw_ ::
+               (MonadIO m) => SVGSVGElement -> Maybe Word -> m ()
+suspendRedraw_ self maxWaitMilliseconds
+  = liftIO
+      (void
+         (js_suspendRedraw self (maybeToOptional maxWaitMilliseconds)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"unsuspendRedraw\"]($2); })"
+        js_unsuspendRedraw :: SVGSVGElement -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedraw Mozilla SVGSVGElement.unsuspendRedraw documentation> 
+unsuspendRedraw ::
+                (MonadIO m) => SVGSVGElement -> Maybe Word -> m ()
+unsuspendRedraw self suspendHandleId
+  = liftIO
+      (js_unsuspendRedraw self (maybeToOptional suspendHandleId))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unsuspendRedrawAll\"](); })"
+        js_unsuspendRedrawAll :: SVGSVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unsuspendRedrawAll Mozilla SVGSVGElement.unsuspendRedrawAll documentation> 
+unsuspendRedrawAll :: (MonadIO m) => SVGSVGElement -> m ()
+unsuspendRedrawAll self = liftIO (js_unsuspendRedrawAll self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"forceRedraw\"](); })"
+        js_forceRedraw :: SVGSVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.forceRedraw Mozilla SVGSVGElement.forceRedraw documentation> 
+forceRedraw :: (MonadIO m) => SVGSVGElement -> m ()
+forceRedraw self = liftIO (js_forceRedraw self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pauseAnimations\"](); })"
+        js_pauseAnimations :: SVGSVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pauseAnimations Mozilla SVGSVGElement.pauseAnimations documentation> 
+pauseAnimations :: (MonadIO m) => SVGSVGElement -> m ()
+pauseAnimations self = liftIO (js_pauseAnimations self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"unpauseAnimations\"](); })"
+        js_unpauseAnimations :: SVGSVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.unpauseAnimations Mozilla SVGSVGElement.unpauseAnimations documentation> 
+unpauseAnimations :: (MonadIO m) => SVGSVGElement -> m ()
+unpauseAnimations self = liftIO (js_unpauseAnimations self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"animationsPaused\"]() ? 1 : 0); })" js_animationsPaused ::
+        SVGSVGElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
+animationsPaused :: (MonadIO m) => SVGSVGElement -> m Bool
+animationsPaused self = liftIO (js_animationsPaused self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.animationsPaused Mozilla SVGSVGElement.animationsPaused documentation> 
+animationsPaused_ :: (MonadIO m) => SVGSVGElement -> m ()
+animationsPaused_ self = liftIO (void (js_animationsPaused self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getCurrentTime\"](); })"
+        js_getCurrentTime :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
+getCurrentTime :: (MonadIO m) => SVGSVGElement -> m Float
+getCurrentTime self = liftIO (js_getCurrentTime self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getCurrentTime Mozilla SVGSVGElement.getCurrentTime documentation> 
+getCurrentTime_ :: (MonadIO m) => SVGSVGElement -> m ()
+getCurrentTime_ self = liftIO (void (js_getCurrentTime self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setCurrentTime\"]($2); })"
+        js_setCurrentTime :: SVGSVGElement -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.setCurrentTime Mozilla SVGSVGElement.setCurrentTime documentation> 
+setCurrentTime ::
+               (MonadIO m) => SVGSVGElement -> Maybe Float -> m ()
+setCurrentTime self seconds
+  = liftIO (js_setCurrentTime self (maybeToOptional seconds))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getIntersectionList\"]($2,\n$3); })" js_getIntersectionList ::
+        SVGSVGElement -> SVGRect -> Optional SVGElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
+getIntersectionList ::
+                    (MonadIO m, IsSVGElement referenceElement) =>
+                      SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
+getIntersectionList self rect referenceElement
+  = liftIO
+      (js_getIntersectionList self rect
+         (maybeToOptional (fmap toSVGElement referenceElement)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getIntersectionList Mozilla SVGSVGElement.getIntersectionList documentation> 
+getIntersectionList_ ::
+                     (MonadIO m, IsSVGElement referenceElement) =>
+                       SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
+getIntersectionList_ self rect referenceElement
+  = liftIO
+      (void
+         (js_getIntersectionList self rect
+            (maybeToOptional (fmap toSVGElement referenceElement))))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getEnclosureList\"]($2, $3); })"
+        js_getEnclosureList ::
+        SVGSVGElement -> SVGRect -> Optional SVGElement -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
+getEnclosureList ::
+                 (MonadIO m, IsSVGElement referenceElement) =>
+                   SVGSVGElement -> SVGRect -> Maybe referenceElement -> m NodeList
+getEnclosureList self rect referenceElement
+  = liftIO
+      (js_getEnclosureList self rect
+         (maybeToOptional (fmap toSVGElement referenceElement)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getEnclosureList Mozilla SVGSVGElement.getEnclosureList documentation> 
+getEnclosureList_ ::
+                  (MonadIO m, IsSVGElement referenceElement) =>
+                    SVGSVGElement -> SVGRect -> Maybe referenceElement -> m ()
+getEnclosureList_ self rect referenceElement
+  = liftIO
+      (void
+         (js_getEnclosureList self rect
+            (maybeToOptional (fmap toSVGElement referenceElement))))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return ($1[\"checkIntersection\"]($2,\n$3) ? 1 : 0); })" js_checkIntersection
+        :: SVGSVGElement -> Optional SVGElement -> SVGRect -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
+checkIntersection ::
+                  (MonadIO m, IsSVGElement element) =>
+                    SVGSVGElement -> Maybe element -> SVGRect -> m Bool
+checkIntersection self element rect
+  = liftIO
+      (js_checkIntersection self
+         (maybeToOptional (fmap toSVGElement element))
+         rect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkIntersection Mozilla SVGSVGElement.checkIntersection documentation> 
+checkIntersection_ ::
+                   (MonadIO m, IsSVGElement element) =>
+                     SVGSVGElement -> Maybe element -> SVGRect -> m ()
+checkIntersection_ self element rect
+  = liftIO
+      (void
+         (js_checkIntersection self
+            (maybeToOptional (fmap toSVGElement element))
+            rect))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return ($1[\"checkEnclosure\"]($2,\n$3) ? 1 : 0); })" js_checkEnclosure ::
+        SVGSVGElement -> Optional SVGElement -> SVGRect -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
+checkEnclosure ::
+               (MonadIO m, IsSVGElement element) =>
+                 SVGSVGElement -> Maybe element -> SVGRect -> m Bool
+checkEnclosure self element rect
+  = liftIO
+      (js_checkEnclosure self
+         (maybeToOptional (fmap toSVGElement element))
+         rect)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.checkEnclosure Mozilla SVGSVGElement.checkEnclosure documentation> 
+checkEnclosure_ ::
+                (MonadIO m, IsSVGElement element) =>
+                  SVGSVGElement -> Maybe element -> SVGRect -> m ()
+checkEnclosure_ self element rect
+  = liftIO
+      (void
+         (js_checkEnclosure self
+            (maybeToOptional (fmap toSVGElement element))
+            rect))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deselectAll\"](); })"
+        js_deselectAll :: SVGSVGElement -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.deselectAll Mozilla SVGSVGElement.deselectAll documentation> 
+deselectAll :: (MonadIO m) => SVGSVGElement -> m ()
+deselectAll self = liftIO (js_deselectAll self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGNumber\"](); })"
+        js_createSVGNumber :: SVGSVGElement -> IO SVGNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+createSVGNumber :: (MonadIO m) => SVGSVGElement -> m SVGNumber
+createSVGNumber self = liftIO (js_createSVGNumber self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGNumber Mozilla SVGSVGElement.createSVGNumber documentation> 
+createSVGNumber_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGNumber_ self = liftIO (void (js_createSVGNumber self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGLength\"](); })"
+        js_createSVGLength :: SVGSVGElement -> IO SVGLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
+createSVGLength :: (MonadIO m) => SVGSVGElement -> m SVGLength
+createSVGLength self = liftIO (js_createSVGLength self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGLength Mozilla SVGSVGElement.createSVGLength documentation> 
+createSVGLength_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGLength_ self = liftIO (void (js_createSVGLength self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGAngle\"](); })"
+        js_createSVGAngle :: SVGSVGElement -> IO SVGAngle
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
+createSVGAngle :: (MonadIO m) => SVGSVGElement -> m SVGAngle
+createSVGAngle self = liftIO (js_createSVGAngle self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGAngle Mozilla SVGSVGElement.createSVGAngle documentation> 
+createSVGAngle_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGAngle_ self = liftIO (void (js_createSVGAngle self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGPoint\"](); })"
+        js_createSVGPoint :: SVGSVGElement -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
+createSVGPoint :: (MonadIO m) => SVGSVGElement -> m SVGPoint
+createSVGPoint self = liftIO (js_createSVGPoint self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGPoint Mozilla SVGSVGElement.createSVGPoint documentation> 
+createSVGPoint_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGPoint_ self = liftIO (void (js_createSVGPoint self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGMatrix\"](); })"
+        js_createSVGMatrix :: SVGSVGElement -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
+createSVGMatrix :: (MonadIO m) => SVGSVGElement -> m SVGMatrix
+createSVGMatrix self = liftIO (js_createSVGMatrix self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGMatrix Mozilla SVGSVGElement.createSVGMatrix documentation> 
+createSVGMatrix_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGMatrix_ self = liftIO (void (js_createSVGMatrix self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGRect\"](); })"
+        js_createSVGRect :: SVGSVGElement -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
+createSVGRect :: (MonadIO m) => SVGSVGElement -> m SVGRect
+createSVGRect self = liftIO (js_createSVGRect self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGRect Mozilla SVGSVGElement.createSVGRect documentation> 
+createSVGRect_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGRect_ self = liftIO (void (js_createSVGRect self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSVGTransform\"](); })"
+        js_createSVGTransform :: SVGSVGElement -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
+createSVGTransform ::
+                   (MonadIO m) => SVGSVGElement -> m SVGTransform
+createSVGTransform self = liftIO (js_createSVGTransform self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransform Mozilla SVGSVGElement.createSVGTransform documentation> 
+createSVGTransform_ :: (MonadIO m) => SVGSVGElement -> m ()
+createSVGTransform_ self
+  = liftIO (void (js_createSVGTransform self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
+        js_createSVGTransformFromMatrix ::
+        SVGSVGElement -> SVGMatrix -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadIO m) => SVGSVGElement -> SVGMatrix -> m SVGTransform
+createSVGTransformFromMatrix self matrix
+  = liftIO (js_createSVGTransformFromMatrix self matrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.createSVGTransformFromMatrix Mozilla SVGSVGElement.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix_ ::
+                              (MonadIO m) => SVGSVGElement -> SVGMatrix -> m ()
+createSVGTransformFromMatrix_ self matrix
+  = liftIO (void (js_createSVGTransformFromMatrix self matrix))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getElementById\"]($2); })"
+        js_getElementById :: SVGSVGElement -> JSString -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
+getElementById ::
+               (MonadIO m, ToJSString elementId) =>
+                 SVGSVGElement -> elementId -> m Element
+getElementById self elementId
+  = liftIO (js_getElementById self (toJSString elementId))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.getElementById Mozilla SVGSVGElement.getElementById documentation> 
+getElementById_ ::
+                (MonadIO m, ToJSString elementId) =>
+                  SVGSVGElement -> elementId -> m ()
+getElementById_ self elementId
+  = liftIO (void (js_getElementById self (toJSString elementId)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGSVGElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.x Mozilla SVGSVGElement.x documentation> 
+getX :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGSVGElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.y Mozilla SVGSVGElement.y documentation> 
+getY :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGSVGElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.width Mozilla SVGSVGElement.width documentation> 
+getWidth :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGSVGElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.height Mozilla SVGSVGElement.height documentation> 
+getHeight :: (MonadIO m) => SVGSVGElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"contentScriptType\"] = $2; })"
+        js_setContentScriptType :: SVGSVGElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
+setContentScriptType ::
+                     (MonadIO m, ToJSString val) => SVGSVGElement -> val -> m ()
+setContentScriptType self val
+  = liftIO (js_setContentScriptType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentScriptType\"]; })"
+        js_getContentScriptType :: SVGSVGElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentScriptType Mozilla SVGSVGElement.contentScriptType documentation> 
+getContentScriptType ::
+                     (MonadIO m, FromJSString result) => SVGSVGElement -> m result
+getContentScriptType self
+  = liftIO (fromJSString <$> (js_getContentScriptType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"contentStyleType\"] = $2; })"
+        js_setContentStyleType :: SVGSVGElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
+setContentStyleType ::
+                    (MonadIO m, ToJSString val) => SVGSVGElement -> val -> m ()
+setContentStyleType self val
+  = liftIO (js_setContentStyleType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contentStyleType\"]; })"
+        js_getContentStyleType :: SVGSVGElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.contentStyleType Mozilla SVGSVGElement.contentStyleType documentation> 
+getContentStyleType ::
+                    (MonadIO m, FromJSString result) => SVGSVGElement -> m result
+getContentStyleType self
+  = liftIO (fromJSString <$> (js_getContentStyleType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewport\"]; })" js_getViewport
+        :: SVGSVGElement -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.viewport Mozilla SVGSVGElement.viewport documentation> 
+getViewport :: (MonadIO m) => SVGSVGElement -> m SVGRect
+getViewport self = liftIO (js_getViewport self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pixelUnitToMillimeterX\"]; })"
+        js_getPixelUnitToMillimeterX :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterX Mozilla SVGSVGElement.pixelUnitToMillimeterX documentation> 
+getPixelUnitToMillimeterX ::
+                          (MonadIO m) => SVGSVGElement -> m Float
+getPixelUnitToMillimeterX self
+  = liftIO (js_getPixelUnitToMillimeterX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pixelUnitToMillimeterY\"]; })"
+        js_getPixelUnitToMillimeterY :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.pixelUnitToMillimeterY Mozilla SVGSVGElement.pixelUnitToMillimeterY documentation> 
+getPixelUnitToMillimeterY ::
+                          (MonadIO m) => SVGSVGElement -> m Float
+getPixelUnitToMillimeterY self
+  = liftIO (js_getPixelUnitToMillimeterY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenPixelToMillimeterX\"]; })"
+        js_getScreenPixelToMillimeterX :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterX Mozilla SVGSVGElement.screenPixelToMillimeterX documentation> 
+getScreenPixelToMillimeterX ::
+                            (MonadIO m) => SVGSVGElement -> m Float
+getScreenPixelToMillimeterX self
+  = liftIO (js_getScreenPixelToMillimeterX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenPixelToMillimeterY\"]; })"
+        js_getScreenPixelToMillimeterY :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.screenPixelToMillimeterY Mozilla SVGSVGElement.screenPixelToMillimeterY documentation> 
+getScreenPixelToMillimeterY ::
+                            (MonadIO m) => SVGSVGElement -> m Float
+getScreenPixelToMillimeterY self
+  = liftIO (js_getScreenPixelToMillimeterY self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"useCurrentView\"] ? 1 : 0); })"
+        js_getUseCurrentView :: SVGSVGElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.useCurrentView Mozilla SVGSVGElement.useCurrentView documentation> 
+getUseCurrentView :: (MonadIO m) => SVGSVGElement -> m Bool
+getUseCurrentView self = liftIO (js_getUseCurrentView self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentView\"]; })"
+        js_getCurrentView :: SVGSVGElement -> IO SVGViewSpec
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentView Mozilla SVGSVGElement.currentView documentation> 
+getCurrentView :: (MonadIO m) => SVGSVGElement -> m SVGViewSpec
+getCurrentView self = liftIO (js_getCurrentView self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"currentScale\"] = $2; })"
+        js_setCurrentScale :: SVGSVGElement -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+setCurrentScale :: (MonadIO m) => SVGSVGElement -> Float -> m ()
+setCurrentScale self val = liftIO (js_setCurrentScale self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentScale\"]; })"
+        js_getCurrentScale :: SVGSVGElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentScale Mozilla SVGSVGElement.currentScale documentation> 
+getCurrentScale :: (MonadIO m) => SVGSVGElement -> m Float
+getCurrentScale self = liftIO (js_getCurrentScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentTranslate\"]; })"
+        js_getCurrentTranslate :: SVGSVGElement -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement.currentTranslate Mozilla SVGSVGElement.currentTranslate documentation> 
+getCurrentTranslate :: (MonadIO m) => SVGSVGElement -> m SVGPoint
+getCurrentTranslate self = liftIO (js_getCurrentTranslate self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGScriptElement.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGScriptElement
+       (js_setType, setType, js_getType, getType, SVGScriptElement(..),
+        gTypeSVGScriptElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        SVGScriptElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => SVGScriptElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGScriptElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement.type Mozilla SVGScriptElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => SVGScriptElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStopElement.hs
@@ -0,0 +1,33 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGStopElement
+       (js_getOffset, getOffset, SVGStopElement(..), gTypeSVGStopElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"offset\"]; })" js_getOffset ::
+        SVGStopElement -> IO SVGAnimatedNumber
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement.offset Mozilla SVGStopElement.offset documentation> 
+getOffset :: (MonadIO m) => SVGStopElement -> m SVGAnimatedNumber
+getOffset self = liftIO (js_getOffset self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStringList.hs
@@ -0,0 +1,143 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGStringList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_, js_getNumberOfItems,
+        getNumberOfItems, SVGStringList(..), gTypeSVGStringList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGStringList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.clear Mozilla SVGStringList.clear documentation> 
+clear :: (MonadIO m) => SVGStringList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize :: SVGStringList -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
+initialize ::
+           (MonadIO m, ToJSString item, FromJSString result) =>
+             SVGStringList -> item -> m result
+initialize self item
+  = liftIO (fromJSString <$> (js_initialize self (toJSString item)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.initialize Mozilla SVGStringList.initialize documentation> 
+initialize_ ::
+            (MonadIO m, ToJSString item) => SVGStringList -> item -> m ()
+initialize_ self item
+  = liftIO (void (js_initialize self (toJSString item)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGStringList -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
+getItem ::
+        (MonadIO m, FromJSString result) =>
+          SVGStringList -> Word -> m result
+getItem self index
+  = liftIO (fromJSString <$> (js_getItem self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.getItem Mozilla SVGStringList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGStringList -> JSString -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m, ToJSString item, FromJSString result) =>
+                   SVGStringList -> item -> Word -> m result
+insertItemBefore self item index
+  = liftIO
+      (fromJSString <$>
+         (js_insertItemBefore self (toJSString item) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.insertItemBefore Mozilla SVGStringList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m, ToJSString item) =>
+                    SVGStringList -> item -> Word -> m ()
+insertItemBefore_ self item index
+  = liftIO (void (js_insertItemBefore self (toJSString item) index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem :: SVGStringList -> JSString -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m, ToJSString item, FromJSString result) =>
+              SVGStringList -> item -> Word -> m result
+replaceItem self item index
+  = liftIO
+      (fromJSString <$> (js_replaceItem self (toJSString item) index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.replaceItem Mozilla SVGStringList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m, ToJSString item) =>
+               SVGStringList -> item -> Word -> m ()
+replaceItem_ self item index
+  = liftIO (void (js_replaceItem self (toJSString item) index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGStringList -> Word -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
+removeItem ::
+           (MonadIO m, FromJSString result) =>
+             SVGStringList -> Word -> m result
+removeItem self index
+  = liftIO (fromJSString <$> (js_removeItem self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.removeItem Mozilla SVGStringList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGStringList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem :: SVGStringList -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
+appendItem ::
+           (MonadIO m, ToJSString item, FromJSString result) =>
+             SVGStringList -> item -> m result
+appendItem self item
+  = liftIO (fromJSString <$> (js_appendItem self (toJSString item)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.appendItem Mozilla SVGStringList.appendItem documentation> 
+appendItem_ ::
+            (MonadIO m, ToJSString item) => SVGStringList -> item -> m ()
+appendItem_ self item
+  = liftIO (void (js_appendItem self (toJSString item)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGStringList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList.numberOfItems Mozilla SVGStringList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGStringList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGStyleElement.hs
@@ -0,0 +1,91 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGStyleElement
+       (js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_setType, setType, js_getType, getType, js_setMedia, setMedia,
+        js_getMedia, getMedia, js_setTitle, setTitle, js_getTitle,
+        getTitle, SVGStyleElement(..), gTypeSVGStyleElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: SVGStyleElement -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
+setDisabled :: (MonadIO m) => SVGStyleElement -> Bool -> m ()
+setDisabled self val = liftIO (js_setDisabled self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: SVGStyleElement -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.disabled Mozilla SVGStyleElement.disabled documentation> 
+getDisabled :: (MonadIO m) => SVGStyleElement -> m Bool
+getDisabled self = liftIO (js_getDisabled self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"type\"] = $2; })" js_setType ::
+        SVGStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
+setType ::
+        (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
+setType self val = liftIO (js_setType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.type Mozilla SVGStyleElement.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => SVGStyleElement -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"media\"] = $2; })" js_setMedia
+        :: SVGStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
+setMedia ::
+         (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
+setMedia self val = liftIO (js_setMedia self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        SVGStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.media Mozilla SVGStyleElement.media documentation> 
+getMedia ::
+         (MonadIO m, FromJSString result) => SVGStyleElement -> m result
+getMedia self = liftIO (fromJSString <$> (js_getMedia self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"title\"] = $2; })" js_setTitle
+        :: SVGStyleElement -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
+setTitle ::
+         (MonadIO m, ToJSString val) => SVGStyleElement -> val -> m ()
+setTitle self val = liftIO (js_setTitle self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
+        SVGStyleElement -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement.title Mozilla SVGStyleElement.title documentation> 
+getTitle ::
+         (MonadIO m, FromJSString result) => SVGStyleElement -> m result
+getTitle self = liftIO (fromJSString <$> (js_getTitle self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTests.hs
@@ -0,0 +1,78 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTests
+       (js_hasExtension, hasExtension, hasExtension_,
+        js_getRequiredFeatures, getRequiredFeatures,
+        js_getRequiredExtensions, getRequiredExtensions,
+        js_getSystemLanguage, getSystemLanguage, SVGTests(..),
+        gTypeSVGTests, IsSVGTests, toSVGTests)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"hasExtension\"]($2) ? 1 : 0); })" js_hasExtension ::
+        SVGTests -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
+hasExtension ::
+             (MonadIO m, IsSVGTests self, ToJSString extension) =>
+               self -> Maybe extension -> m Bool
+hasExtension self extension
+  = liftIO
+      (js_hasExtension (toSVGTests self) (toOptionalJSString extension))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.hasExtension Mozilla SVGTests.hasExtension documentation> 
+hasExtension_ ::
+              (MonadIO m, IsSVGTests self, ToJSString extension) =>
+                self -> Maybe extension -> m ()
+hasExtension_ self extension
+  = liftIO
+      (void
+         (js_hasExtension (toSVGTests self) (toOptionalJSString extension)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requiredFeatures\"]; })"
+        js_getRequiredFeatures :: SVGTests -> IO SVGStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredFeatures Mozilla SVGTests.requiredFeatures documentation> 
+getRequiredFeatures ::
+                    (MonadIO m, IsSVGTests self) => self -> m SVGStringList
+getRequiredFeatures self
+  = liftIO (js_getRequiredFeatures (toSVGTests self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"requiredExtensions\"]; })"
+        js_getRequiredExtensions :: SVGTests -> IO SVGStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.requiredExtensions Mozilla SVGTests.requiredExtensions documentation> 
+getRequiredExtensions ::
+                      (MonadIO m, IsSVGTests self) => self -> m SVGStringList
+getRequiredExtensions self
+  = liftIO (js_getRequiredExtensions (toSVGTests self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"systemLanguage\"]; })"
+        js_getSystemLanguage :: SVGTests -> IO SVGStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests.systemLanguage Mozilla SVGTests.systemLanguage documentation> 
+getSystemLanguage ::
+                  (MonadIO m, IsSVGTests self) => self -> m SVGStringList
+getSystemLanguage self
+  = liftIO (js_getSystemLanguage (toSVGTests self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextContentElement.hs
@@ -0,0 +1,248 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTextContentElement
+       (js_getNumberOfChars, getNumberOfChars, getNumberOfChars_,
+        js_getComputedTextLength, getComputedTextLength,
+        getComputedTextLength_, js_getSubStringLength, getSubStringLength,
+        getSubStringLength_, js_getStartPositionOfChar,
+        getStartPositionOfChar, getStartPositionOfChar_,
+        js_getEndPositionOfChar, getEndPositionOfChar,
+        getEndPositionOfChar_, js_getExtentOfChar, getExtentOfChar,
+        getExtentOfChar_, js_getRotationOfChar, getRotationOfChar,
+        getRotationOfChar_, js_getCharNumAtPosition, getCharNumAtPosition,
+        getCharNumAtPosition_, js_selectSubString, selectSubString,
+        pattern LENGTHADJUST_UNKNOWN, pattern LENGTHADJUST_SPACING,
+        pattern LENGTHADJUST_SPACINGANDGLYPHS, js_getTextLength,
+        getTextLength, js_getLengthAdjust, getLengthAdjust,
+        SVGTextContentElement(..), gTypeSVGTextContentElement,
+        IsSVGTextContentElement, toSVGTextContentElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getNumberOfChars\"](); })"
+        js_getNumberOfChars :: SVGTextContentElement -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
+getNumberOfChars ::
+                 (MonadIO m, IsSVGTextContentElement self) => self -> m Int
+getNumberOfChars self
+  = liftIO (js_getNumberOfChars (toSVGTextContentElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getNumberOfChars Mozilla SVGTextContentElement.getNumberOfChars documentation> 
+getNumberOfChars_ ::
+                  (MonadIO m, IsSVGTextContentElement self) => self -> m ()
+getNumberOfChars_ self
+  = liftIO
+      (void (js_getNumberOfChars (toSVGTextContentElement self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getComputedTextLength\"](); })"
+        js_getComputedTextLength :: SVGTextContentElement -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
+getComputedTextLength ::
+                      (MonadIO m, IsSVGTextContentElement self) => self -> m Float
+getComputedTextLength self
+  = liftIO (js_getComputedTextLength (toSVGTextContentElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getComputedTextLength Mozilla SVGTextContentElement.getComputedTextLength documentation> 
+getComputedTextLength_ ::
+                       (MonadIO m, IsSVGTextContentElement self) => self -> m ()
+getComputedTextLength_ self
+  = liftIO
+      (void (js_getComputedTextLength (toSVGTextContentElement self)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"getSubStringLength\"]($2, $3); })"
+        js_getSubStringLength ::
+        SVGTextContentElement -> Optional Word -> Optional Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
+getSubStringLength ::
+                   (MonadIO m, IsSVGTextContentElement self) =>
+                     self -> Maybe Word -> Maybe Word -> m Float
+getSubStringLength self offset length
+  = liftIO
+      (js_getSubStringLength (toSVGTextContentElement self)
+         (maybeToOptional offset)
+         (maybeToOptional length))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getSubStringLength Mozilla SVGTextContentElement.getSubStringLength documentation> 
+getSubStringLength_ ::
+                    (MonadIO m, IsSVGTextContentElement self) =>
+                      self -> Maybe Word -> Maybe Word -> m ()
+getSubStringLength_ self offset length
+  = liftIO
+      (void
+         (js_getSubStringLength (toSVGTextContentElement self)
+            (maybeToOptional offset)
+            (maybeToOptional length)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getStartPositionOfChar\"]($2); })"
+        js_getStartPositionOfChar ::
+        SVGTextContentElement -> Optional Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
+getStartPositionOfChar ::
+                       (MonadIO m, IsSVGTextContentElement self) =>
+                         self -> Maybe Word -> m SVGPoint
+getStartPositionOfChar self offset
+  = liftIO
+      (js_getStartPositionOfChar (toSVGTextContentElement self)
+         (maybeToOptional offset))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getStartPositionOfChar Mozilla SVGTextContentElement.getStartPositionOfChar documentation> 
+getStartPositionOfChar_ ::
+                        (MonadIO m, IsSVGTextContentElement self) =>
+                          self -> Maybe Word -> m ()
+getStartPositionOfChar_ self offset
+  = liftIO
+      (void
+         (js_getStartPositionOfChar (toSVGTextContentElement self)
+            (maybeToOptional offset)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getEndPositionOfChar\"]($2); })"
+        js_getEndPositionOfChar ::
+        SVGTextContentElement -> Optional Word -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
+getEndPositionOfChar ::
+                     (MonadIO m, IsSVGTextContentElement self) =>
+                       self -> Maybe Word -> m SVGPoint
+getEndPositionOfChar self offset
+  = liftIO
+      (js_getEndPositionOfChar (toSVGTextContentElement self)
+         (maybeToOptional offset))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getEndPositionOfChar Mozilla SVGTextContentElement.getEndPositionOfChar documentation> 
+getEndPositionOfChar_ ::
+                      (MonadIO m, IsSVGTextContentElement self) =>
+                        self -> Maybe Word -> m ()
+getEndPositionOfChar_ self offset
+  = liftIO
+      (void
+         (js_getEndPositionOfChar (toSVGTextContentElement self)
+            (maybeToOptional offset)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getExtentOfChar\"]($2); })"
+        js_getExtentOfChar ::
+        SVGTextContentElement -> Optional Word -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
+getExtentOfChar ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> Maybe Word -> m SVGRect
+getExtentOfChar self offset
+  = liftIO
+      (js_getExtentOfChar (toSVGTextContentElement self)
+         (maybeToOptional offset))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getExtentOfChar Mozilla SVGTextContentElement.getExtentOfChar documentation> 
+getExtentOfChar_ ::
+                 (MonadIO m, IsSVGTextContentElement self) =>
+                   self -> Maybe Word -> m ()
+getExtentOfChar_ self offset
+  = liftIO
+      (void
+         (js_getExtentOfChar (toSVGTextContentElement self)
+            (maybeToOptional offset)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getRotationOfChar\"]($2); })"
+        js_getRotationOfChar ::
+        SVGTextContentElement -> Optional Word -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
+getRotationOfChar ::
+                  (MonadIO m, IsSVGTextContentElement self) =>
+                    self -> Maybe Word -> m Float
+getRotationOfChar self offset
+  = liftIO
+      (js_getRotationOfChar (toSVGTextContentElement self)
+         (maybeToOptional offset))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getRotationOfChar Mozilla SVGTextContentElement.getRotationOfChar documentation> 
+getRotationOfChar_ ::
+                   (MonadIO m, IsSVGTextContentElement self) =>
+                     self -> Maybe Word -> m ()
+getRotationOfChar_ self offset
+  = liftIO
+      (void
+         (js_getRotationOfChar (toSVGTextContentElement self)
+            (maybeToOptional offset)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getCharNumAtPosition\"]($2); })"
+        js_getCharNumAtPosition ::
+        SVGTextContentElement -> SVGPoint -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
+getCharNumAtPosition ::
+                     (MonadIO m, IsSVGTextContentElement self) =>
+                       self -> SVGPoint -> m Int
+getCharNumAtPosition self point
+  = liftIO
+      (js_getCharNumAtPosition (toSVGTextContentElement self) point)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.getCharNumAtPosition Mozilla SVGTextContentElement.getCharNumAtPosition documentation> 
+getCharNumAtPosition_ ::
+                      (MonadIO m, IsSVGTextContentElement self) =>
+                        self -> SVGPoint -> m ()
+getCharNumAtPosition_ self point
+  = liftIO
+      (void
+         (js_getCharNumAtPosition (toSVGTextContentElement self) point))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"selectSubString\"]($2, $3); })"
+        js_selectSubString ::
+        SVGTextContentElement -> Optional Word -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.selectSubString Mozilla SVGTextContentElement.selectSubString documentation> 
+selectSubString ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> Maybe Word -> Maybe Word -> m ()
+selectSubString self offset length
+  = liftIO
+      (js_selectSubString (toSVGTextContentElement self)
+         (maybeToOptional offset)
+         (maybeToOptional length))
+pattern LENGTHADJUST_UNKNOWN = 0
+pattern LENGTHADJUST_SPACING = 1
+pattern LENGTHADJUST_SPACINGANDGLYPHS = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textLength\"]; })"
+        js_getTextLength :: SVGTextContentElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.textLength Mozilla SVGTextContentElement.textLength documentation> 
+getTextLength ::
+              (MonadIO m, IsSVGTextContentElement self) =>
+                self -> m SVGAnimatedLength
+getTextLength self
+  = liftIO (js_getTextLength (toSVGTextContentElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lengthAdjust\"]; })"
+        js_getLengthAdjust ::
+        SVGTextContentElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement.lengthAdjust Mozilla SVGTextContentElement.lengthAdjust documentation> 
+getLengthAdjust ::
+                (MonadIO m, IsSVGTextContentElement self) =>
+                  self -> m SVGAnimatedEnumeration
+getLengthAdjust self
+  = liftIO (js_getLengthAdjust (toSVGTextContentElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPathElement.hs
@@ -0,0 +1,63 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTextPathElement
+       (pattern TEXTPATH_METHODTYPE_UNKNOWN,
+        pattern TEXTPATH_METHODTYPE_ALIGN,
+        pattern TEXTPATH_METHODTYPE_STRETCH,
+        pattern TEXTPATH_SPACINGTYPE_UNKNOWN,
+        pattern TEXTPATH_SPACINGTYPE_AUTO,
+        pattern TEXTPATH_SPACINGTYPE_EXACT, js_getStartOffset,
+        getStartOffset, js_getMethod, getMethod, js_getSpacing, getSpacing,
+        SVGTextPathElement(..), gTypeSVGTextPathElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern TEXTPATH_METHODTYPE_UNKNOWN = 0
+pattern TEXTPATH_METHODTYPE_ALIGN = 1
+pattern TEXTPATH_METHODTYPE_STRETCH = 2
+pattern TEXTPATH_SPACINGTYPE_UNKNOWN = 0
+pattern TEXTPATH_SPACINGTYPE_AUTO = 1
+pattern TEXTPATH_SPACINGTYPE_EXACT = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: SVGTextPathElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.startOffset Mozilla SVGTextPathElement.startOffset documentation> 
+getStartOffset ::
+               (MonadIO m) => SVGTextPathElement -> m SVGAnimatedLength
+getStartOffset self = liftIO (js_getStartOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"method\"]; })" js_getMethod ::
+        SVGTextPathElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.method Mozilla SVGTextPathElement.method documentation> 
+getMethod ::
+          (MonadIO m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getMethod self = liftIO (js_getMethod self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"spacing\"]; })" js_getSpacing ::
+        SVGTextPathElement -> IO SVGAnimatedEnumeration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement.spacing Mozilla SVGTextPathElement.spacing documentation> 
+getSpacing ::
+           (MonadIO m) => SVGTextPathElement -> m SVGAnimatedEnumeration
+getSpacing self = liftIO (js_getSpacing self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTextPositioningElement.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTextPositioningElement
+       (js_getX, getX, js_getY, getY, js_getDx, getDx, js_getDy, getDy,
+        js_getRotate, getRotate, SVGTextPositioningElement(..),
+        gTypeSVGTextPositioningElement, IsSVGTextPositioningElement,
+        toSVGTextPositioningElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.x Mozilla SVGTextPositioningElement.x documentation> 
+getX ::
+     (MonadIO m, IsSVGTextPositioningElement self) =>
+       self -> m SVGAnimatedLengthList
+getX self = liftIO (js_getX (toSVGTextPositioningElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.y Mozilla SVGTextPositioningElement.y documentation> 
+getY ::
+     (MonadIO m, IsSVGTextPositioningElement self) =>
+       self -> m SVGAnimatedLengthList
+getY self = liftIO (js_getY (toSVGTextPositioningElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dx\"]; })" js_getDx ::
+        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dx Mozilla SVGTextPositioningElement.dx documentation> 
+getDx ::
+      (MonadIO m, IsSVGTextPositioningElement self) =>
+        self -> m SVGAnimatedLengthList
+getDx self = liftIO (js_getDx (toSVGTextPositioningElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"dy\"]; })" js_getDy ::
+        SVGTextPositioningElement -> IO SVGAnimatedLengthList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.dy Mozilla SVGTextPositioningElement.dy documentation> 
+getDy ::
+      (MonadIO m, IsSVGTextPositioningElement self) =>
+        self -> m SVGAnimatedLengthList
+getDy self = liftIO (js_getDy (toSVGTextPositioningElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rotate\"]; })" js_getRotate ::
+        SVGTextPositioningElement -> IO SVGAnimatedNumberList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement.rotate Mozilla SVGTextPositioningElement.rotate documentation> 
+getRotate ::
+          (MonadIO m, IsSVGTextPositioningElement self) =>
+            self -> m SVGAnimatedNumberList
+getRotate self
+  = liftIO (js_getRotate (toSVGTextPositioningElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransform.hs
@@ -0,0 +1,105 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTransform
+       (js_setMatrix, setMatrix, js_setTranslate, setTranslate,
+        js_setScale, setScale, js_setRotate, setRotate, js_setSkewX,
+        setSkewX, js_setSkewY, setSkewY, pattern SVG_TRANSFORM_UNKNOWN,
+        pattern SVG_TRANSFORM_MATRIX, pattern SVG_TRANSFORM_TRANSLATE,
+        pattern SVG_TRANSFORM_SCALE, pattern SVG_TRANSFORM_ROTATE,
+        pattern SVG_TRANSFORM_SKEWX, pattern SVG_TRANSFORM_SKEWY,
+        js_getType, getType, js_getMatrix, getMatrix, js_getAngle,
+        getAngle, SVGTransform(..), gTypeSVGTransform)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setMatrix\"]($2); })" js_setMatrix
+        :: SVGTransform -> SVGMatrix -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setMatrix Mozilla SVGTransform.setMatrix documentation> 
+setMatrix :: (MonadIO m) => SVGTransform -> SVGMatrix -> m ()
+setMatrix self matrix = liftIO (js_setMatrix self matrix)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setTranslate\"]($2, $3); })"
+        js_setTranslate :: SVGTransform -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setTranslate Mozilla SVGTransform.setTranslate documentation> 
+setTranslate ::
+             (MonadIO m) => SVGTransform -> Float -> Float -> m ()
+setTranslate self tx ty = liftIO (js_setTranslate self tx ty)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setScale\"]($2, $3); })"
+        js_setScale :: SVGTransform -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setScale Mozilla SVGTransform.setScale documentation> 
+setScale :: (MonadIO m) => SVGTransform -> Float -> Float -> m ()
+setScale self sx sy = liftIO (js_setScale self sx sy)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"setRotate\"]($2, $3, $4); })"
+        js_setRotate :: SVGTransform -> Float -> Float -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setRotate Mozilla SVGTransform.setRotate documentation> 
+setRotate ::
+          (MonadIO m) => SVGTransform -> Float -> Float -> Float -> m ()
+setRotate self angle cx cy = liftIO (js_setRotate self angle cx cy)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setSkewX\"]($2); })" js_setSkewX
+        :: SVGTransform -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewX Mozilla SVGTransform.setSkewX documentation> 
+setSkewX :: (MonadIO m) => SVGTransform -> Float -> m ()
+setSkewX self angle = liftIO (js_setSkewX self angle)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setSkewY\"]($2); })" js_setSkewY
+        :: SVGTransform -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.setSkewY Mozilla SVGTransform.setSkewY documentation> 
+setSkewY :: (MonadIO m) => SVGTransform -> Float -> m ()
+setSkewY self angle = liftIO (js_setSkewY self angle)
+pattern SVG_TRANSFORM_UNKNOWN = 0
+pattern SVG_TRANSFORM_MATRIX = 1
+pattern SVG_TRANSFORM_TRANSLATE = 2
+pattern SVG_TRANSFORM_SCALE = 3
+pattern SVG_TRANSFORM_ROTATE = 4
+pattern SVG_TRANSFORM_SKEWX = 5
+pattern SVG_TRANSFORM_SKEWY = 6
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        SVGTransform -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.type Mozilla SVGTransform.type documentation> 
+getType :: (MonadIO m) => SVGTransform -> m Word
+getType self = liftIO (js_getType self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"matrix\"]; })" js_getMatrix ::
+        SVGTransform -> IO SVGMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.matrix Mozilla SVGTransform.matrix documentation> 
+getMatrix :: (MonadIO m) => SVGTransform -> m SVGMatrix
+getMatrix self = liftIO (js_getMatrix self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"angle\"]; })" js_getAngle ::
+        SVGTransform -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform.angle Mozilla SVGTransform.angle documentation> 
+getAngle :: (MonadIO m) => SVGTransform -> m Float
+getAngle self = liftIO (js_getAngle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGTransformList.hs
@@ -0,0 +1,162 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGTransformList
+       (js_clear, clear, js_initialize, initialize, initialize_,
+        js_getItem, getItem, getItem_, js_insertItemBefore,
+        insertItemBefore, insertItemBefore_, js_replaceItem, replaceItem,
+        replaceItem_, js_removeItem, removeItem, removeItem_,
+        js_appendItem, appendItem, appendItem_,
+        js_createSVGTransformFromMatrix, createSVGTransformFromMatrix,
+        createSVGTransformFromMatrix_, js_consolidate, consolidate,
+        consolidate_, js_getNumberOfItems, getNumberOfItems,
+        SVGTransformList(..), gTypeSVGTransformList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        SVGTransformList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.clear Mozilla SVGTransformList.clear documentation> 
+clear :: (MonadIO m) => SVGTransformList -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"initialize\"]($2); })"
+        js_initialize ::
+        SVGTransformList -> SVGTransform -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
+initialize ::
+           (MonadIO m) => SVGTransformList -> SVGTransform -> m SVGTransform
+initialize self item = liftIO (js_initialize self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.initialize Mozilla SVGTransformList.initialize documentation> 
+initialize_ ::
+            (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
+initialize_ self item = liftIO (void (js_initialize self item))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getItem\"]($2); })" js_getItem ::
+        SVGTransformList -> Word -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
+getItem ::
+        (MonadIO m) => SVGTransformList -> Word -> m SVGTransform
+getItem self index = liftIO (js_getItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.getItem Mozilla SVGTransformList.getItem documentation> 
+getItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
+getItem_ self index = liftIO (void (js_getItem self index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"insertItemBefore\"]($2, $3); })"
+        js_insertItemBefore ::
+        SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
+insertItemBefore ::
+                 (MonadIO m) =>
+                   SVGTransformList -> SVGTransform -> Word -> m SVGTransform
+insertItemBefore self item index
+  = liftIO (js_insertItemBefore self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.insertItemBefore Mozilla SVGTransformList.insertItemBefore documentation> 
+insertItemBefore_ ::
+                  (MonadIO m) => SVGTransformList -> SVGTransform -> Word -> m ()
+insertItemBefore_ self item index
+  = liftIO (void (js_insertItemBefore self item index))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"replaceItem\"]($2, $3); })"
+        js_replaceItem ::
+        SVGTransformList -> SVGTransform -> Word -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
+replaceItem ::
+            (MonadIO m) =>
+              SVGTransformList -> SVGTransform -> Word -> m SVGTransform
+replaceItem self item index
+  = liftIO (js_replaceItem self item index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.replaceItem Mozilla SVGTransformList.replaceItem documentation> 
+replaceItem_ ::
+             (MonadIO m) => SVGTransformList -> SVGTransform -> Word -> m ()
+replaceItem_ self item index
+  = liftIO (void (js_replaceItem self item index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: SVGTransformList -> Word -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
+removeItem ::
+           (MonadIO m) => SVGTransformList -> Word -> m SVGTransform
+removeItem self index = liftIO (js_removeItem self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.removeItem Mozilla SVGTransformList.removeItem documentation> 
+removeItem_ :: (MonadIO m) => SVGTransformList -> Word -> m ()
+removeItem_ self index = liftIO (void (js_removeItem self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendItem\"]($2); })"
+        js_appendItem ::
+        SVGTransformList -> SVGTransform -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
+appendItem ::
+           (MonadIO m) => SVGTransformList -> SVGTransform -> m SVGTransform
+appendItem self item = liftIO (js_appendItem self item)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.appendItem Mozilla SVGTransformList.appendItem documentation> 
+appendItem_ ::
+            (MonadIO m) => SVGTransformList -> SVGTransform -> m ()
+appendItem_ self item = liftIO (void (js_appendItem self item))
+ 
+foreign import javascript safe
+        "(($1, $2) => { return $1[\"createSVGTransformFromMatrix\"]($2); })"
+        js_createSVGTransformFromMatrix ::
+        SVGTransformList -> SVGMatrix -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix ::
+                             (MonadIO m) => SVGTransformList -> SVGMatrix -> m SVGTransform
+createSVGTransformFromMatrix self matrix
+  = liftIO (js_createSVGTransformFromMatrix self matrix)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.createSVGTransformFromMatrix Mozilla SVGTransformList.createSVGTransformFromMatrix documentation> 
+createSVGTransformFromMatrix_ ::
+                              (MonadIO m) => SVGTransformList -> SVGMatrix -> m ()
+createSVGTransformFromMatrix_ self matrix
+  = liftIO (void (js_createSVGTransformFromMatrix self matrix))
+ 
+foreign import javascript safe "(($1) => { return $1[\"consolidate\"](); })"
+        js_consolidate :: SVGTransformList -> IO SVGTransform
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
+consolidate :: (MonadIO m) => SVGTransformList -> m SVGTransform
+consolidate self = liftIO (js_consolidate self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.consolidate Mozilla SVGTransformList.consolidate documentation> 
+consolidate_ :: (MonadIO m) => SVGTransformList -> m ()
+consolidate_ self = liftIO (void (js_consolidate self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"numberOfItems\"]; })"
+        js_getNumberOfItems :: SVGTransformList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList.numberOfItems Mozilla SVGTransformList.numberOfItems documentation> 
+getNumberOfItems :: (MonadIO m) => SVGTransformList -> m Word
+getNumberOfItems self = liftIO (js_getNumberOfItems self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGURIReference.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGURIReference
+       (js_getHref, getHref, SVGURIReference(..), gTypeSVGURIReference,
+        IsSVGURIReference, toSVGURIReference)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        SVGURIReference -> IO SVGAnimatedString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference.href Mozilla SVGURIReference.href documentation> 
+getHref ::
+        (MonadIO m, IsSVGURIReference self) => self -> m SVGAnimatedString
+getHref self = liftIO (js_getHref (toSVGURIReference self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUnitTypes.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGUnitTypes
+       (pattern SVG_UNIT_TYPE_UNKNOWN,
+        pattern SVG_UNIT_TYPE_USERSPACEONUSE,
+        pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX, SVGUnitTypes(..),
+        gTypeSVGUnitTypes)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_UNIT_TYPE_UNKNOWN = 0
+pattern SVG_UNIT_TYPE_USERSPACEONUSE = 1
+pattern SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGUseElement.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGUseElement
+       (js_getX, getX, js_getY, getY, js_getWidth, getWidth, js_getHeight,
+        getHeight, SVGUseElement(..), gTypeSVGUseElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        SVGUseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.x Mozilla SVGUseElement.x documentation> 
+getX :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        SVGUseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.y Mozilla SVGUseElement.y documentation> 
+getY :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
+getY self = liftIO (js_getY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        SVGUseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.width Mozilla SVGUseElement.width documentation> 
+getWidth :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        SVGUseElement -> IO SVGAnimatedLength
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement.height Mozilla SVGUseElement.height documentation> 
+getHeight :: (MonadIO m) => SVGUseElement -> m SVGAnimatedLength
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGViewElement.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGViewElement
+       (js_getViewTarget, getViewTarget, SVGViewElement(..),
+        gTypeSVGViewElement)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewTarget\"]; })"
+        js_getViewTarget :: SVGViewElement -> IO SVGStringList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement.viewTarget Mozilla SVGViewElement.viewTarget documentation> 
+getViewTarget :: (MonadIO m) => SVGViewElement -> m SVGStringList
+getViewTarget self = liftIO (js_getViewTarget self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGViewSpec.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGViewSpec
+       (js_getTransform, getTransform, js_getViewTarget, getViewTarget,
+        js_getViewBoxString, getViewBoxString,
+        js_getPreserveAspectRatioString, getPreserveAspectRatioString,
+        js_getTransformString, getTransformString, js_getViewTargetString,
+        getViewTargetString, js_setZoomAndPan, setZoomAndPan,
+        js_getZoomAndPan, getZoomAndPan, SVGViewSpec(..), gTypeSVGViewSpec)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transform\"]; })"
+        js_getTransform :: SVGViewSpec -> IO SVGTransformList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transform Mozilla SVGViewSpec.transform documentation> 
+getTransform :: (MonadIO m) => SVGViewSpec -> m SVGTransformList
+getTransform self = liftIO (js_getTransform self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewTarget\"]; })"
+        js_getViewTarget :: SVGViewSpec -> IO SVGElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTarget Mozilla SVGViewSpec.viewTarget documentation> 
+getViewTarget :: (MonadIO m) => SVGViewSpec -> m SVGElement
+getViewTarget self = liftIO (js_getViewTarget self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewBoxString\"]; })"
+        js_getViewBoxString :: SVGViewSpec -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewBoxString Mozilla SVGViewSpec.viewBoxString documentation> 
+getViewBoxString ::
+                 (MonadIO m, FromJSString result) => SVGViewSpec -> m result
+getViewBoxString self
+  = liftIO (fromJSString <$> (js_getViewBoxString self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"preserveAspectRatioString\"]; })" js_getPreserveAspectRatioString
+        :: SVGViewSpec -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.preserveAspectRatioString Mozilla SVGViewSpec.preserveAspectRatioString documentation> 
+getPreserveAspectRatioString ::
+                             (MonadIO m, FromJSString result) => SVGViewSpec -> m result
+getPreserveAspectRatioString self
+  = liftIO (fromJSString <$> (js_getPreserveAspectRatioString self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"transformString\"]; })"
+        js_getTransformString :: SVGViewSpec -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.transformString Mozilla SVGViewSpec.transformString documentation> 
+getTransformString ::
+                   (MonadIO m, FromJSString result) => SVGViewSpec -> m result
+getTransformString self
+  = liftIO (fromJSString <$> (js_getTransformString self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewTargetString\"]; })"
+        js_getViewTargetString :: SVGViewSpec -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.viewTargetString Mozilla SVGViewSpec.viewTargetString documentation> 
+getViewTargetString ::
+                    (MonadIO m, FromJSString result) => SVGViewSpec -> m result
+getViewTargetString self
+  = liftIO (fromJSString <$> (js_getViewTargetString self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"zoomAndPan\"] = $2; })"
+        js_setZoomAndPan :: SVGViewSpec -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
+setZoomAndPan :: (MonadIO m) => SVGViewSpec -> Word -> m ()
+setZoomAndPan self val = liftIO (js_setZoomAndPan self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"zoomAndPan\"]; })"
+        js_getZoomAndPan :: SVGViewSpec -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec.zoomAndPan Mozilla SVGViewSpec.zoomAndPan documentation> 
+getZoomAndPan :: (MonadIO m) => SVGViewSpec -> m Word
+getZoomAndPan self = liftIO (js_getZoomAndPan self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomAndPan.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGZoomAndPan
+       (pattern SVG_ZOOMANDPAN_UNKNOWN, pattern SVG_ZOOMANDPAN_DISABLE,
+        pattern SVG_ZOOMANDPAN_MAGNIFY, js_setZoomAndPan, setZoomAndPan,
+        js_getZoomAndPan, getZoomAndPan, SVGZoomAndPan(..),
+        gTypeSVGZoomAndPan, IsSVGZoomAndPan, toSVGZoomAndPan)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern SVG_ZOOMANDPAN_UNKNOWN = 0
+pattern SVG_ZOOMANDPAN_DISABLE = 1
+pattern SVG_ZOOMANDPAN_MAGNIFY = 2
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"zoomAndPan\"] = $2; })"
+        js_setZoomAndPan :: SVGZoomAndPan -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
+setZoomAndPan ::
+              (MonadIO m, IsSVGZoomAndPan self) => self -> Word -> m ()
+setZoomAndPan self val
+  = liftIO (js_setZoomAndPan (toSVGZoomAndPan self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"zoomAndPan\"]; })"
+        js_getZoomAndPan :: SVGZoomAndPan -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan.zoomAndPan Mozilla SVGZoomAndPan.zoomAndPan documentation> 
+getZoomAndPan ::
+              (MonadIO m, IsSVGZoomAndPan self) => self -> m Word
+getZoomAndPan self
+  = liftIO (js_getZoomAndPan (toSVGZoomAndPan self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SVGZoomEvent.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SVGZoomEvent
+       (js_getZoomRectScreen, getZoomRectScreen, js_getPreviousScale,
+        getPreviousScale, js_getPreviousTranslate, getPreviousTranslate,
+        js_getNewScale, getNewScale, js_getNewTranslate, getNewTranslate,
+        SVGZoomEvent(..), gTypeSVGZoomEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"zoomRectScreen\"]; })"
+        js_getZoomRectScreen :: SVGZoomEvent -> IO SVGRect
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.zoomRectScreen Mozilla SVGZoomEvent.zoomRectScreen documentation> 
+getZoomRectScreen :: (MonadIO m) => SVGZoomEvent -> m SVGRect
+getZoomRectScreen self = liftIO (js_getZoomRectScreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousScale\"]; })"
+        js_getPreviousScale :: SVGZoomEvent -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousScale Mozilla SVGZoomEvent.previousScale documentation> 
+getPreviousScale :: (MonadIO m) => SVGZoomEvent -> m Float
+getPreviousScale self = liftIO (js_getPreviousScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousTranslate\"]; })"
+        js_getPreviousTranslate :: SVGZoomEvent -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.previousTranslate Mozilla SVGZoomEvent.previousTranslate documentation> 
+getPreviousTranslate :: (MonadIO m) => SVGZoomEvent -> m SVGPoint
+getPreviousTranslate self = liftIO (js_getPreviousTranslate self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newScale\"]; })" js_getNewScale
+        :: SVGZoomEvent -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newScale Mozilla SVGZoomEvent.newScale documentation> 
+getNewScale :: (MonadIO m) => SVGZoomEvent -> m Float
+getNewScale self = liftIO (js_getNewScale self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newTranslate\"]; })"
+        js_getNewTranslate :: SVGZoomEvent -> IO SVGPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent.newTranslate Mozilla SVGZoomEvent.newTranslate documentation> 
+getNewTranslate :: (MonadIO m) => SVGZoomEvent -> m SVGPoint
+getNewTranslate self = liftIO (js_getNewTranslate self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Screen.hs b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Screen.hs
@@ -0,0 +1,86 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Screen
+       (js_getHeight, getHeight, js_getWidth, getWidth, js_getColorDepth,
+        getColorDepth, js_getPixelDepth, getPixelDepth, js_getAvailLeft,
+        getAvailLeft, js_getAvailTop, getAvailTop, js_getAvailHeight,
+        getAvailHeight, js_getAvailWidth, getAvailWidth, Screen(..),
+        gTypeScreen)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.height Mozilla Screen.height documentation> 
+getHeight :: (MonadIO m) => Screen -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.width Mozilla Screen.width documentation> 
+getWidth :: (MonadIO m) => Screen -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"colorDepth\"]; })"
+        js_getColorDepth :: Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.colorDepth Mozilla Screen.colorDepth documentation> 
+getColorDepth :: (MonadIO m) => Screen -> m Word
+getColorDepth self = liftIO (js_getColorDepth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pixelDepth\"]; })"
+        js_getPixelDepth :: Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.pixelDepth Mozilla Screen.pixelDepth documentation> 
+getPixelDepth :: (MonadIO m) => Screen -> m Word
+getPixelDepth self = liftIO (js_getPixelDepth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"availLeft\"]; })"
+        js_getAvailLeft :: Screen -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availLeft Mozilla Screen.availLeft documentation> 
+getAvailLeft :: (MonadIO m) => Screen -> m Int
+getAvailLeft self = liftIO (js_getAvailLeft self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"availTop\"]; })" js_getAvailTop
+        :: Screen -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availTop Mozilla Screen.availTop documentation> 
+getAvailTop :: (MonadIO m) => Screen -> m Int
+getAvailTop self = liftIO (js_getAvailTop self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"availHeight\"]; })"
+        js_getAvailHeight :: Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availHeight Mozilla Screen.availHeight documentation> 
+getAvailHeight :: (MonadIO m) => Screen -> m Word
+getAvailHeight self = liftIO (js_getAvailHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"availWidth\"]; })"
+        js_getAvailWidth :: Screen -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Screen.availWidth Mozilla Screen.availWidth documentation> 
+getAvailWidth :: (MonadIO m) => Screen -> m Word
+getAvailWidth self = liftIO (js_getAvailWidth self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ScriptProcessorNode.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ScriptProcessorNode
+       (audioProcess, js_getBufferSize, getBufferSize,
+        ScriptProcessorNode(..), gTypeScriptProcessorNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.onaudioprocess Mozilla ScriptProcessorNode.onaudioprocess documentation> 
+audioProcess :: EventName ScriptProcessorNode AudioProcessingEvent
+audioProcess = unsafeEventName (toJSString "audioprocess")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bufferSize\"]; })"
+        js_getBufferSize :: ScriptProcessorNode -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode.bufferSize Mozilla ScriptProcessorNode.bufferSize documentation> 
+getBufferSize :: (MonadIO m) => ScriptProcessorNode -> m Int
+getBufferSize self = liftIO (js_getBufferSize self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SecurityPolicyViolationEvent.hs
@@ -0,0 +1,148 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SecurityPolicyViolationEvent
+       (js_newSecurityPolicyViolationEvent,
+        newSecurityPolicyViolationEvent, js_getDocumentURI, getDocumentURI,
+        js_getReferrer, getReferrer, js_getBlockedURI, getBlockedURI,
+        js_getViolatedDirective, getViolatedDirective,
+        js_getEffectiveDirective, getEffectiveDirective,
+        js_getOriginalPolicy, getOriginalPolicy, js_getSourceFile,
+        getSourceFile, js_getStatusCode, getStatusCode, js_getLineNumber,
+        getLineNumber, js_getColumnNumber, getColumnNumber,
+        SecurityPolicyViolationEvent(..),
+        gTypeSecurityPolicyViolationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"SecurityPolicyViolationEvent\"]($1,\n$2); })"
+        js_newSecurityPolicyViolationEvent ::
+        JSString ->
+          Optional SecurityPolicyViolationEventInit ->
+            IO SecurityPolicyViolationEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation> 
+newSecurityPolicyViolationEvent ::
+                                (MonadIO m, ToJSString type') =>
+                                  type' ->
+                                    Maybe SecurityPolicyViolationEventInit ->
+                                      m SecurityPolicyViolationEvent
+newSecurityPolicyViolationEvent type' eventInitDict
+  = liftIO
+      (js_newSecurityPolicyViolationEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"documentURI\"]; })"
+        js_getDocumentURI :: SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.documentURI Mozilla SecurityPolicyViolationEvent.documentURI documentation> 
+getDocumentURI ::
+               (MonadIO m, FromJSString result) =>
+                 SecurityPolicyViolationEvent -> m result
+getDocumentURI self
+  = liftIO (fromJSString <$> (js_getDocumentURI self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"referrer\"]; })" js_getReferrer
+        :: SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.referrer Mozilla SecurityPolicyViolationEvent.referrer documentation> 
+getReferrer ::
+            (MonadIO m, FromJSString result) =>
+              SecurityPolicyViolationEvent -> m result
+getReferrer self = liftIO (fromJSString <$> (js_getReferrer self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"blockedURI\"]; })"
+        js_getBlockedURI :: SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.blockedURI Mozilla SecurityPolicyViolationEvent.blockedURI documentation> 
+getBlockedURI ::
+              (MonadIO m, FromJSString result) =>
+                SecurityPolicyViolationEvent -> m result
+getBlockedURI self
+  = liftIO (fromJSString <$> (js_getBlockedURI self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"violatedDirective\"]; })"
+        js_getViolatedDirective ::
+        SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.violatedDirective Mozilla SecurityPolicyViolationEvent.violatedDirective documentation> 
+getViolatedDirective ::
+                     (MonadIO m, FromJSString result) =>
+                       SecurityPolicyViolationEvent -> m result
+getViolatedDirective self
+  = liftIO (fromJSString <$> (js_getViolatedDirective self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"effectiveDirective\"]; })"
+        js_getEffectiveDirective ::
+        SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.effectiveDirective Mozilla SecurityPolicyViolationEvent.effectiveDirective documentation> 
+getEffectiveDirective ::
+                      (MonadIO m, FromJSString result) =>
+                        SecurityPolicyViolationEvent -> m result
+getEffectiveDirective self
+  = liftIO (fromJSString <$> (js_getEffectiveDirective self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"originalPolicy\"]; })"
+        js_getOriginalPolicy :: SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.originalPolicy Mozilla SecurityPolicyViolationEvent.originalPolicy documentation> 
+getOriginalPolicy ::
+                  (MonadIO m, FromJSString result) =>
+                    SecurityPolicyViolationEvent -> m result
+getOriginalPolicy self
+  = liftIO (fromJSString <$> (js_getOriginalPolicy self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceFile\"]; })"
+        js_getSourceFile :: SecurityPolicyViolationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.sourceFile Mozilla SecurityPolicyViolationEvent.sourceFile documentation> 
+getSourceFile ::
+              (MonadIO m, FromJSString result) =>
+                SecurityPolicyViolationEvent -> m result
+getSourceFile self
+  = liftIO (fromJSString <$> (js_getSourceFile self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"statusCode\"]; })"
+        js_getStatusCode :: SecurityPolicyViolationEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.statusCode Mozilla SecurityPolicyViolationEvent.statusCode documentation> 
+getStatusCode ::
+              (MonadIO m) => SecurityPolicyViolationEvent -> m Word
+getStatusCode self = liftIO (js_getStatusCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lineNumber\"]; })"
+        js_getLineNumber :: SecurityPolicyViolationEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.lineNumber Mozilla SecurityPolicyViolationEvent.lineNumber documentation> 
+getLineNumber ::
+              (MonadIO m) => SecurityPolicyViolationEvent -> m Int
+getLineNumber self = liftIO (js_getLineNumber self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"columnNumber\"]; })"
+        js_getColumnNumber :: SecurityPolicyViolationEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent.columnNumber Mozilla SecurityPolicyViolationEvent.columnNumber documentation> 
+getColumnNumber ::
+                (MonadIO m) => SecurityPolicyViolationEvent -> m Int
+getColumnNumber self = liftIO (js_getColumnNumber self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Selection.hs b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Selection.hs
@@ -0,0 +1,336 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Selection
+       (js_collapse, collapse, js_collapseToEnd, collapseToEnd,
+        js_collapseToStart, collapseToStart, js_deleteFromDocument,
+        deleteFromDocument, js_containsNode, containsNode, containsNode_,
+        js_selectAllChildren, selectAllChildren, js_extend, extend,
+        js_getRangeAt, getRangeAt, getRangeAt_, js_removeAllRanges,
+        removeAllRanges, js_addRange, addRange, js_toString, toString,
+        toString_, js_setBaseAndExtent, setBaseAndExtent, js_setPosition,
+        setPosition, js_empty, empty, js_modify, modify, js_getAnchorNode,
+        getAnchorNode, getAnchorNodeUnsafe, getAnchorNodeUnchecked,
+        js_getAnchorOffset, getAnchorOffset, js_getFocusNode, getFocusNode,
+        getFocusNodeUnsafe, getFocusNodeUnchecked, js_getFocusOffset,
+        getFocusOffset, js_getIsCollapsed, getIsCollapsed,
+        js_getRangeCount, getRangeCount, js_getType, getType,
+        js_getBaseNode, getBaseNode, getBaseNodeUnsafe,
+        getBaseNodeUnchecked, js_getBaseOffset, getBaseOffset,
+        js_getExtentNode, getExtentNode, getExtentNodeUnsafe,
+        getExtentNodeUnchecked, js_getExtentOffset, getExtentOffset,
+        Selection(..), gTypeSelection)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"collapse\"]($2, $3); })"
+        js_collapse :: Selection -> Optional Node -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapse Mozilla Selection.collapse documentation> 
+collapse ::
+         (MonadIO m, IsNode node) =>
+           Selection -> Maybe node -> Maybe Word -> m ()
+collapse self node offset
+  = liftIO
+      (js_collapse self (maybeToOptional (fmap toNode node))
+         (maybeToOptional offset))
+ 
+foreign import javascript safe "(($1) => { return $1[\"collapseToEnd\"](); })"
+        js_collapseToEnd :: Selection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToEnd Mozilla Selection.collapseToEnd documentation> 
+collapseToEnd :: (MonadIO m) => Selection -> m ()
+collapseToEnd self = liftIO (js_collapseToEnd self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"collapseToStart\"](); })"
+        js_collapseToStart :: Selection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.collapseToStart Mozilla Selection.collapseToStart documentation> 
+collapseToStart :: (MonadIO m) => Selection -> m ()
+collapseToStart self = liftIO (js_collapseToStart self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deleteFromDocument\"](); })"
+        js_deleteFromDocument :: Selection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.deleteFromDocument Mozilla Selection.deleteFromDocument documentation> 
+deleteFromDocument :: (MonadIO m) => Selection -> m ()
+deleteFromDocument self = liftIO (js_deleteFromDocument self)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return ($1[\"containsNode\"]($2,\n$3) ? 1 : 0); })" js_containsNode ::
+        Selection -> Node -> Bool -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
+containsNode ::
+             (MonadIO m, IsNode node) => Selection -> node -> Bool -> m Bool
+containsNode self node allowPartial
+  = liftIO (js_containsNode self (toNode node) allowPartial)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.containsNode Mozilla Selection.containsNode documentation> 
+containsNode_ ::
+              (MonadIO m, IsNode node) => Selection -> node -> Bool -> m ()
+containsNode_ self node allowPartial
+  = liftIO (void (js_containsNode self (toNode node) allowPartial))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"selectAllChildren\"]($2); })"
+        js_selectAllChildren :: Selection -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.selectAllChildren Mozilla Selection.selectAllChildren documentation> 
+selectAllChildren ::
+                  (MonadIO m, IsNode node) => Selection -> node -> m ()
+selectAllChildren self node
+  = liftIO (js_selectAllChildren self (toNode node))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"extend\"]($2, $3); })" js_extend
+        :: Selection -> Node -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extend Mozilla Selection.extend documentation> 
+extend ::
+       (MonadIO m, IsNode node) => Selection -> node -> Maybe Word -> m ()
+extend self node offset
+  = liftIO (js_extend self (toNode node) (maybeToOptional offset))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"getRangeAt\"]($2); })"
+        js_getRangeAt :: Selection -> Word -> IO Range
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+getRangeAt :: (MonadIO m) => Selection -> Word -> m Range
+getRangeAt self index = liftIO (js_getRangeAt self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.getRangeAt Mozilla Selection.getRangeAt documentation> 
+getRangeAt_ :: (MonadIO m) => Selection -> Word -> m ()
+getRangeAt_ self index = liftIO (void (js_getRangeAt self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"removeAllRanges\"](); })"
+        js_removeAllRanges :: Selection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.removeAllRanges Mozilla Selection.removeAllRanges documentation> 
+removeAllRanges :: (MonadIO m) => Selection -> m ()
+removeAllRanges self = liftIO (js_removeAllRanges self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addRange\"]($2); })" js_addRange
+        :: Selection -> Range -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.addRange Mozilla Selection.addRange documentation> 
+addRange :: (MonadIO m) => Selection -> Range -> m ()
+addRange self range = liftIO (js_addRange self range)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: Selection -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => Selection -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.toString Mozilla Selection.toString documentation> 
+toString_ :: (MonadIO m) => Selection -> m ()
+toString_ self = liftIO (void (js_toString self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"setBaseAndExtent\"]($2, $3,\n$4, $5); })" js_setBaseAndExtent ::
+        Selection ->
+          Optional Node -> Word -> Optional Node -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setBaseAndExtent Mozilla Selection.setBaseAndExtent documentation> 
+setBaseAndExtent ::
+                 (MonadIO m, IsNode baseNode, IsNode extentNode) =>
+                   Selection ->
+                     Maybe baseNode -> Word -> Maybe extentNode -> Word -> m ()
+setBaseAndExtent self baseNode baseOffset extentNode extentOffset
+  = liftIO
+      (js_setBaseAndExtent self (maybeToOptional (fmap toNode baseNode))
+         baseOffset
+         (maybeToOptional (fmap toNode extentNode))
+         extentOffset)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setPosition\"]($2, $3); })"
+        js_setPosition ::
+        Selection -> Optional Node -> Optional Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.setPosition Mozilla Selection.setPosition documentation> 
+setPosition ::
+            (MonadIO m, IsNode node) =>
+              Selection -> Maybe node -> Maybe Word -> m ()
+setPosition self node offset
+  = liftIO
+      (js_setPosition self (maybeToOptional (fmap toNode node))
+         (maybeToOptional offset))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"empty\"](); })" js_empty ::
+        Selection -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.empty Mozilla Selection.empty documentation> 
+empty :: (MonadIO m) => Selection -> m ()
+empty self = liftIO (js_empty self)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"modify\"]($2, $3, $4); })"
+        js_modify ::
+        Selection ->
+          Optional JSString ->
+            Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.modify Mozilla Selection.modify documentation> 
+modify ::
+       (MonadIO m, ToJSString alter, ToJSString direction,
+        ToJSString granularity) =>
+         Selection ->
+           Maybe alter -> Maybe direction -> Maybe granularity -> m ()
+modify self alter direction granularity
+  = liftIO
+      (js_modify self (toOptionalJSString alter)
+         (toOptionalJSString direction)
+         (toOptionalJSString granularity))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"anchorNode\"]; })"
+        js_getAnchorNode :: Selection -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+getAnchorNode :: (MonadIO m) => Selection -> m (Maybe Node)
+getAnchorNode self
+  = liftIO (nullableToMaybe <$> (js_getAnchorNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+getAnchorNodeUnsafe ::
+                    (MonadIO m, HasCallStack) => Selection -> m Node
+getAnchorNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAnchorNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorNode Mozilla Selection.anchorNode documentation> 
+getAnchorNodeUnchecked :: (MonadIO m) => Selection -> m Node
+getAnchorNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getAnchorNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"anchorOffset\"]; })"
+        js_getAnchorOffset :: Selection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.anchorOffset Mozilla Selection.anchorOffset documentation> 
+getAnchorOffset :: (MonadIO m) => Selection -> m Word
+getAnchorOffset self = liftIO (js_getAnchorOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"focusNode\"]; })"
+        js_getFocusNode :: Selection -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+getFocusNode :: (MonadIO m) => Selection -> m (Maybe Node)
+getFocusNode self
+  = liftIO (nullableToMaybe <$> (js_getFocusNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+getFocusNodeUnsafe ::
+                   (MonadIO m, HasCallStack) => Selection -> m Node
+getFocusNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFocusNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusNode Mozilla Selection.focusNode documentation> 
+getFocusNodeUnchecked :: (MonadIO m) => Selection -> m Node
+getFocusNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getFocusNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"focusOffset\"]; })"
+        js_getFocusOffset :: Selection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.focusOffset Mozilla Selection.focusOffset documentation> 
+getFocusOffset :: (MonadIO m) => Selection -> m Word
+getFocusOffset self = liftIO (js_getFocusOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"isCollapsed\"] ? 1 : 0); })"
+        js_getIsCollapsed :: Selection -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.isCollapsed Mozilla Selection.isCollapsed documentation> 
+getIsCollapsed :: (MonadIO m) => Selection -> m Bool
+getIsCollapsed self = liftIO (js_getIsCollapsed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rangeCount\"]; })"
+        js_getRangeCount :: Selection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.rangeCount Mozilla Selection.rangeCount documentation> 
+getRangeCount :: (MonadIO m) => Selection -> m Word
+getRangeCount self = liftIO (js_getRangeCount self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        Selection -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.type Mozilla Selection.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => Selection -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseNode\"]; })" js_getBaseNode
+        :: Selection -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
+getBaseNode :: (MonadIO m) => Selection -> m (Maybe Node)
+getBaseNode self
+  = liftIO (nullableToMaybe <$> (js_getBaseNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
+getBaseNodeUnsafe ::
+                  (MonadIO m, HasCallStack) => Selection -> m Node
+getBaseNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getBaseNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseNode Mozilla Selection.baseNode documentation> 
+getBaseNodeUnchecked :: (MonadIO m) => Selection -> m Node
+getBaseNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getBaseNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"baseOffset\"]; })"
+        js_getBaseOffset :: Selection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.baseOffset Mozilla Selection.baseOffset documentation> 
+getBaseOffset :: (MonadIO m) => Selection -> m Word
+getBaseOffset self = liftIO (js_getBaseOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"extentNode\"]; })"
+        js_getExtentNode :: Selection -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
+getExtentNode :: (MonadIO m) => Selection -> m (Maybe Node)
+getExtentNode self
+  = liftIO (nullableToMaybe <$> (js_getExtentNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
+getExtentNodeUnsafe ::
+                    (MonadIO m, HasCallStack) => Selection -> m Node
+getExtentNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getExtentNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentNode Mozilla Selection.extentNode documentation> 
+getExtentNodeUnchecked :: (MonadIO m) => Selection -> m Node
+getExtentNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getExtentNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"extentOffset\"]; })"
+        js_getExtentOffset :: Selection -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Selection.extentOffset Mozilla Selection.extentOffset documentation> 
+getExtentOffset :: (MonadIO m) => Selection -> m Word
+getExtentOffset self = liftIO (js_getExtentOffset self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ShadowRoot.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ShadowRoot
+       (js_getMode, getMode, js_getHost, getHost, js_setInnerHTML,
+        setInnerHTML, js_getInnerHTML, getInnerHTML, ShadowRoot(..),
+        gTypeShadowRoot)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        ShadowRoot -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.mode Mozilla ShadowRoot.mode documentation> 
+getMode :: (MonadIO m) => ShadowRoot -> m ShadowRootMode
+getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
+        ShadowRoot -> IO Element
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.host Mozilla ShadowRoot.host documentation> 
+getHost :: (MonadIO m) => ShadowRoot -> m Element
+getHost self = liftIO (js_getHost self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"innerHTML\"] = $2; })"
+        js_setInnerHTML :: ShadowRoot -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
+setInnerHTML ::
+             (MonadIO m, ToJSString val) => ShadowRoot -> val -> m ()
+setInnerHTML self val
+  = liftIO (js_setInnerHTML self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"innerHTML\"]; })"
+        js_getInnerHTML :: ShadowRoot -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot.innerHTML Mozilla ShadowRoot.innerHTML documentation> 
+getInnerHTML ::
+             (MonadIO m, FromJSString result) => ShadowRoot -> m result
+getInnerHTML self
+  = liftIO (fromJSString <$> (js_getInnerHTML self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs b/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SiteBoundCredential.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SiteBoundCredential
+       (js_getName, getName, js_getIconURL, getIconURL,
+        SiteBoundCredential(..), gTypeSiteBoundCredential,
+        IsSiteBoundCredential, toSiteBoundCredential)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        SiteBoundCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.name Mozilla SiteBoundCredential.name documentation> 
+getName ::
+        (MonadIO m, IsSiteBoundCredential self, FromJSString result) =>
+          self -> m result
+getName self
+  = liftIO
+      (fromJSString <$> (js_getName (toSiteBoundCredential self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"iconURL\"]; })" js_getIconURL ::
+        SiteBoundCredential -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential.iconURL Mozilla SiteBoundCredential.iconURL documentation> 
+getIconURL ::
+           (MonadIO m, IsSiteBoundCredential self, FromJSString result) =>
+             self -> m result
+getIconURL self
+  = liftIO
+      (fromJSString <$> (js_getIconURL (toSiteBoundCredential self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs b/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Slotable.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Slotable
+       (js_getAssignedSlot, getAssignedSlot, getAssignedSlotUnsafe,
+        getAssignedSlotUnchecked, Slotable(..), gTypeSlotable, IsSlotable,
+        toSlotable)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"assignedSlot\"]; })"
+        js_getAssignedSlot :: Slotable -> IO (Nullable HTMLSlotElement)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
+getAssignedSlot ::
+                (MonadIO m, IsSlotable self) => self -> m (Maybe HTMLSlotElement)
+getAssignedSlot self
+  = liftIO
+      (nullableToMaybe <$> (js_getAssignedSlot (toSlotable self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
+getAssignedSlotUnsafe ::
+                      (MonadIO m, IsSlotable self, HasCallStack) =>
+                        self -> m HTMLSlotElement
+getAssignedSlotUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getAssignedSlot (toSlotable self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Slotable.assignedSlot Mozilla Slotable.assignedSlot documentation> 
+getAssignedSlotUnchecked ::
+                         (MonadIO m, IsSlotable self) => self -> m HTMLSlotElement
+getAssignedSlotUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getAssignedSlot (toSlotable self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBuffer.hs
@@ -0,0 +1,174 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SourceBuffer
+       (js_appendBuffer, appendBuffer, js_abort, abort, js_remove, remove,
+        js_setMode, setMode, js_getMode, getMode, js_getUpdating,
+        getUpdating, js_getBuffered, getBuffered, js_setTimestampOffset,
+        setTimestampOffset, js_getTimestampOffset, getTimestampOffset,
+        js_getAudioTracks, getAudioTracks, js_getVideoTracks,
+        getVideoTracks, js_getTextTracks, getTextTracks,
+        js_setAppendWindowStart, setAppendWindowStart,
+        js_getAppendWindowStart, getAppendWindowStart,
+        js_setAppendWindowEnd, setAppendWindowEnd, js_getAppendWindowEnd,
+        getAppendWindowEnd, updatestart, update, updateend, error,
+        abortEvent, SourceBuffer(..), gTypeSourceBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"appendBuffer\"]($2); })"
+        js_appendBuffer :: SourceBuffer -> BufferSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendBuffer Mozilla SourceBuffer.appendBuffer documentation> 
+appendBuffer ::
+             (MonadIO m, IsBufferSource data') => SourceBuffer -> data' -> m ()
+appendBuffer self data'
+  = liftIO (js_appendBuffer self (toBufferSource data'))
+ 
+foreign import javascript safe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        SourceBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.abort Mozilla SourceBuffer.abort documentation> 
+abort :: (MonadIO m) => SourceBuffer -> m ()
+abort self = liftIO (js_abort self)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"remove\"]($2, $3); })" js_remove
+        :: SourceBuffer -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.remove Mozilla SourceBuffer.remove documentation> 
+remove :: (MonadIO m) => SourceBuffer -> Double -> Double -> m ()
+remove self start end = liftIO (js_remove self start end)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"mode\"] = $2; })" js_setMode ::
+        SourceBuffer -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+setMode :: (MonadIO m) => SourceBuffer -> AppendMode -> m ()
+setMode self val = liftIO (js_setMode self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        SourceBuffer -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.mode Mozilla SourceBuffer.mode documentation> 
+getMode :: (MonadIO m) => SourceBuffer -> m AppendMode
+getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"updating\"] ? 1 : 0); })"
+        js_getUpdating :: SourceBuffer -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.updating Mozilla SourceBuffer.updating documentation> 
+getUpdating :: (MonadIO m) => SourceBuffer -> m Bool
+getUpdating self = liftIO (js_getUpdating self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"buffered\"]; })" js_getBuffered ::
+        SourceBuffer -> IO TimeRanges
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.buffered Mozilla SourceBuffer.buffered documentation> 
+getBuffered :: (MonadIO m) => SourceBuffer -> m TimeRanges
+getBuffered self = liftIO (js_getBuffered self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"timestampOffset\"] = $2; })"
+        js_setTimestampOffset :: SourceBuffer -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
+setTimestampOffset :: (MonadIO m) => SourceBuffer -> Double -> m ()
+setTimestampOffset self val
+  = liftIO (js_setTimestampOffset self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timestampOffset\"]; })"
+        js_getTimestampOffset :: SourceBuffer -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.timestampOffset Mozilla SourceBuffer.timestampOffset documentation> 
+getTimestampOffset :: (MonadIO m) => SourceBuffer -> m Double
+getTimestampOffset self = liftIO (js_getTimestampOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"audioTracks\"]; })"
+        js_getAudioTracks :: SourceBuffer -> IO AudioTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.audioTracks Mozilla SourceBuffer.audioTracks documentation> 
+getAudioTracks :: (MonadIO m) => SourceBuffer -> m AudioTrackList
+getAudioTracks self = liftIO (js_getAudioTracks self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"videoTracks\"]; })"
+        js_getVideoTracks :: SourceBuffer -> IO VideoTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.videoTracks Mozilla SourceBuffer.videoTracks documentation> 
+getVideoTracks :: (MonadIO m) => SourceBuffer -> m VideoTrackList
+getVideoTracks self = liftIO (js_getVideoTracks self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textTracks\"]; })"
+        js_getTextTracks :: SourceBuffer -> IO TextTrackList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.textTracks Mozilla SourceBuffer.textTracks documentation> 
+getTextTracks :: (MonadIO m) => SourceBuffer -> m TextTrackList
+getTextTracks self = liftIO (js_getTextTracks self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"appendWindowStart\"] = $2; })"
+        js_setAppendWindowStart :: SourceBuffer -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
+setAppendWindowStart ::
+                     (MonadIO m) => SourceBuffer -> Double -> m ()
+setAppendWindowStart self val
+  = liftIO (js_setAppendWindowStart self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"appendWindowStart\"]; })"
+        js_getAppendWindowStart :: SourceBuffer -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowStart Mozilla SourceBuffer.appendWindowStart documentation> 
+getAppendWindowStart :: (MonadIO m) => SourceBuffer -> m Double
+getAppendWindowStart self = liftIO (js_getAppendWindowStart self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"appendWindowEnd\"] = $2; })"
+        js_setAppendWindowEnd :: SourceBuffer -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
+setAppendWindowEnd :: (MonadIO m) => SourceBuffer -> Double -> m ()
+setAppendWindowEnd self val
+  = liftIO (js_setAppendWindowEnd self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"appendWindowEnd\"]; })"
+        js_getAppendWindowEnd :: SourceBuffer -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.appendWindowEnd Mozilla SourceBuffer.appendWindowEnd documentation> 
+getAppendWindowEnd :: (MonadIO m) => SourceBuffer -> m Double
+getAppendWindowEnd self = liftIO (js_getAppendWindowEnd self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdatestart Mozilla SourceBuffer.onupdatestart documentation> 
+updatestart :: EventName SourceBuffer onupdatestart
+updatestart = unsafeEventName (toJSString "updatestart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdate Mozilla SourceBuffer.onupdate documentation> 
+update :: EventName SourceBuffer onupdate
+update = unsafeEventName (toJSString "update")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onupdateend Mozilla SourceBuffer.onupdateend documentation> 
+updateend :: EventName SourceBuffer onupdateend
+updateend = unsafeEventName (toJSString "updateend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onerror Mozilla SourceBuffer.onerror documentation> 
+error :: EventName SourceBuffer UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer.onabort Mozilla SourceBuffer.onabort documentation> 
+abortEvent :: EventName SourceBuffer UIEvent
+abortEvent = unsafeEventNameAsync (toJSString "abort")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SourceBufferList.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SourceBufferList
+       (js_item, item, item_, js_getLength, getLength, addsourcebuffer,
+        removesourcebuffer, SourceBufferList(..), gTypeSourceBufferList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        SourceBufferList -> Word -> IO SourceBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
+item :: (MonadIO m) => SourceBufferList -> Word -> m SourceBuffer
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.item Mozilla SourceBufferList.item documentation> 
+item_ :: (MonadIO m) => SourceBufferList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        SourceBufferList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.length Mozilla SourceBufferList.length documentation> 
+getLength :: (MonadIO m) => SourceBufferList -> m Word
+getLength self = liftIO (js_getLength self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.onaddsourcebuffer Mozilla SourceBufferList.onaddsourcebuffer documentation> 
+addsourcebuffer :: EventName SourceBufferList onaddsourcebuffer
+addsourcebuffer = unsafeEventName (toJSString "addsourcebuffer")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList.onremovesourcebuffer Mozilla SourceBufferList.onremovesourcebuffer documentation> 
+removesourcebuffer ::
+                     EventName SourceBufferList onremovesourcebuffer
+removesourcebuffer
+  = unsafeEventName (toJSString "removesourcebuffer")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesis.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesis
+       (js_speak, speak, js_cancel, cancel, js_pause, pause, js_resume,
+        resume, js_getVoices, getVoices, getVoices_, js_getPending,
+        getPending, js_getSpeaking, getSpeaking, js_getPaused, getPaused,
+        SpeechSynthesis(..), gTypeSpeechSynthesis)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"speak\"]($2); })" js_speak ::
+        SpeechSynthesis -> SpeechSynthesisUtterance -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speak Mozilla SpeechSynthesis.speak documentation> 
+speak ::
+      (MonadIO m) => SpeechSynthesis -> SpeechSynthesisUtterance -> m ()
+speak self utterance = liftIO (js_speak self utterance)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cancel\"](); })" js_cancel ::
+        SpeechSynthesis -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.cancel Mozilla SpeechSynthesis.cancel documentation> 
+cancel :: (MonadIO m) => SpeechSynthesis -> m ()
+cancel self = liftIO (js_cancel self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pause\"](); })" js_pause ::
+        SpeechSynthesis -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pause Mozilla SpeechSynthesis.pause documentation> 
+pause :: (MonadIO m) => SpeechSynthesis -> m ()
+pause self = liftIO (js_pause self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"resume\"](); })" js_resume ::
+        SpeechSynthesis -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.resume Mozilla SpeechSynthesis.resume documentation> 
+resume :: (MonadIO m) => SpeechSynthesis -> m ()
+resume self = liftIO (js_resume self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getVoices\"](); })" js_getVoices
+        :: SpeechSynthesis -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
+getVoices ::
+          (MonadIO m) => SpeechSynthesis -> m [SpeechSynthesisVoice]
+getVoices self
+  = liftIO ((js_getVoices self) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.getVoices Mozilla SpeechSynthesis.getVoices documentation> 
+getVoices_ :: (MonadIO m) => SpeechSynthesis -> m ()
+getVoices_ self = liftIO (void (js_getVoices self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"pending\"] ? 1 : 0); })"
+        js_getPending :: SpeechSynthesis -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.pending Mozilla SpeechSynthesis.pending documentation> 
+getPending :: (MonadIO m) => SpeechSynthesis -> m Bool
+getPending self = liftIO (js_getPending self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"speaking\"] ? 1 : 0); })"
+        js_getSpeaking :: SpeechSynthesis -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.speaking Mozilla SpeechSynthesis.speaking documentation> 
+getSpeaking :: (MonadIO m) => SpeechSynthesis -> m Bool
+getSpeaking self = liftIO (js_getSpeaking self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"paused\"] ? 1 : 0); })"
+        js_getPaused :: SpeechSynthesis -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis.paused Mozilla SpeechSynthesis.paused documentation> 
+getPaused :: (MonadIO m) => SpeechSynthesis -> m Bool
+getPaused self = liftIO (js_getPaused self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisEvent
+       (js_getCharIndex, getCharIndex, js_getElapsedTime, getElapsedTime,
+        js_getName, getName, SpeechSynthesisEvent(..),
+        gTypeSpeechSynthesisEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"charIndex\"]; })"
+        js_getCharIndex :: SpeechSynthesisEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.charIndex Mozilla SpeechSynthesisEvent.charIndex documentation> 
+getCharIndex :: (MonadIO m) => SpeechSynthesisEvent -> m Word
+getCharIndex self = liftIO (js_getCharIndex self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: SpeechSynthesisEvent -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.elapsedTime Mozilla SpeechSynthesisEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadIO m) => SpeechSynthesisEvent -> m Float
+getElapsedTime self = liftIO (js_getElapsedTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        SpeechSynthesisEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent.name Mozilla SpeechSynthesisEvent.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) =>
+          SpeechSynthesisEvent -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisUtterance.hs
@@ -0,0 +1,187 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisUtterance
+       (js_newSpeechSynthesisUtterance, newSpeechSynthesisUtterance,
+        js_setText, setText, js_getText, getText, js_setLang, setLang,
+        js_getLang, getLang, js_setVoice, setVoice, js_getVoice, getVoice,
+        getVoiceUnsafe, getVoiceUnchecked, js_setVolume, setVolume,
+        js_getVolume, getVolume, js_setRate, setRate, js_getRate, getRate,
+        js_setPitch, setPitch, js_getPitch, getPitch, start, end, error,
+        pause, resume, mark, boundary, SpeechSynthesisUtterance(..),
+        gTypeSpeechSynthesisUtterance)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1) => { return new window[\"SpeechSynthesisUtterance\"]($1); })"
+        js_newSpeechSynthesisUtterance ::
+        Optional JSString -> IO SpeechSynthesisUtterance
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation> 
+newSpeechSynthesisUtterance ::
+                            (MonadIO m, ToJSString text) =>
+                              Maybe text -> m SpeechSynthesisUtterance
+newSpeechSynthesisUtterance text
+  = liftIO (js_newSpeechSynthesisUtterance (toOptionalJSString text))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        SpeechSynthesisUtterance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
+setText ::
+        (MonadIO m, ToJSString val) =>
+          SpeechSynthesisUtterance -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        SpeechSynthesisUtterance -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.text Mozilla SpeechSynthesisUtterance.text documentation> 
+getText ::
+        (MonadIO m, FromJSString result) =>
+          SpeechSynthesisUtterance -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"lang\"] = $2; })" js_setLang ::
+        SpeechSynthesisUtterance -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
+setLang ::
+        (MonadIO m, ToJSString val) =>
+          SpeechSynthesisUtterance -> val -> m ()
+setLang self val = liftIO (js_setLang self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
+        SpeechSynthesisUtterance -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.lang Mozilla SpeechSynthesisUtterance.lang documentation> 
+getLang ::
+        (MonadIO m, FromJSString result) =>
+          SpeechSynthesisUtterance -> m result
+getLang self = liftIO (fromJSString <$> (js_getLang self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"voice\"] = $2; })" js_setVoice
+        ::
+        SpeechSynthesisUtterance -> Optional SpeechSynthesisVoice -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+setVoice ::
+         (MonadIO m) =>
+           SpeechSynthesisUtterance -> Maybe SpeechSynthesisVoice -> m ()
+setVoice self val = liftIO (js_setVoice self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"voice\"]; })" js_getVoice ::
+        SpeechSynthesisUtterance -> IO (Nullable SpeechSynthesisVoice)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+getVoice ::
+         (MonadIO m) =>
+           SpeechSynthesisUtterance -> m (Maybe SpeechSynthesisVoice)
+getVoice self = liftIO (nullableToMaybe <$> (js_getVoice self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+getVoiceUnsafe ::
+               (MonadIO m, HasCallStack) =>
+                 SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getVoice self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.voice Mozilla SpeechSynthesisUtterance.voice documentation> 
+getVoiceUnchecked ::
+                  (MonadIO m) => SpeechSynthesisUtterance -> m SpeechSynthesisVoice
+getVoiceUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getVoice self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"volume\"] = $2; })"
+        js_setVolume :: SpeechSynthesisUtterance -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
+setVolume ::
+          (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
+setVolume self val = liftIO (js_setVolume self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"volume\"]; })" js_getVolume ::
+        SpeechSynthesisUtterance -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.volume Mozilla SpeechSynthesisUtterance.volume documentation> 
+getVolume :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
+getVolume self = liftIO (js_getVolume self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"rate\"] = $2; })" js_setRate ::
+        SpeechSynthesisUtterance -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
+setRate :: (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
+setRate self val = liftIO (js_setRate self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rate\"]; })" js_getRate ::
+        SpeechSynthesisUtterance -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.rate Mozilla SpeechSynthesisUtterance.rate documentation> 
+getRate :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
+getRate self = liftIO (js_getRate self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pitch\"] = $2; })" js_setPitch
+        :: SpeechSynthesisUtterance -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
+setPitch ::
+         (MonadIO m) => SpeechSynthesisUtterance -> Float -> m ()
+setPitch self val = liftIO (js_setPitch self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pitch\"]; })" js_getPitch ::
+        SpeechSynthesisUtterance -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.pitch Mozilla SpeechSynthesisUtterance.pitch documentation> 
+getPitch :: (MonadIO m) => SpeechSynthesisUtterance -> m Float
+getPitch self = liftIO (js_getPitch self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onstart Mozilla SpeechSynthesisUtterance.onstart documentation> 
+start :: EventName SpeechSynthesisUtterance Event
+start = unsafeEventName (toJSString "start")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onend Mozilla SpeechSynthesisUtterance.onend documentation> 
+end :: EventName SpeechSynthesisUtterance Event
+end = unsafeEventName (toJSString "end")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onerror Mozilla SpeechSynthesisUtterance.onerror documentation> 
+error :: EventName SpeechSynthesisUtterance UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onpause Mozilla SpeechSynthesisUtterance.onpause documentation> 
+pause :: EventName SpeechSynthesisUtterance Event
+pause = unsafeEventName (toJSString "pause")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onresume Mozilla SpeechSynthesisUtterance.onresume documentation> 
+resume :: EventName SpeechSynthesisUtterance Event
+resume = unsafeEventName (toJSString "resume")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onmark Mozilla SpeechSynthesisUtterance.onmark documentation> 
+mark :: EventName SpeechSynthesisUtterance Event
+mark = unsafeEventName (toJSString "mark")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance.onboundary Mozilla SpeechSynthesisUtterance.onboundary documentation> 
+boundary :: EventName SpeechSynthesisUtterance Event
+boundary = unsafeEventName (toJSString "boundary")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SpeechSynthesisVoice.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SpeechSynthesisVoice
+       (js_getVoiceURI, getVoiceURI, js_getName, getName, js_getLang,
+        getLang, js_getLocalService, getLocalService, js_getDefault,
+        getDefault, SpeechSynthesisVoice(..), gTypeSpeechSynthesisVoice)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"voiceURI\"]; })" js_getVoiceURI
+        :: SpeechSynthesisVoice -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.voiceURI Mozilla SpeechSynthesisVoice.voiceURI documentation> 
+getVoiceURI ::
+            (MonadIO m, FromJSString result) =>
+              SpeechSynthesisVoice -> m result
+getVoiceURI self = liftIO (fromJSString <$> (js_getVoiceURI self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        SpeechSynthesisVoice -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.name Mozilla SpeechSynthesisVoice.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) =>
+          SpeechSynthesisVoice -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lang\"]; })" js_getLang ::
+        SpeechSynthesisVoice -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.lang Mozilla SpeechSynthesisVoice.lang documentation> 
+getLang ::
+        (MonadIO m, FromJSString result) =>
+          SpeechSynthesisVoice -> m result
+getLang self = liftIO (fromJSString <$> (js_getLang self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"localService\"] ? 1 : 0); })"
+        js_getLocalService :: SpeechSynthesisVoice -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.localService Mozilla SpeechSynthesisVoice.localService documentation> 
+getLocalService :: (MonadIO m) => SpeechSynthesisVoice -> m Bool
+getLocalService self = liftIO (js_getLocalService self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"default\"] ? 1 : 0); })"
+        js_getDefault :: SpeechSynthesisVoice -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice.default Mozilla SpeechSynthesisVoice.default documentation> 
+getDefault :: (MonadIO m) => SpeechSynthesisVoice -> m Bool
+getDefault self = liftIO (js_getDefault self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StaticRange.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StaticRange
+       (js_getStartOffset, getStartOffset, js_getEndOffset, getEndOffset,
+        js_getStartContainer, getStartContainer, js_getEndContainer,
+        getEndContainer, js_getCollapsed, getCollapsed, StaticRange(..),
+        gTypeStaticRange)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startOffset\"]; })"
+        js_getStartOffset :: StaticRange -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startOffset Mozilla StaticRange.startOffset documentation> 
+getStartOffset :: (MonadIO m) => StaticRange -> m Word
+getStartOffset self = liftIO (js_getStartOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endOffset\"]; })"
+        js_getEndOffset :: StaticRange -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endOffset Mozilla StaticRange.endOffset documentation> 
+getEndOffset :: (MonadIO m) => StaticRange -> m Word
+getEndOffset self = liftIO (js_getEndOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startContainer\"]; })"
+        js_getStartContainer :: StaticRange -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.startContainer Mozilla StaticRange.startContainer documentation> 
+getStartContainer :: (MonadIO m) => StaticRange -> m Node
+getStartContainer self = liftIO (js_getStartContainer self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endContainer\"]; })"
+        js_getEndContainer :: StaticRange -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.endContainer Mozilla StaticRange.endContainer documentation> 
+getEndContainer :: (MonadIO m) => StaticRange -> m Node
+getEndContainer self = liftIO (js_getEndContainer self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"collapsed\"] ? 1 : 0); })"
+        js_getCollapsed :: StaticRange -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange.collapsed Mozilla StaticRange.collapsed documentation> 
+getCollapsed :: (MonadIO m) => StaticRange -> m Bool
+getCollapsed self = liftIO (js_getCollapsed self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Storage.hs b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Storage.hs
@@ -0,0 +1,121 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Storage
+       (js_key, key, key_, keyUnsafe, keyUnchecked, js_getItem, getItem,
+        getItem_, getItemUnsafe, getItemUnchecked, js_setItem, setItem,
+        js_removeItem, removeItem, js_clear, clear, js_getLength,
+        getLength, Storage(..), gTypeStorage)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"key\"]($2); })" js_key ::
+        Storage -> Word -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+key ::
+    (MonadIO m, FromJSString result) =>
+      Storage -> Word -> m (Maybe result)
+key self index = liftIO (fromMaybeJSString <$> (js_key self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+key_ :: (MonadIO m) => Storage -> Word -> m ()
+key_ self index = liftIO (void (js_key self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+keyUnsafe ::
+          (MonadIO m, HasCallStack, FromJSString result) =>
+            Storage -> Word -> m result
+keyUnsafe self index
+  = liftIO
+      ((fromMaybeJSString <$> (js_key self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.key Mozilla Storage.key documentation> 
+keyUnchecked ::
+             (MonadIO m, FromJSString result) => Storage -> Word -> m result
+keyUnchecked self index
+  = liftIO (fromJust . fromMaybeJSString <$> (js_key self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[$2]; })" js_getItem ::
+        Storage -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItem ::
+        (MonadIO m, ToJSString key, FromJSString result) =>
+          Storage -> key -> m (Maybe result)
+getItem self key
+  = liftIO (fromMaybeJSString <$> (js_getItem self (toJSString key)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItem_ :: (MonadIO m, ToJSString key) => Storage -> key -> m ()
+getItem_ self key
+  = liftIO (void (js_getItem self (toJSString key)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItemUnsafe ::
+              (MonadIO m, ToJSString key, HasCallStack, FromJSString result) =>
+                Storage -> key -> m result
+getItemUnsafe self key
+  = liftIO
+      ((fromMaybeJSString <$> (js_getItem self (toJSString key))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.getItem Mozilla Storage.getItem documentation> 
+getItemUnchecked ::
+                 (MonadIO m, ToJSString key, FromJSString result) =>
+                   Storage -> key -> m result
+getItemUnchecked self key
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getItem self (toJSString key)))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setItem\"]($2, $3); })" js_setItem
+        :: Storage -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.setItem Mozilla Storage.setItem documentation> 
+setItem ::
+        (MonadIO m, ToJSString key, ToJSString data') =>
+          Storage -> key -> data' -> m ()
+setItem self key data'
+  = liftIO (js_setItem self (toJSString key) (toJSString data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeItem\"]($2); })"
+        js_removeItem :: Storage -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.removeItem Mozilla Storage.removeItem documentation> 
+removeItem :: (MonadIO m, ToJSString key) => Storage -> key -> m ()
+removeItem self key = liftIO (js_removeItem self (toJSString key))
+ 
+foreign import javascript safe "(($1) => { return $1[\"clear\"](); })" js_clear ::
+        Storage -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.clear Mozilla Storage.clear documentation> 
+clear :: (MonadIO m) => Storage -> m ()
+clear self = liftIO (js_clear self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        Storage -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Storage.length Mozilla Storage.length documentation> 
+getLength :: (MonadIO m) => Storage -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageErrorCallback.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageErrorCallback
+       (newStorageErrorCallback, newStorageErrorCallbackSync,
+        newStorageErrorCallbackAsync, StorageErrorCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallback ::
+                        (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
+newStorageErrorCallback callback
+  = liftIO
+      (StorageErrorCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallbackSync ::
+                            (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
+newStorageErrorCallbackSync callback
+  = liftIO
+      (StorageErrorCallback <$>
+         syncCallback1 ContinueAsync
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageErrorCallback Mozilla StorageErrorCallback documentation> 
+newStorageErrorCallbackAsync ::
+                             (MonadIO m) => (DOMException -> IO ()) -> m StorageErrorCallback
+newStorageErrorCallbackAsync callback
+  = liftIO
+      (StorageErrorCallback <$>
+         asyncCallback1
+           (\ error ->
+              fromJSValUnchecked error >>= \ error' -> callback error'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageEvent.hs
@@ -0,0 +1,182 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageEvent
+       (js_newStorageEvent, newStorageEvent, js_initStorageEvent,
+        initStorageEvent, js_getKey, getKey, getKeyUnsafe, getKeyUnchecked,
+        js_getOldValue, getOldValue, getOldValueUnsafe,
+        getOldValueUnchecked, js_getNewValue, getNewValue,
+        getNewValueUnsafe, getNewValueUnchecked, js_getUrl, getUrl,
+        js_getStorageArea, getStorageArea, getStorageAreaUnsafe,
+        getStorageAreaUnchecked, StorageEvent(..), gTypeStorageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"StorageEvent\"]($1,\n$2); })" js_newStorageEvent ::
+        JSString -> Optional StorageEventInit -> IO StorageEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation> 
+newStorageEvent ::
+                (MonadIO m, ToJSString type') =>
+                  type' -> Maybe StorageEventInit -> m StorageEvent
+newStorageEvent type' eventInitDict
+  = liftIO
+      (js_newStorageEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"initStorageEvent\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
+        js_initStorageEvent ::
+        StorageEvent ->
+          Optional JSString ->
+            Bool ->
+              Bool ->
+                Optional JSString ->
+                  Optional JSString ->
+                    Optional JSString -> Optional JSString -> Optional Storage -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.initStorageEvent Mozilla StorageEvent.initStorageEvent documentation> 
+initStorageEvent ::
+                 (MonadIO m, ToJSString typeArg, ToJSString keyArg,
+                  ToJSString oldValueArg, ToJSString newValueArg,
+                  ToJSString urlArg) =>
+                   StorageEvent ->
+                     Maybe typeArg ->
+                       Bool ->
+                         Bool ->
+                           Maybe keyArg ->
+                             Maybe oldValueArg ->
+                               Maybe newValueArg -> Maybe urlArg -> Maybe Storage -> m ()
+initStorageEvent self typeArg canBubbleArg cancelableArg keyArg
+  oldValueArg newValueArg urlArg storageAreaArg
+  = liftIO
+      (js_initStorageEvent self (toOptionalJSString typeArg) canBubbleArg
+         cancelableArg
+         (toOptionalJSString keyArg)
+         (toOptionalJSString oldValueArg)
+         (toOptionalJSString newValueArg)
+         (toOptionalJSString urlArg)
+         (maybeToOptional storageAreaArg))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"key\"]; })" js_getKey ::
+        StorageEvent -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
+getKey ::
+       (MonadIO m, FromJSString result) =>
+         StorageEvent -> m (Maybe result)
+getKey self = liftIO (fromMaybeJSString <$> (js_getKey self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
+getKeyUnsafe ::
+             (MonadIO m, HasCallStack, FromJSString result) =>
+               StorageEvent -> m result
+getKeyUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getKey self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.key Mozilla StorageEvent.key documentation> 
+getKeyUnchecked ::
+                (MonadIO m, FromJSString result) => StorageEvent -> m result
+getKeyUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getKey self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"oldValue\"]; })" js_getOldValue
+        :: StorageEvent -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
+getOldValue ::
+            (MonadIO m, FromJSString result) =>
+              StorageEvent -> m (Maybe result)
+getOldValue self
+  = liftIO (fromMaybeJSString <$> (js_getOldValue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
+getOldValueUnsafe ::
+                  (MonadIO m, HasCallStack, FromJSString result) =>
+                    StorageEvent -> m result
+getOldValueUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getOldValue self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.oldValue Mozilla StorageEvent.oldValue documentation> 
+getOldValueUnchecked ::
+                     (MonadIO m, FromJSString result) => StorageEvent -> m result
+getOldValueUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getOldValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"newValue\"]; })" js_getNewValue
+        :: StorageEvent -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
+getNewValue ::
+            (MonadIO m, FromJSString result) =>
+              StorageEvent -> m (Maybe result)
+getNewValue self
+  = liftIO (fromMaybeJSString <$> (js_getNewValue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
+getNewValueUnsafe ::
+                  (MonadIO m, HasCallStack, FromJSString result) =>
+                    StorageEvent -> m result
+getNewValueUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getNewValue self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.newValue Mozilla StorageEvent.newValue documentation> 
+getNewValueUnchecked ::
+                     (MonadIO m, FromJSString result) => StorageEvent -> m result
+getNewValueUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getNewValue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        StorageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.url Mozilla StorageEvent.url documentation> 
+getUrl ::
+       (MonadIO m, FromJSString result) => StorageEvent -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"storageArea\"]; })"
+        js_getStorageArea :: StorageEvent -> IO (Nullable Storage)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+getStorageArea :: (MonadIO m) => StorageEvent -> m (Maybe Storage)
+getStorageArea self
+  = liftIO (nullableToMaybe <$> (js_getStorageArea self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+getStorageAreaUnsafe ::
+                     (MonadIO m, HasCallStack) => StorageEvent -> m Storage
+getStorageAreaUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getStorageArea self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent.storageArea Mozilla StorageEvent.storageArea documentation> 
+getStorageAreaUnchecked :: (MonadIO m) => StorageEvent -> m Storage
+getStorageAreaUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getStorageArea self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageInfo.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageInfo
+       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
+        requestQuota, pattern TEMPORARY, pattern PERSISTENT,
+        StorageInfo(..), gTypeStorageInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"queryUsageAndQuota\"]($2, $3,\n$4); })" js_queryUsageAndQuota ::
+        StorageInfo ->
+          Word ->
+            Optional StorageUsageCallback ->
+              Optional StorageErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.queryUsageAndQuota Mozilla StorageInfo.queryUsageAndQuota documentation> 
+queryUsageAndQuota ::
+                   (MonadIO m) =>
+                     StorageInfo ->
+                       Word ->
+                         Maybe StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
+queryUsageAndQuota self storageType usageCallback errorCallback
+  = liftIO
+      (js_queryUsageAndQuota self storageType
+         (maybeToOptional usageCallback)
+         (maybeToOptional errorCallback))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"requestQuota\"]($2, $3, $4,\n$5); })" js_requestQuota ::
+        StorageInfo ->
+          Word ->
+            Double ->
+              Optional StorageQuotaCallback ->
+                Optional StorageErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo.requestQuota Mozilla StorageInfo.requestQuota documentation> 
+requestQuota ::
+             (MonadIO m) =>
+               StorageInfo ->
+                 Word ->
+                   Word64 ->
+                     Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
+requestQuota self storageType newQuotaInBytes quotaCallback
+  errorCallback
+  = liftIO
+      (js_requestQuota self storageType (fromIntegral newQuotaInBytes)
+         (maybeToOptional quotaCallback)
+         (maybeToOptional errorCallback))
+pattern TEMPORARY = 0
+pattern PERSISTENT = 1
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageQuota.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageQuota
+       (js_queryUsageAndQuota, queryUsageAndQuota, js_requestQuota,
+        requestQuota, StorageQuota(..), gTypeStorageQuota)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"queryUsageAndQuota\"]($2, $3); })" js_queryUsageAndQuota ::
+        StorageQuota ->
+          StorageUsageCallback -> Optional StorageErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.queryUsageAndQuota Mozilla StorageQuota.queryUsageAndQuota documentation> 
+queryUsageAndQuota ::
+                   (MonadIO m) =>
+                     StorageQuota ->
+                       StorageUsageCallback -> Maybe StorageErrorCallback -> m ()
+queryUsageAndQuota self usageCallback errorCallback
+  = liftIO
+      (js_queryUsageAndQuota self usageCallback
+         (maybeToOptional errorCallback))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"requestQuota\"]($2, $3, $4); })"
+        js_requestQuota ::
+        StorageQuota ->
+          Double ->
+            Optional StorageQuotaCallback ->
+              Optional StorageErrorCallback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota.requestQuota Mozilla StorageQuota.requestQuota documentation> 
+requestQuota ::
+             (MonadIO m) =>
+               StorageQuota ->
+                 Word64 ->
+                   Maybe StorageQuotaCallback -> Maybe StorageErrorCallback -> m ()
+requestQuota self newQuotaInBytes quotaCallback errorCallback
+  = liftIO
+      (js_requestQuota self (fromIntegral newQuotaInBytes)
+         (maybeToOptional quotaCallback)
+         (maybeToOptional errorCallback))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageQuotaCallback.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageQuotaCallback
+       (newStorageQuotaCallback, newStorageQuotaCallbackSync,
+        newStorageQuotaCallbackAsync, StorageQuotaCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallback ::
+                        (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
+newStorageQuotaCallback callback
+  = liftIO
+      (StorageQuotaCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ grantedQuotaInBytes ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallbackSync ::
+                            (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
+newStorageQuotaCallbackSync callback
+  = liftIO
+      (StorageQuotaCallback <$>
+         syncCallback1 ContinueAsync
+           (\ grantedQuotaInBytes ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuotaCallback Mozilla StorageQuotaCallback documentation> 
+newStorageQuotaCallbackAsync ::
+                             (MonadIO m) => (Double -> IO ()) -> m StorageQuotaCallback
+newStorageQuotaCallbackAsync callback
+  = liftIO
+      (StorageQuotaCallback <$>
+         asyncCallback1
+           (\ grantedQuotaInBytes ->
+              fromJSValUnchecked grantedQuotaInBytes >>=
+                \ grantedQuotaInBytes' -> callback grantedQuotaInBytes'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StorageUsageCallback.hs
@@ -0,0 +1,72 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StorageUsageCallback
+       (newStorageUsageCallback, newStorageUsageCallbackSync,
+        newStorageUsageCallbackAsync, StorageUsageCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallback ::
+                        (MonadIO m) =>
+                          (Double -> Double -> IO ()) -> m StorageUsageCallback
+newStorageUsageCallback callback
+  = liftIO
+      (StorageUsageCallback <$>
+         syncCallback2 ThrowWouldBlock
+           (\ currentUsageInBytes currentQuotaInBytes ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallbackSync ::
+                            (MonadIO m) =>
+                              (Double -> Double -> IO ()) -> m StorageUsageCallback
+newStorageUsageCallbackSync callback
+  = liftIO
+      (StorageUsageCallback <$>
+         syncCallback2 ContinueAsync
+           (\ currentUsageInBytes currentQuotaInBytes ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StorageUsageCallback Mozilla StorageUsageCallback documentation> 
+newStorageUsageCallbackAsync ::
+                             (MonadIO m) =>
+                               (Double -> Double -> IO ()) -> m StorageUsageCallback
+newStorageUsageCallbackAsync callback
+  = liftIO
+      (StorageUsageCallback <$>
+         asyncCallback2
+           (\ currentUsageInBytes currentQuotaInBytes ->
+              fromJSValUnchecked currentQuotaInBytes >>=
+                \ currentQuotaInBytes' ->
+                  fromJSValUnchecked currentUsageInBytes >>=
+                    \ currentUsageInBytes' -> callback currentUsageInBytes'
+                    currentQuotaInBytes'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StringCallback.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StringCallback
+       (newStringCallback, newStringCallbackSync, newStringCallbackAsync,
+        StringCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallback ::
+                  (MonadIO m, FromJSString data') =>
+                    (data' -> IO ()) -> m (StringCallback data')
+newStringCallback callback
+  = liftIO
+      (StringCallback <$>
+         syncCallback1 ThrowWouldBlock
+           (\ data' ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallbackSync ::
+                      (MonadIO m, FromJSString data') =>
+                        (data' -> IO ()) -> m (StringCallback data')
+newStringCallbackSync callback
+  = liftIO
+      (StringCallback <$>
+         syncCallback1 ContinueAsync
+           (\ data' ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StringCallback Mozilla StringCallback documentation> 
+newStringCallbackAsync ::
+                       (MonadIO m, FromJSString data') =>
+                         (data' -> IO ()) -> m (StringCallback data')
+newStringCallbackAsync callback
+  = liftIO
+      (StringCallback <$>
+         asyncCallback1
+           (\ data' ->
+              fromJSValUnchecked data' >>= \ data'' -> callback data''))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleMedia.hs
@@ -0,0 +1,54 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StyleMedia
+       (js_matchMedium, matchMedium, matchMedium_, js_getType, getType,
+        StyleMedia(..), gTypeStyleMedia)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return ($1[\"matchMedium\"]($2) ? 1 : 0); })" js_matchMedium ::
+        StyleMedia -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
+matchMedium ::
+            (MonadIO m, ToJSString mediaquery) =>
+              StyleMedia -> Maybe mediaquery -> m Bool
+matchMedium self mediaquery
+  = liftIO (js_matchMedium self (toOptionalJSString mediaquery))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.matchMedium Mozilla StyleMedia.matchMedium documentation> 
+matchMedium_ ::
+             (MonadIO m, ToJSString mediaquery) =>
+               StyleMedia -> Maybe mediaquery -> m ()
+matchMedium_ self mediaquery
+  = liftIO
+      (void (js_matchMedium self (toOptionalJSString mediaquery)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        StyleMedia -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia.type Mozilla StyleMedia.type documentation> 
+getType ::
+        (MonadIO m, FromJSString result) => StyleMedia -> m result
+getType self = liftIO (fromJSString <$> (js_getType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheet.hs
@@ -0,0 +1,156 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StyleSheet
+       (js_getType, getType, getTypeUnsafe, getTypeUnchecked,
+        js_setDisabled, setDisabled, js_getDisabled, getDisabled,
+        js_getOwnerNode, getOwnerNode, js_getParentStyleSheet,
+        getParentStyleSheet, js_getHref, getHref, getHrefUnsafe,
+        getHrefUnchecked, js_getTitle, getTitle, getTitleUnsafe,
+        getTitleUnchecked, js_getMedia, getMedia, StyleSheet(..),
+        gTypeStyleSheet, IsStyleSheet, toStyleSheet)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        StyleSheet -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
+getType ::
+        (MonadIO m, IsStyleSheet self, FromJSString result) =>
+          self -> m (Maybe result)
+getType self
+  = liftIO (fromMaybeJSString <$> (js_getType (toStyleSheet self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
+getTypeUnsafe ::
+              (MonadIO m, IsStyleSheet self, HasCallStack,
+               FromJSString result) =>
+                self -> m result
+getTypeUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getType (toStyleSheet self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.type Mozilla StyleSheet.type documentation> 
+getTypeUnchecked ::
+                 (MonadIO m, IsStyleSheet self, FromJSString result) =>
+                   self -> m result
+getTypeUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getType (toStyleSheet self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"disabled\"] = $2; })"
+        js_setDisabled :: StyleSheet -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
+setDisabled ::
+            (MonadIO m, IsStyleSheet self) => self -> Bool -> m ()
+setDisabled self val
+  = liftIO (js_setDisabled (toStyleSheet self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"disabled\"] ? 1 : 0); })"
+        js_getDisabled :: StyleSheet -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.disabled Mozilla StyleSheet.disabled documentation> 
+getDisabled :: (MonadIO m, IsStyleSheet self) => self -> m Bool
+getDisabled self = liftIO (js_getDisabled (toStyleSheet self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"ownerNode\"]; })"
+        js_getOwnerNode :: StyleSheet -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.ownerNode Mozilla StyleSheet.ownerNode documentation> 
+getOwnerNode :: (MonadIO m, IsStyleSheet self) => self -> m Node
+getOwnerNode self = liftIO (js_getOwnerNode (toStyleSheet self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentStyleSheet\"]; })"
+        js_getParentStyleSheet :: StyleSheet -> IO StyleSheet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.parentStyleSheet Mozilla StyleSheet.parentStyleSheet documentation> 
+getParentStyleSheet ::
+                    (MonadIO m, IsStyleSheet self) => self -> m StyleSheet
+getParentStyleSheet self
+  = liftIO (js_getParentStyleSheet (toStyleSheet self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        StyleSheet -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
+getHref ::
+        (MonadIO m, IsStyleSheet self, FromJSString result) =>
+          self -> m (Maybe result)
+getHref self
+  = liftIO (fromMaybeJSString <$> (js_getHref (toStyleSheet self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
+getHrefUnsafe ::
+              (MonadIO m, IsStyleSheet self, HasCallStack,
+               FromJSString result) =>
+                self -> m result
+getHrefUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getHref (toStyleSheet self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.href Mozilla StyleSheet.href documentation> 
+getHrefUnchecked ::
+                 (MonadIO m, IsStyleSheet self, FromJSString result) =>
+                   self -> m result
+getHrefUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getHref (toStyleSheet self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"title\"]; })" js_getTitle ::
+        StyleSheet -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
+getTitle ::
+         (MonadIO m, IsStyleSheet self, FromJSString result) =>
+           self -> m (Maybe result)
+getTitle self
+  = liftIO (fromMaybeJSString <$> (js_getTitle (toStyleSheet self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
+getTitleUnsafe ::
+               (MonadIO m, IsStyleSheet self, HasCallStack,
+                FromJSString result) =>
+                 self -> m result
+getTitleUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getTitle (toStyleSheet self))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.title Mozilla StyleSheet.title documentation> 
+getTitleUnchecked ::
+                  (MonadIO m, IsStyleSheet self, FromJSString result) =>
+                    self -> m result
+getTitleUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getTitle (toStyleSheet self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"media\"]; })" js_getMedia ::
+        StyleSheet -> IO MediaList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet.media Mozilla StyleSheet.media documentation> 
+getMedia :: (MonadIO m, IsStyleSheet self) => self -> m MediaList
+getMedia self = liftIO (js_getMedia (toStyleSheet self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/StyleSheetList.hs
@@ -0,0 +1,75 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.StyleSheetList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_get, get,
+        get_, js_getLength, getLength, StyleSheetList(..),
+        gTypeStyleSheetList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        StyleSheetList -> Word -> IO (Nullable StyleSheet)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+item ::
+     (MonadIO m) => StyleSheetList -> Word -> m (Maybe StyleSheet)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+item_ :: (MonadIO m) => StyleSheetList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => StyleSheetList -> Word -> m StyleSheet
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.item Mozilla StyleSheetList.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => StyleSheetList -> Word -> m StyleSheet
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_get ::
+        StyleSheetList -> JSString -> IO CSSStyleSheet
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
+get ::
+    (MonadIO m, ToJSString name) =>
+      StyleSheetList -> name -> m CSSStyleSheet
+get self name = liftIO (js_get self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.get Mozilla StyleSheetList.get documentation> 
+get_ ::
+     (MonadIO m, ToJSString name) => StyleSheetList -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        StyleSheetList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList.length Mozilla StyleSheetList.length documentation> 
+getLength :: (MonadIO m) => StyleSheetList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/SubtleCrypto.hs
@@ -0,0 +1,404 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.SubtleCrypto
+       (js_encrypt, encrypt, encrypt_, js_decrypt, decrypt, decrypt_,
+        js_sign, sign, sign_, js_verify, verify, verify_, js_digest,
+        digest, digest_, js_deriveKey, deriveKey, deriveKey_,
+        js_deriveBits, deriveBits, deriveBits_, js_generateKey,
+        generateKey, generateKey_, js_importKey, importKey, importKey_,
+        js_exportKey, exportKey, exportKey_, js_wrapKey, wrapKey, wrapKey_,
+        js_unwrapKey, unwrapKey, unwrapKey_, SubtleCrypto(..),
+        gTypeSubtleCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"encrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_encrypt ::
+        SubtleCrypto ->
+          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt ::
+        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
+encrypt self algorithm key data'
+  = liftIO
+      ((js_encrypt self (toJSString algorithm) key
+          (toBufferSource data'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt_ ::
+         (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+encrypt_ self algorithm key data'
+  = liftIO
+      (void
+         (js_encrypt self (toJSString algorithm) key
+            (toBufferSource data')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"decrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decrypt ::
+        SubtleCrypto ->
+          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt ::
+        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+          SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
+decrypt self algorithm key data'
+  = liftIO
+      ((js_decrypt self (toJSString algorithm) key
+          (toBufferSource data'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt_ ::
+         (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+           SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+decrypt_ self algorithm key data'
+  = liftIO
+      (void
+         (js_decrypt self (toJSString algorithm) key
+            (toBufferSource data')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"sign\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_sign ::
+        SubtleCrypto ->
+          JSString -> CryptoKey -> BufferSource -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign ::
+     (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+       SubtleCrypto -> algorithm -> CryptoKey -> data' -> m JSVal
+sign self algorithm key data'
+  = liftIO
+      ((js_sign self (toJSString algorithm) key (toBufferSource data'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign_ ::
+      (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+        SubtleCrypto -> algorithm -> CryptoKey -> data' -> m ()
+sign_ self algorithm key data'
+  = liftIO
+      (void
+         (js_sign self (toJSString algorithm) key (toBufferSource data')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $c) => { return $1[\"verify\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_verify ::
+        SubtleCrypto ->
+          JSString ->
+            CryptoKey -> BufferSource -> BufferSource -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify ::
+       (MonadIO m, ToJSString algorithm, IsBufferSource signature,
+        IsBufferSource data') =>
+         SubtleCrypto ->
+           algorithm -> CryptoKey -> signature -> data' -> m JSVal
+verify self algorithm key signature data'
+  = liftIO
+      ((js_verify self (toJSString algorithm) key
+          (toBufferSource signature)
+          (toBufferSource data'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify_ ::
+        (MonadIO m, ToJSString algorithm, IsBufferSource signature,
+         IsBufferSource data') =>
+          SubtleCrypto ->
+            algorithm -> CryptoKey -> signature -> data' -> m ()
+verify_ self algorithm key signature data'
+  = liftIO
+      (void
+         (js_verify self (toJSString algorithm) key
+            (toBufferSource signature)
+            (toBufferSource data')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"digest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_digest ::
+        SubtleCrypto -> JSString -> BufferSource -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest ::
+       (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+         SubtleCrypto -> algorithm -> data' -> m JSVal
+digest self algorithm data'
+  = liftIO
+      ((js_digest self (toJSString algorithm) (toBufferSource data')) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest_ ::
+        (MonadIO m, ToJSString algorithm, IsBufferSource data') =>
+          SubtleCrypto -> algorithm -> data' -> m ()
+digest_ self algorithm data'
+  = liftIO
+      (void
+         (js_digest self (toJSString algorithm) (toBufferSource data')))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"deriveKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_deriveKey ::
+        SubtleCrypto ->
+          JSString ->
+            CryptoKey -> JSString -> Bool -> JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
+deriveKey ::
+          (MonadIO m, ToJSString algorithm, ToJSString derivedKeyType) =>
+            SubtleCrypto ->
+              algorithm ->
+                CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m JSVal
+deriveKey self algorithm baseKey derivedKeyType extractable
+  keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_deriveKey self (toJSString algorithm) baseKey
+              (toJSString derivedKeyType)
+              extractable
+              keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveKey Mozilla WebKitSubtleCrypto.deriveKey documentation> 
+deriveKey_ ::
+           (MonadIO m, ToJSString algorithm, ToJSString derivedKeyType) =>
+             SubtleCrypto ->
+               algorithm ->
+                 CryptoKey -> derivedKeyType -> Bool -> [CryptoKeyUsage] -> m ()
+deriveKey_ self algorithm baseKey derivedKeyType extractable
+  keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_deriveKey self (toJSString algorithm) baseKey
+                (toJSString derivedKeyType)
+                extractable
+                keyUsages'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"deriveBits\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_deriveBits ::
+        SubtleCrypto ->
+          JSString -> CryptoKey -> Word -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
+deriveBits ::
+           (MonadIO m, ToJSString algorithm) =>
+             SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ArrayBuffer
+deriveBits self algorithm baseKey length
+  = liftIO
+      ((js_deriveBits self (toJSString algorithm) baseKey length) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.deriveBits Mozilla WebKitSubtleCrypto.deriveBits documentation> 
+deriveBits_ ::
+            (MonadIO m, ToJSString algorithm) =>
+              SubtleCrypto -> algorithm -> CryptoKey -> Word -> m ()
+deriveBits_ self algorithm baseKey length
+  = liftIO
+      (void (js_deriveBits self (toJSString algorithm) baseKey length))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"generateKey\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateKey ::
+        SubtleCrypto -> JSString -> Bool -> JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey ::
+            (MonadIO m, ToJSString algorithm) =>
+              SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m JSVal
+generateKey self algorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_generateKey self (toJSString algorithm) extractable keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey_ ::
+             (MonadIO m, ToJSString algorithm) =>
+               SubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
+generateKey_ self algorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_generateKey self (toJSString algorithm) extractable keyUsages'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"importKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_importKey ::
+        SubtleCrypto ->
+          JSString ->
+            KeyData -> JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey ::
+          (MonadIO m, ToJSString format, IsKeyData keyData,
+           ToJSString algorithm) =>
+            SubtleCrypto ->
+              format ->
+                keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
+importKey self format keyData algorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            toJSVal keyData >>=
+              \ keyData' ->
+                js_importKey self (toJSString format) (KeyData keyData')
+              (toJSString algorithm)
+              extractable
+              keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey_ ::
+           (MonadIO m, ToJSString format, IsKeyData keyData,
+            ToJSString algorithm) =>
+             SubtleCrypto ->
+               format -> keyData -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
+importKey_ self format keyData algorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              toJSVal keyData >>=
+                \ keyData' ->
+                  js_importKey self (toJSString format) (KeyData keyData')
+                (toJSString algorithm)
+                extractable
+                keyUsages'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"exportKey\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_exportKey ::
+        SubtleCrypto -> JSString -> CryptoKey -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey ::
+          (MonadIO m, ToJSString format) =>
+            SubtleCrypto -> format -> CryptoKey -> m JSVal
+exportKey self format key
+  = liftIO
+      ((js_exportKey self (toJSString format) key) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey_ ::
+           (MonadIO m, ToJSString format) =>
+             SubtleCrypto -> format -> CryptoKey -> m ()
+exportKey_ self format key
+  = liftIO (void (js_exportKey self (toJSString format) key))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $c) => { return $1[\"wrapKey\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_wrapKey ::
+        SubtleCrypto ->
+          JSString -> CryptoKey -> CryptoKey -> JSString -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey ::
+        (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
+          SubtleCrypto ->
+            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m JSVal
+wrapKey self format key wrappingKey wrapAlgorithm
+  = liftIO
+      ((js_wrapKey self (toJSString format) key wrappingKey
+          (toJSString wrapAlgorithm))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey_ ::
+         (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
+           SubtleCrypto ->
+             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
+wrapKey_ self format key wrappingKey wrapAlgorithm
+  = liftIO
+      (void
+         (js_wrapKey self (toJSString format) key wrappingKey
+            (toJSString wrapAlgorithm)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $c) => { return $1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unwrapKey ::
+        SubtleCrypto ->
+          JSString ->
+            BufferSource ->
+              CryptoKey ->
+                JSString -> JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKey ::
+          (MonadIO m, ToJSString format, IsBufferSource wrappedKey,
+           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
+            SubtleCrypto ->
+              format ->
+                wrappedKey ->
+                  CryptoKey ->
+                    unwrapAlgorithm ->
+                      unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
+unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_unwrapKey self (toJSString format) (toBufferSource wrappedKey)
+              unwrappingKey
+              (toJSString unwrapAlgorithm)
+              (toJSString unwrappedKeyAlgorithm)
+              extractable
+              keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKey_ ::
+           (MonadIO m, ToJSString format, IsBufferSource wrappedKey,
+            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
+             SubtleCrypto ->
+               format ->
+                 wrappedKey ->
+                   CryptoKey ->
+                     unwrapAlgorithm ->
+                       unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
+unwrapKey_ self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_unwrapKey self (toJSString format) (toBufferSource wrappedKey)
+                unwrappingKey
+                (toJSString unwrapAlgorithm)
+                (toJSString unwrappedKeyAlgorithm)
+                extractable
+                keyUsages'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Text.hs b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Text.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Text
+       (js_newText, newText, js_splitText, splitText, splitText_,
+        js_getWholeText, getWholeText, Text(..), gTypeText, IsText, toText)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"Text\"]($1); })"
+        js_newText :: Optional JSString -> IO Text
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation> 
+newText :: (MonadIO m, ToJSString data') => Maybe data' -> m Text
+newText data' = liftIO (js_newText (toOptionalJSString data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"splitText\"]($2); })" js_splitText
+        :: Text -> Word -> IO Text
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+splitText :: (MonadIO m, IsText self) => self -> Word -> m Text
+splitText self offset = liftIO (js_splitText (toText self) offset)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.splitText Mozilla Text.splitText documentation> 
+splitText_ :: (MonadIO m, IsText self) => self -> Word -> m ()
+splitText_ self offset
+  = liftIO (void (js_splitText (toText self) offset))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"wholeText\"]; })"
+        js_getWholeText :: Text -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Text.wholeText Mozilla Text.wholeText documentation> 
+getWholeText ::
+             (MonadIO m, IsText self, FromJSString result) => self -> m result
+getWholeText self
+  = liftIO (fromJSString <$> (js_getWholeText (toText self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextDecoder.hs
@@ -0,0 +1,88 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextDecoder
+       (js_newTextDecoder, newTextDecoder, js_decode, decode, decode_,
+        js_getEncoding, getEncoding, js_getFatal, getFatal,
+        js_getIgnoreBOM, getIgnoreBOM, TextDecoder(..), gTypeTextDecoder)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1, $2) => { return new window[\"TextDecoder\"]($1,\n$2); })" js_newTextDecoder ::
+        Optional JSString -> Optional TextDecoderOptions -> IO TextDecoder
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder Mozilla TextDecoder documentation> 
+newTextDecoder ::
+               (MonadIO m, ToJSString label) =>
+                 Maybe label -> Maybe TextDecoderOptions -> m TextDecoder
+newTextDecoder label options
+  = liftIO
+      (js_newTextDecoder (toOptionalJSString label)
+         (maybeToOptional options))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"decode\"]($2, $3); })" js_decode
+        ::
+        TextDecoder ->
+          Optional BufferSource -> Optional TextDecodeOptions -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
+decode ::
+       (MonadIO m, IsBufferSource input, FromJSString result) =>
+         TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m result
+decode self input options
+  = liftIO
+      (fromJSString <$>
+         (js_decode self (maybeToOptional (fmap toBufferSource input))
+            (maybeToOptional options)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.decode Mozilla TextDecoder.decode documentation> 
+decode_ ::
+        (MonadIO m, IsBufferSource input) =>
+          TextDecoder -> Maybe input -> Maybe TextDecodeOptions -> m ()
+decode_ self input options
+  = liftIO
+      (void
+         (js_decode self (maybeToOptional (fmap toBufferSource input))
+            (maybeToOptional options)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
+        :: TextDecoder -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.encoding Mozilla TextDecoder.encoding documentation> 
+getEncoding ::
+            (MonadIO m, FromJSString result) => TextDecoder -> m result
+getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"fatal\"] ? 1 : 0); })"
+        js_getFatal :: TextDecoder -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.fatal Mozilla TextDecoder.fatal documentation> 
+getFatal :: (MonadIO m) => TextDecoder -> m Bool
+getFatal self = liftIO (js_getFatal self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ignoreBOM\"] ? 1 : 0); })"
+        js_getIgnoreBOM :: TextDecoder -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder.ignoreBOM Mozilla TextDecoder.ignoreBOM documentation> 
+getIgnoreBOM :: (MonadIO m) => TextDecoder -> m Bool
+getIgnoreBOM self = liftIO (js_getIgnoreBOM self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEncoder.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextEncoder
+       (js_newTextEncoder, newTextEncoder, js_encode, encode, encode_,
+        js_getEncoding, getEncoding, TextEncoder(..), gTypeTextEncoder)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"TextEncoder\"](); })"
+        js_newTextEncoder :: IO TextEncoder
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder Mozilla TextEncoder documentation> 
+newTextEncoder :: (MonadIO m) => m TextEncoder
+newTextEncoder = liftIO (js_newTextEncoder)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"encode\"]($2); })" js_encode ::
+        TextEncoder -> Optional JSString -> IO Uint8Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
+encode ::
+       (MonadIO m, ToJSString input) =>
+         TextEncoder -> Maybe input -> m Uint8Array
+encode self input
+  = liftIO (js_encode self (toOptionalJSString input))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encode Mozilla TextEncoder.encode documentation> 
+encode_ ::
+        (MonadIO m, ToJSString input) => TextEncoder -> Maybe input -> m ()
+encode_ self input
+  = liftIO (void (js_encode self (toOptionalJSString input)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"encoding\"]; })" js_getEncoding
+        :: TextEncoder -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder.encoding Mozilla TextEncoder.encoding documentation> 
+getEncoding ::
+            (MonadIO m, FromJSString result) => TextEncoder -> m result
+getEncoding self = liftIO (fromJSString <$> (js_getEncoding self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextEvent.hs
@@ -0,0 +1,55 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextEvent
+       (js_initTextEvent, initTextEvent, js_getData, getData,
+        TextEvent(..), gTypeTextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initTextEvent\"]($2, $3, $4,\n$5, $6); })" js_initTextEvent ::
+        TextEvent ->
+          Optional JSString ->
+            Bool -> Bool -> Optional Window -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.initTextEvent Mozilla TextEvent.initTextEvent documentation> 
+initTextEvent ::
+              (MonadIO m, ToJSString typeArg, ToJSString dataArg) =>
+                TextEvent ->
+                  Maybe typeArg ->
+                    Bool -> Bool -> Maybe Window -> Maybe dataArg -> m ()
+initTextEvent self typeArg canBubbleArg cancelableArg viewArg
+  dataArg
+  = liftIO
+      (js_initTextEvent self (toOptionalJSString typeArg) canBubbleArg
+         cancelableArg
+         (maybeToOptional viewArg)
+         (toOptionalJSString dataArg))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"data\"]; })" js_getData ::
+        TextEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent.data Mozilla TextEvent.data documentation> 
+getData ::
+        (MonadIO m, FromJSString result) => TextEvent -> m result
+getData self = liftIO (fromJSString <$> (js_getData self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextMetrics.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextMetrics
+       (js_getWidth, getWidth, TextMetrics(..), gTypeTextMetrics) where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        TextMetrics -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics.width Mozilla TextMetrics.width documentation> 
+getWidth :: (MonadIO m) => TextMetrics -> m Float
+getWidth self = liftIO (js_getWidth self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrack.hs
@@ -0,0 +1,201 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrack
+       (js_addCue, addCue, js_removeCue, removeCue, js_addRegion,
+        addRegion, js_removeRegion, removeRegion, js_getId, getId,
+        js_setKind, setKind, js_getKind, getKind, js_getLabel, getLabel,
+        js_setLanguage, setLanguage, js_getLanguage, getLanguage,
+        js_getInBandMetadataTrackDispatchType,
+        getInBandMetadataTrackDispatchType, js_setMode, setMode,
+        js_getMode, getMode, js_getCues, getCues, getCuesUnsafe,
+        getCuesUnchecked, js_getActiveCues, getActiveCues,
+        getActiveCuesUnsafe, getActiveCuesUnchecked, cueChange,
+        js_getRegions, getRegions, js_getSourceBuffer, getSourceBuffer,
+        TextTrack(..), gTypeTextTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"addCue\"]($2); })" js_addCue ::
+        TextTrack -> TextTrackCue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addCue Mozilla TextTrack.addCue documentation> 
+addCue ::
+       (MonadIO m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
+addCue self cue = liftIO (js_addCue self (toTextTrackCue cue))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeCue\"]($2); })" js_removeCue
+        :: TextTrack -> TextTrackCue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeCue Mozilla TextTrack.removeCue documentation> 
+removeCue ::
+          (MonadIO m, IsTextTrackCue cue) => TextTrack -> cue -> m ()
+removeCue self cue
+  = liftIO (js_removeCue self (toTextTrackCue cue))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"addRegion\"]($2); })"
+        js_addRegion :: TextTrack -> Optional VTTRegion -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.addRegion Mozilla TextTrack.addRegion documentation> 
+addRegion :: (MonadIO m) => TextTrack -> Maybe VTTRegion -> m ()
+addRegion self region
+  = liftIO (js_addRegion self (maybeToOptional region))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"removeRegion\"]($2); })"
+        js_removeRegion :: TextTrack -> Optional VTTRegion -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.removeRegion Mozilla TextTrack.removeRegion documentation> 
+removeRegion :: (MonadIO m) => TextTrack -> Maybe VTTRegion -> m ()
+removeRegion self region
+  = liftIO (js_removeRegion self (maybeToOptional region))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        TextTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.id Mozilla TextTrack.id documentation> 
+getId :: (MonadIO m, FromJSString result) => TextTrack -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
+        TextTrack -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
+setKind :: (MonadIO m) => TextTrack -> TextTrackKind -> m ()
+setKind self val = liftIO (js_setKind self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        TextTrack -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.kind Mozilla TextTrack.kind documentation> 
+getKind :: (MonadIO m) => TextTrack -> m TextTrackKind
+getKind self = liftIO ((js_getKind self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        TextTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.label Mozilla TextTrack.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => TextTrack -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
+        js_setLanguage :: TextTrack -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
+setLanguage ::
+            (MonadIO m, ToJSString val) => TextTrack -> val -> m ()
+setLanguage self val
+  = liftIO (js_setLanguage self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
+        :: TextTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.language Mozilla TextTrack.language documentation> 
+getLanguage ::
+            (MonadIO m, FromJSString result) => TextTrack -> m result
+getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"inBandMetadataTrackDispatchType\"]; })"
+        js_getInBandMetadataTrackDispatchType :: TextTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.inBandMetadataTrackDispatchType Mozilla TextTrack.inBandMetadataTrackDispatchType documentation> 
+getInBandMetadataTrackDispatchType ::
+                                   (MonadIO m, FromJSString result) => TextTrack -> m result
+getInBandMetadataTrackDispatchType self
+  = liftIO
+      (fromJSString <$> (js_getInBandMetadataTrackDispatchType self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"mode\"] = $2; })" js_setMode ::
+        TextTrack -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+setMode :: (MonadIO m) => TextTrack -> TextTrackMode -> m ()
+setMode self val = liftIO (js_setMode self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"mode\"]; })" js_getMode ::
+        TextTrack -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.mode Mozilla TextTrack.mode documentation> 
+getMode :: (MonadIO m) => TextTrack -> m TextTrackMode
+getMode self = liftIO ((js_getMode self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cues\"]; })" js_getCues ::
+        TextTrack -> IO (Nullable TextTrackCueList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+getCues :: (MonadIO m) => TextTrack -> m (Maybe TextTrackCueList)
+getCues self = liftIO (nullableToMaybe <$> (js_getCues self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+getCuesUnsafe ::
+              (MonadIO m, HasCallStack) => TextTrack -> m TextTrackCueList
+getCuesUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getCues self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.cues Mozilla TextTrack.cues documentation> 
+getCuesUnchecked :: (MonadIO m) => TextTrack -> m TextTrackCueList
+getCuesUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getCues self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"activeCues\"]; })"
+        js_getActiveCues :: TextTrack -> IO (Nullable TextTrackCueList)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
+getActiveCues ::
+              (MonadIO m) => TextTrack -> m (Maybe TextTrackCueList)
+getActiveCues self
+  = liftIO (nullableToMaybe <$> (js_getActiveCues self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
+getActiveCuesUnsafe ::
+                    (MonadIO m, HasCallStack) => TextTrack -> m TextTrackCueList
+getActiveCuesUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getActiveCues self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.activeCues Mozilla TextTrack.activeCues documentation> 
+getActiveCuesUnchecked ::
+                       (MonadIO m) => TextTrack -> m TextTrackCueList
+getActiveCuesUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getActiveCues self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.oncuechange Mozilla TextTrack.oncuechange documentation> 
+cueChange :: EventName TextTrack Event
+cueChange = unsafeEventName (toJSString "cuechange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"regions\"]; })" js_getRegions ::
+        TextTrack -> IO VTTRegionList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.regions Mozilla TextTrack.regions documentation> 
+getRegions :: (MonadIO m) => TextTrack -> m VTTRegionList
+getRegions self = liftIO (js_getRegions self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
+        js_getSourceBuffer :: TextTrack -> IO SourceBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack.sourceBuffer Mozilla TextTrack.sourceBuffer documentation> 
+getSourceBuffer :: (MonadIO m) => TextTrack -> m SourceBuffer
+getSourceBuffer self = liftIO (js_getSourceBuffer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCue.hs
@@ -0,0 +1,119 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackCue
+       (js_getTrack, getTrack, js_setId, setId, js_getId, getId,
+        js_setStartTime, setStartTime, js_getStartTime, getStartTime,
+        js_setEndTime, setEndTime, js_getEndTime, getEndTime,
+        js_setPauseOnExit, setPauseOnExit, js_getPauseOnExit,
+        getPauseOnExit, enter, exit, TextTrackCue(..), gTypeTextTrackCue,
+        IsTextTrackCue, toTextTrackCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        TextTrackCue -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.track Mozilla TextTrackCue.track documentation> 
+getTrack :: (MonadIO m, IsTextTrackCue self) => self -> m TextTrack
+getTrack self = liftIO (js_getTrack (toTextTrackCue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
+        TextTrackCue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
+setId ::
+      (MonadIO m, IsTextTrackCue self, ToJSString val) =>
+        self -> val -> m ()
+setId self val
+  = liftIO (js_setId (toTextTrackCue self) (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        TextTrackCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.id Mozilla TextTrackCue.id documentation> 
+getId ::
+      (MonadIO m, IsTextTrackCue self, FromJSString result) =>
+        self -> m result
+getId self
+  = liftIO (fromJSString <$> (js_getId (toTextTrackCue self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"startTime\"] = $2; })"
+        js_setStartTime :: TextTrackCue -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
+setStartTime ::
+             (MonadIO m, IsTextTrackCue self) => self -> Double -> m ()
+setStartTime self val
+  = liftIO (js_setStartTime (toTextTrackCue self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"startTime\"]; })"
+        js_getStartTime :: TextTrackCue -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.startTime Mozilla TextTrackCue.startTime documentation> 
+getStartTime ::
+             (MonadIO m, IsTextTrackCue self) => self -> m Double
+getStartTime self = liftIO (js_getStartTime (toTextTrackCue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"endTime\"] = $2; })"
+        js_setEndTime :: TextTrackCue -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
+setEndTime ::
+           (MonadIO m, IsTextTrackCue self) => self -> Double -> m ()
+setEndTime self val
+  = liftIO (js_setEndTime (toTextTrackCue self) val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endTime\"]; })" js_getEndTime ::
+        TextTrackCue -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.endTime Mozilla TextTrackCue.endTime documentation> 
+getEndTime :: (MonadIO m, IsTextTrackCue self) => self -> m Double
+getEndTime self = liftIO (js_getEndTime (toTextTrackCue self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pauseOnExit\"] = $2; })"
+        js_setPauseOnExit :: TextTrackCue -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
+setPauseOnExit ::
+               (MonadIO m, IsTextTrackCue self) => self -> Bool -> m ()
+setPauseOnExit self val
+  = liftIO (js_setPauseOnExit (toTextTrackCue self) val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"pauseOnExit\"] ? 1 : 0); })"
+        js_getPauseOnExit :: TextTrackCue -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.pauseOnExit Mozilla TextTrackCue.pauseOnExit documentation> 
+getPauseOnExit ::
+               (MonadIO m, IsTextTrackCue self) => self -> m Bool
+getPauseOnExit self
+  = liftIO (js_getPauseOnExit (toTextTrackCue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onenter Mozilla TextTrackCue.onenter documentation> 
+enter ::
+      (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+enter = unsafeEventName (toJSString "enter")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue.onexit Mozilla TextTrackCue.onexit documentation> 
+exit ::
+     (IsTextTrackCue self, IsEventTarget self) => EventName self Event
+exit = unsafeEventName (toJSString "exit")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackCueList.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackCueList
+       (js_item, item, item_, js_getCueById, getCueById, getCueById_,
+        js_getLength, getLength, TextTrackCueList(..),
+        gTypeTextTrackCueList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        TextTrackCueList -> Word -> IO TextTrackCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
+item :: (MonadIO m) => TextTrackCueList -> Word -> m TextTrackCue
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.item Mozilla TextTrackCueList.item documentation> 
+item_ :: (MonadIO m) => TextTrackCueList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getCueById\"]($2); })"
+        js_getCueById :: TextTrackCueList -> JSString -> IO TextTrackCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
+getCueById ::
+           (MonadIO m, ToJSString id) =>
+             TextTrackCueList -> id -> m TextTrackCue
+getCueById self id = liftIO (js_getCueById self (toJSString id))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.getCueById Mozilla TextTrackCueList.getCueById documentation> 
+getCueById_ ::
+            (MonadIO m, ToJSString id) => TextTrackCueList -> id -> m ()
+getCueById_ self id
+  = liftIO (void (js_getCueById self (toJSString id)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        TextTrackCueList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList.length Mozilla TextTrackCueList.length documentation> 
+getLength :: (MonadIO m) => TextTrackCueList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TextTrackList.hs
@@ -0,0 +1,73 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TextTrackList
+       (js_item, item, item_, js_getTrackById, getTrackById,
+        getTrackById_, js_getLength, getLength, addTrack, change,
+        removeTrack, TextTrackList(..), gTypeTextTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        TextTrackList -> Word -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
+item :: (MonadIO m) => TextTrackList -> Word -> m TextTrack
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.item Mozilla TextTrackList.item documentation> 
+item_ :: (MonadIO m) => TextTrackList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: TextTrackList -> JSString -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) => TextTrackList -> id -> m TextTrack
+getTrackById self id
+  = liftIO (js_getTrackById self (toJSString id))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.getTrackById Mozilla TextTrackList.getTrackById documentation> 
+getTrackById_ ::
+              (MonadIO m, ToJSString id) => TextTrackList -> id -> m ()
+getTrackById_ self id
+  = liftIO (void (js_getTrackById self (toJSString id)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        TextTrackList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.length Mozilla TextTrackList.length documentation> 
+getLength :: (MonadIO m) => TextTrackList -> m Word
+getLength self = liftIO (js_getLength self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onaddtrack Mozilla TextTrackList.onaddtrack documentation> 
+addTrack :: EventName TextTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onchange Mozilla TextTrackList.onchange documentation> 
+change :: EventName TextTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList.onremovetrack Mozilla TextTrackList.onremovetrack documentation> 
+removeTrack :: EventName TextTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TimeRanges.hs
@@ -0,0 +1,56 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TimeRanges
+       (js_start, start, start_, js_end, end, end_, js_getLength,
+        getLength, TimeRanges(..), gTypeTimeRanges)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"start\"]($2); })" js_start ::
+        TimeRanges -> Word -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
+start :: (MonadIO m) => TimeRanges -> Word -> m Double
+start self index = liftIO (js_start self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.start Mozilla TimeRanges.start documentation> 
+start_ :: (MonadIO m) => TimeRanges -> Word -> m ()
+start_ self index = liftIO (void (js_start self index))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"end\"]($2); })" js_end ::
+        TimeRanges -> Word -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
+end :: (MonadIO m) => TimeRanges -> Word -> m Double
+end self index = liftIO (js_end self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.end Mozilla TimeRanges.end documentation> 
+end_ :: (MonadIO m) => TimeRanges -> Word -> m ()
+end_ self index = liftIO (void (js_end self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        TimeRanges -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges.length Mozilla TimeRanges.length documentation> 
+getLength :: (MonadIO m) => TimeRanges -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Touch.hs b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Touch.hs
@@ -0,0 +1,117 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Touch
+       (js_getClientX, getClientX, js_getClientY, getClientY,
+        js_getScreenX, getScreenX, js_getScreenY, getScreenY, js_getPageX,
+        getPageX, js_getPageY, getPageY, js_getTarget, getTarget,
+        js_getIdentifier, getIdentifier, js_getWebkitRadiusX,
+        getWebkitRadiusX, js_getWebkitRadiusY, getWebkitRadiusY,
+        js_getWebkitRotationAngle, getWebkitRotationAngle,
+        js_getWebkitForce, getWebkitForce, Touch(..), gTypeTouch)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientX\"]; })" js_getClientX ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientX Mozilla Touch.clientX documentation> 
+getClientX :: (MonadIO m) => Touch -> m Int
+getClientX self = liftIO (js_getClientX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientY\"]; })" js_getClientY ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.clientY Mozilla Touch.clientY documentation> 
+getClientY :: (MonadIO m) => Touch -> m Int
+getClientY self = liftIO (js_getClientY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenX Mozilla Touch.screenX documentation> 
+getScreenX :: (MonadIO m) => Touch -> m Int
+getScreenX self = liftIO (js_getScreenX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.screenY Mozilla Touch.screenY documentation> 
+getScreenY :: (MonadIO m) => Touch -> m Int
+getScreenY self = liftIO (js_getScreenY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })" js_getPageX ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageX Mozilla Touch.pageX documentation> 
+getPageX :: (MonadIO m) => Touch -> m Int
+getPageX self = liftIO (js_getPageX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })" js_getPageY ::
+        Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.pageY Mozilla Touch.pageY documentation> 
+getPageY :: (MonadIO m) => Touch -> m Int
+getPageY self = liftIO (js_getPageY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"target\"]; })" js_getTarget ::
+        Touch -> IO EventTarget
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.target Mozilla Touch.target documentation> 
+getTarget :: (MonadIO m) => Touch -> m EventTarget
+getTarget self = liftIO (js_getTarget self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"identifier\"]; })"
+        js_getIdentifier :: Touch -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.identifier Mozilla Touch.identifier documentation> 
+getIdentifier :: (MonadIO m) => Touch -> m Word
+getIdentifier self = liftIO (js_getIdentifier self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitRadiusX\"]; })"
+        js_getWebkitRadiusX :: Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusX Mozilla Touch.webkitRadiusX documentation> 
+getWebkitRadiusX :: (MonadIO m) => Touch -> m Int
+getWebkitRadiusX self = liftIO (js_getWebkitRadiusX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitRadiusY\"]; })"
+        js_getWebkitRadiusY :: Touch -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRadiusY Mozilla Touch.webkitRadiusY documentation> 
+getWebkitRadiusY :: (MonadIO m) => Touch -> m Int
+getWebkitRadiusY self = liftIO (js_getWebkitRadiusY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitRotationAngle\"]; })"
+        js_getWebkitRotationAngle :: Touch -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitRotationAngle Mozilla Touch.webkitRotationAngle documentation> 
+getWebkitRotationAngle :: (MonadIO m) => Touch -> m Float
+getWebkitRotationAngle self
+  = liftIO (js_getWebkitRotationAngle self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitForce\"]; })"
+        js_getWebkitForce :: Touch -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Touch.webkitForce Mozilla Touch.webkitForce documentation> 
+getWebkitForce :: (MonadIO m) => Touch -> m Float
+getWebkitForce self = liftIO (js_getWebkitForce self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchEvent.hs
@@ -0,0 +1,136 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TouchEvent
+       (js_newTouchEvent, newTouchEvent, js_initTouchEvent,
+        initTouchEvent, js_getTouches, getTouches, js_getTargetTouches,
+        getTargetTouches, js_getChangedTouches, getChangedTouches,
+        js_getCtrlKey, getCtrlKey, js_getShiftKey, getShiftKey,
+        js_getAltKey, getAltKey, js_getMetaKey, getMetaKey, TouchEvent(..),
+        gTypeTouchEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"TouchEvent\"]($1, $2); })" js_newTouchEvent ::
+        JSString -> Optional TouchEventInit -> IO TouchEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation> 
+newTouchEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe TouchEventInit -> m TouchEvent
+newTouchEvent type' eventInitDict
+  = liftIO
+      (js_newTouchEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14) => { return $1[\"initTouchEvent\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12, $13, $14); })"
+        js_initTouchEvent ::
+        TouchEvent ->
+          Optional TouchList ->
+            Optional TouchList ->
+              Optional TouchList ->
+                Optional JSString ->
+                  Optional Window ->
+                    Optional Int ->
+                      Optional Int ->
+                        Optional Int ->
+                          Optional Int -> Bool -> Bool -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.initTouchEvent Mozilla TouchEvent.initTouchEvent documentation> 
+initTouchEvent ::
+               (MonadIO m, ToJSString type') =>
+                 TouchEvent ->
+                   Maybe TouchList ->
+                     Maybe TouchList ->
+                       Maybe TouchList ->
+                         Maybe type' ->
+                           Maybe Window ->
+                             Maybe Int ->
+                               Maybe Int ->
+                                 Maybe Int -> Maybe Int -> Bool -> Bool -> Bool -> Bool -> m ()
+initTouchEvent self touches targetTouches changedTouches type' view
+  screenX screenY clientX clientY ctrlKey altKey shiftKey metaKey
+  = liftIO
+      (js_initTouchEvent self (maybeToOptional touches)
+         (maybeToOptional targetTouches)
+         (maybeToOptional changedTouches)
+         (toOptionalJSString type')
+         (maybeToOptional view)
+         (maybeToOptional screenX)
+         (maybeToOptional screenY)
+         (maybeToOptional clientX)
+         (maybeToOptional clientY)
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"touches\"]; })" js_getTouches ::
+        TouchEvent -> IO TouchList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.touches Mozilla TouchEvent.touches documentation> 
+getTouches :: (MonadIO m) => TouchEvent -> m TouchList
+getTouches self = liftIO (js_getTouches self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"targetTouches\"]; })"
+        js_getTargetTouches :: TouchEvent -> IO TouchList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.targetTouches Mozilla TouchEvent.targetTouches documentation> 
+getTargetTouches :: (MonadIO m) => TouchEvent -> m TouchList
+getTargetTouches self = liftIO (js_getTargetTouches self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"changedTouches\"]; })"
+        js_getChangedTouches :: TouchEvent -> IO TouchList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.changedTouches Mozilla TouchEvent.changedTouches documentation> 
+getChangedTouches :: (MonadIO m) => TouchEvent -> m TouchList
+getChangedTouches self = liftIO (js_getChangedTouches self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"ctrlKey\"] ? 1 : 0); })"
+        js_getCtrlKey :: TouchEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.ctrlKey Mozilla TouchEvent.ctrlKey documentation> 
+getCtrlKey :: (MonadIO m) => TouchEvent -> m Bool
+getCtrlKey self = liftIO (js_getCtrlKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"shiftKey\"] ? 1 : 0); })"
+        js_getShiftKey :: TouchEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.shiftKey Mozilla TouchEvent.shiftKey documentation> 
+getShiftKey :: (MonadIO m) => TouchEvent -> m Bool
+getShiftKey self = liftIO (js_getShiftKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"altKey\"] ? 1 : 0); })"
+        js_getAltKey :: TouchEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.altKey Mozilla TouchEvent.altKey documentation> 
+getAltKey :: (MonadIO m) => TouchEvent -> m Bool
+getAltKey self = liftIO (js_getAltKey self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"metaKey\"] ? 1 : 0); })"
+        js_getMetaKey :: TouchEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent.metaKey Mozilla TouchEvent.metaKey documentation> 
+getMetaKey :: (MonadIO m) => TouchEvent -> m Bool
+getMetaKey self = liftIO (js_getMetaKey self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TouchList.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TouchList
+       (js_item, item, item_, js_getLength, getLength, TouchList(..),
+        gTypeTouchList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        TouchList -> Word -> IO Touch
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+item :: (MonadIO m) => TouchList -> Word -> m Touch
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.item Mozilla TouchList.item documentation> 
+item_ :: (MonadIO m) => TouchList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        TouchList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TouchList.length Mozilla TouchList.length documentation> 
+getLength :: (MonadIO m) => TouchList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TrackEvent.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TrackEvent
+       (js_newTrackEvent, newTrackEvent, js_getTrack, getTrack,
+        getTrackUnsafe, getTrackUnchecked, TrackEvent(..), gTypeTrackEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"TrackEvent\"]($1, $2); })" js_newTrackEvent ::
+        JSString -> Optional TrackEventInit -> IO TrackEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation> 
+newTrackEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe TrackEventInit -> m TrackEvent
+newTrackEvent type' eventInitDict
+  = liftIO
+      (js_newTrackEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        TrackEvent -> IO (Nullable Track)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrack :: (MonadIO m) => TrackEvent -> m (Maybe Track)
+getTrack self = liftIO (nullableToMaybe <$> (js_getTrack self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrackUnsafe ::
+               (MonadIO m, HasCallStack) => TrackEvent -> m Track
+getTrackUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTrack self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent.track Mozilla TrackEvent.track documentation> 
+getTrackUnchecked :: (MonadIO m) => TrackEvent -> m Track
+getTrackUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTrack self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TransitionEvent.hs
@@ -0,0 +1,67 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TransitionEvent
+       (js_newTransitionEvent, newTransitionEvent, js_getPropertyName,
+        getPropertyName, js_getElapsedTime, getElapsedTime,
+        js_getPseudoElement, getPseudoElement, TransitionEvent(..),
+        gTypeTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"TransitionEvent\"]($1,\n$2); })" js_newTransitionEvent ::
+        JSString -> Optional TransitionEventInit -> IO TransitionEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation> 
+newTransitionEvent ::
+                   (MonadIO m, ToJSString type') =>
+                     type' -> Maybe TransitionEventInit -> m TransitionEvent
+newTransitionEvent type' transitionEventInitDict
+  = liftIO
+      (js_newTransitionEvent (toJSString type')
+         (maybeToOptional transitionEventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"propertyName\"]; })"
+        js_getPropertyName :: TransitionEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.propertyName Mozilla TransitionEvent.propertyName documentation> 
+getPropertyName ::
+                (MonadIO m, FromJSString result) => TransitionEvent -> m result
+getPropertyName self
+  = liftIO (fromJSString <$> (js_getPropertyName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: TransitionEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.elapsedTime Mozilla TransitionEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadIO m) => TransitionEvent -> m Double
+getElapsedTime self = liftIO (js_getElapsedTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: TransitionEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent.pseudoElement Mozilla TransitionEvent.pseudoElement documentation> 
+getPseudoElement ::
+                 (MonadIO m, FromJSString result) => TransitionEvent -> m result
+getPseudoElement self
+  = liftIO (fromJSString <$> (js_getPseudoElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/TreeWalker.hs
@@ -0,0 +1,237 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.TreeWalker
+       (js_parentNode, parentNode, parentNode_, parentNodeUnsafe,
+        parentNodeUnchecked, js_firstChild, firstChild, firstChild_,
+        firstChildUnsafe, firstChildUnchecked, js_lastChild, lastChild,
+        lastChild_, lastChildUnsafe, lastChildUnchecked,
+        js_previousSibling, previousSibling, previousSibling_,
+        previousSiblingUnsafe, previousSiblingUnchecked, js_nextSibling,
+        nextSibling, nextSibling_, nextSiblingUnsafe, nextSiblingUnchecked,
+        js_previousNode, previousNode, previousNode_, previousNodeUnsafe,
+        previousNodeUnchecked, js_nextNode, nextNode, nextNode_,
+        nextNodeUnsafe, nextNodeUnchecked, js_getRoot, getRoot,
+        js_getWhatToShow, getWhatToShow, js_setCurrentNode, setCurrentNode,
+        js_getCurrentNode, getCurrentNode, TreeWalker(..), gTypeTreeWalker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parentNode\"](); })"
+        js_parentNode :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+parentNode self = liftIO (nullableToMaybe <$> (js_parentNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNode_ :: (MonadIO m) => TreeWalker -> m ()
+parentNode_ self = liftIO (void (js_parentNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNodeUnsafe ::
+                 (MonadIO m, HasCallStack) => TreeWalker -> m Node
+parentNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_parentNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.parentNode Mozilla TreeWalker.parentNode documentation> 
+parentNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
+parentNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_parentNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"firstChild\"](); })"
+        js_firstChild :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChild :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+firstChild self = liftIO (nullableToMaybe <$> (js_firstChild self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChild_ :: (MonadIO m) => TreeWalker -> m ()
+firstChild_ self = liftIO (void (js_firstChild self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChildUnsafe ::
+                 (MonadIO m, HasCallStack) => TreeWalker -> m Node
+firstChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_firstChild self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.firstChild Mozilla TreeWalker.firstChild documentation> 
+firstChildUnchecked :: (MonadIO m) => TreeWalker -> m Node
+firstChildUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_firstChild self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"lastChild\"](); })" js_lastChild
+        :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChild :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+lastChild self = liftIO (nullableToMaybe <$> (js_lastChild self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChild_ :: (MonadIO m) => TreeWalker -> m ()
+lastChild_ self = liftIO (void (js_lastChild self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChildUnsafe ::
+                (MonadIO m, HasCallStack) => TreeWalker -> m Node
+lastChildUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_lastChild self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.lastChild Mozilla TreeWalker.lastChild documentation> 
+lastChildUnchecked :: (MonadIO m) => TreeWalker -> m Node
+lastChildUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_lastChild self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousSibling\"](); })"
+        js_previousSibling :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSibling :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+previousSibling self
+  = liftIO (nullableToMaybe <$> (js_previousSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSibling_ :: (MonadIO m) => TreeWalker -> m ()
+previousSibling_ self = liftIO (void (js_previousSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSiblingUnsafe ::
+                      (MonadIO m, HasCallStack) => TreeWalker -> m Node
+previousSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_previousSibling self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousSibling Mozilla TreeWalker.previousSibling documentation> 
+previousSiblingUnchecked :: (MonadIO m) => TreeWalker -> m Node
+previousSiblingUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_previousSibling self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextSibling\"](); })"
+        js_nextSibling :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSibling :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+nextSibling self
+  = liftIO (nullableToMaybe <$> (js_nextSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSibling_ :: (MonadIO m) => TreeWalker -> m ()
+nextSibling_ self = liftIO (void (js_nextSibling self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSiblingUnsafe ::
+                  (MonadIO m, HasCallStack) => TreeWalker -> m Node
+nextSiblingUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_nextSibling self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextSibling Mozilla TreeWalker.nextSibling documentation> 
+nextSiblingUnchecked :: (MonadIO m) => TreeWalker -> m Node
+nextSiblingUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_nextSibling self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"previousNode\"](); })"
+        js_previousNode :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+previousNode self
+  = liftIO (nullableToMaybe <$> (js_previousNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNode_ :: (MonadIO m) => TreeWalker -> m ()
+previousNode_ self = liftIO (void (js_previousNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNodeUnsafe ::
+                   (MonadIO m, HasCallStack) => TreeWalker -> m Node
+previousNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_previousNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.previousNode Mozilla TreeWalker.previousNode documentation> 
+previousNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
+previousNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_previousNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextNode\"](); })" js_nextNode
+        :: TreeWalker -> IO (Nullable Node)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNode :: (MonadIO m) => TreeWalker -> m (Maybe Node)
+nextNode self = liftIO (nullableToMaybe <$> (js_nextNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNode_ :: (MonadIO m) => TreeWalker -> m ()
+nextNode_ self = liftIO (void (js_nextNode self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNodeUnsafe :: (MonadIO m, HasCallStack) => TreeWalker -> m Node
+nextNodeUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_nextNode self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.nextNode Mozilla TreeWalker.nextNode documentation> 
+nextNodeUnchecked :: (MonadIO m) => TreeWalker -> m Node
+nextNodeUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_nextNode self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"root\"]; })" js_getRoot ::
+        TreeWalker -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.root Mozilla TreeWalker.root documentation> 
+getRoot :: (MonadIO m) => TreeWalker -> m Node
+getRoot self = liftIO (js_getRoot self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"whatToShow\"]; })"
+        js_getWhatToShow :: TreeWalker -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.whatToShow Mozilla TreeWalker.whatToShow documentation> 
+getWhatToShow :: (MonadIO m) => TreeWalker -> m Word
+getWhatToShow self = liftIO (js_getWhatToShow self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"currentNode\"] = $2; })"
+        js_setCurrentNode :: TreeWalker -> Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+setCurrentNode ::
+               (MonadIO m, IsNode val) => TreeWalker -> val -> m ()
+setCurrentNode self val
+  = liftIO (js_setCurrentNode self (toNode val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"currentNode\"]; })"
+        js_getCurrentNode :: TreeWalker -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker.currentNode Mozilla TreeWalker.currentNode documentation> 
+getCurrentNode :: (MonadIO m) => TreeWalker -> m Node
+getCurrentNode self = liftIO (js_getCurrentNode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UIEvent.hs
@@ -0,0 +1,109 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.UIEvent
+       (js_newUIEvent, newUIEvent, js_initUIEvent, initUIEvent,
+        js_getView, getView, js_getDetail, getDetail, js_getLayerX,
+        getLayerX, js_getLayerY, getLayerY, js_getPageX, getPageX,
+        js_getPageY, getPageY, js_getWhich, getWhich, UIEvent(..),
+        gTypeUIEvent, IsUIEvent, toUIEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return new window[\"UIEvent\"]($1, $2); })"
+        js_newUIEvent :: JSString -> Optional UIEventInit -> IO UIEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation> 
+newUIEvent ::
+           (MonadIO m, ToJSString type', IsUIEventInit eventInitDict) =>
+             type' -> Maybe eventInitDict -> m UIEvent
+newUIEvent type' eventInitDict
+  = liftIO
+      (js_newUIEvent (toJSString type')
+         (maybeToOptional (fmap toUIEventInit eventInitDict)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"initUIEvent\"]($2, $3, $4,\n$5, $6); })" js_initUIEvent ::
+        UIEvent ->
+          Optional JSString ->
+            Bool -> Bool -> Optional Window -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.initUIEvent Mozilla UIEvent.initUIEvent documentation> 
+initUIEvent ::
+            (MonadIO m, IsUIEvent self, ToJSString type') =>
+              self ->
+                Maybe type' -> Bool -> Bool -> Maybe Window -> Maybe Int -> m ()
+initUIEvent self type' canBubble cancelable view detail
+  = liftIO
+      (js_initUIEvent (toUIEvent self) (toOptionalJSString type')
+         canBubble
+         cancelable
+         (maybeToOptional view)
+         (maybeToOptional detail))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"view\"]; })" js_getView ::
+        UIEvent -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.view Mozilla UIEvent.view documentation> 
+getView :: (MonadIO m, IsUIEvent self) => self -> m Window
+getView self = liftIO (js_getView (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"detail\"]; })" js_getDetail ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.detail Mozilla UIEvent.detail documentation> 
+getDetail :: (MonadIO m, IsUIEvent self) => self -> m Int
+getDetail self = liftIO (js_getDetail (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"layerX\"]; })" js_getLayerX ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerX Mozilla UIEvent.layerX documentation> 
+getLayerX :: (MonadIO m, IsUIEvent self) => self -> m Int
+getLayerX self = liftIO (js_getLayerX (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"layerY\"]; })" js_getLayerY ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.layerY Mozilla UIEvent.layerY documentation> 
+getLayerY :: (MonadIO m, IsUIEvent self) => self -> m Int
+getLayerY self = liftIO (js_getLayerY (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageX\"]; })" js_getPageX ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageX Mozilla UIEvent.pageX documentation> 
+getPageX :: (MonadIO m, IsUIEvent self) => self -> m Int
+getPageX self = liftIO (js_getPageX (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageY\"]; })" js_getPageY ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.pageY Mozilla UIEvent.pageY documentation> 
+getPageY :: (MonadIO m, IsUIEvent self) => self -> m Int
+getPageY self = liftIO (js_getPageY (toUIEvent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"which\"]; })" js_getWhich ::
+        UIEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent.which Mozilla UIEvent.which documentation> 
+getWhich :: (MonadIO m, IsUIEvent self) => self -> m Int
+getWhich self = liftIO (js_getWhich (toUIEvent self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URL.hs b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URL.hs
@@ -0,0 +1,271 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.URL
+       (js_newURL, newURL, js_newURL', newURL', js_newURL'', newURL'',
+        js_toJSON, toJSON, toJSON_, js_createObjectURL, createObjectURL,
+        createObjectURL_, js_revokeObjectURL, revokeObjectURL,
+        js_createObjectURLSource, createObjectURLSource,
+        createObjectURLSource_, js_setHref, setHref, js_getHref, getHref,
+        js_getOrigin, getOrigin, js_setProtocol, setProtocol,
+        js_getProtocol, getProtocol, js_setUsername, setUsername,
+        js_getUsername, getUsername, js_setPassword, setPassword,
+        js_getPassword, getPassword, js_setHost, setHost, js_getHost,
+        getHost, js_setHostname, setHostname, js_getHostname, getHostname,
+        js_setPort, setPort, js_getPort, getPort, js_setPathname,
+        setPathname, js_getPathname, getPathname, js_setHash, setHash,
+        js_getHash, getHash, js_setSearch, setSearch, js_getSearch,
+        getSearch, js_getSearchParams, getSearchParams, URL(..), gTypeURL)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return new window[\"URL\"]($1); })" js_newURL
+        :: JSString -> IO URL
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL :: (MonadIO m, ToJSString url) => url -> m URL
+newURL url = liftIO (js_newURL (toJSString url))
+ 
+foreign import javascript safe "(($1, $2) => { return new window[\"URL\"]($1, $2); })"
+        js_newURL' :: JSString -> JSString -> IO URL
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL' ::
+        (MonadIO m, ToJSString url, ToJSString base) =>
+          url -> base -> m URL
+newURL' url base
+  = liftIO (js_newURL' (toJSString url) (toJSString base))
+ 
+foreign import javascript safe "(($1, $2) => { return new window[\"URL\"]($1, $2); })"
+        js_newURL'' :: JSString -> URL -> IO URL
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation> 
+newURL'' :: (MonadIO m, ToJSString url) => url -> URL -> m URL
+newURL'' url base = liftIO (js_newURL'' (toJSString url) base)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toJSON\"](); })" js_toJSON ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
+toJSON :: (MonadIO m, FromJSString result) => URL -> m result
+toJSON self = liftIO (fromJSString <$> (js_toJSON self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.toJSON Mozilla URL.toJSON documentation> 
+toJSON_ :: (MonadIO m) => URL -> m ()
+toJSON_ self = liftIO (void (js_toJSON self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"URL\"][\"createObjectURL\"]($1); })" js_createObjectURL ::
+        Blob -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURL ::
+                (MonadIO m, IsBlob blob, FromJSString result) => blob -> m result
+createObjectURL blob
+  = liftIO (fromJSString <$> (js_createObjectURL (toBlob blob)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURL_ :: (MonadIO m, IsBlob blob) => blob -> m ()
+createObjectURL_ blob
+  = liftIO (void (js_createObjectURL (toBlob blob)))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"URL\"][\"revokeObjectURL\"]($1); })" js_revokeObjectURL ::
+        JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.revokeObjectURL Mozilla URL.revokeObjectURL documentation> 
+revokeObjectURL :: (MonadIO m, ToJSString url) => url -> m ()
+revokeObjectURL url = liftIO (js_revokeObjectURL (toJSString url))
+ 
+foreign import javascript unsafe
+        "(($1) => { return window[\"URL\"][\"createObjectURL\"]($1); })" js_createObjectURLSource
+        :: MediaSource -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLSource ::
+                      (MonadIO m, FromJSString result) => MediaSource -> m result
+createObjectURLSource source
+  = liftIO (fromJSString <$> (js_createObjectURLSource source))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.createObjectURL Mozilla URL.createObjectURL documentation> 
+createObjectURLSource_ :: (MonadIO m) => MediaSource -> m ()
+createObjectURLSource_ source
+  = liftIO (void (js_createObjectURLSource source))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"href\"] = $2; })" js_setHref ::
+        URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
+setHref :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setHref self val = liftIO (js_setHref self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.href Mozilla URL.href documentation> 
+getHref :: (MonadIO m, FromJSString result) => URL -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.origin Mozilla URL.origin documentation> 
+getOrigin :: (MonadIO m, FromJSString result) => URL -> m result
+getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"protocol\"] = $2; })"
+        js_setProtocol :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
+setProtocol :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setProtocol self val
+  = liftIO (js_setProtocol self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.protocol Mozilla URL.protocol documentation> 
+getProtocol :: (MonadIO m, FromJSString result) => URL -> m result
+getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"username\"] = $2; })"
+        js_setUsername :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
+setUsername :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setUsername self val
+  = liftIO (js_setUsername self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"username\"]; })" js_getUsername
+        :: URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.username Mozilla URL.username documentation> 
+getUsername :: (MonadIO m, FromJSString result) => URL -> m result
+getUsername self = liftIO (fromJSString <$> (js_getUsername self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"password\"] = $2; })"
+        js_setPassword :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
+setPassword :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setPassword self val
+  = liftIO (js_setPassword self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"password\"]; })" js_getPassword
+        :: URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.password Mozilla URL.password documentation> 
+getPassword :: (MonadIO m, FromJSString result) => URL -> m result
+getPassword self = liftIO (fromJSString <$> (js_getPassword self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"host\"] = $2; })" js_setHost ::
+        URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
+setHost :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setHost self val = liftIO (js_setHost self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.host Mozilla URL.host documentation> 
+getHost :: (MonadIO m, FromJSString result) => URL -> m result
+getHost self = liftIO (fromJSString <$> (js_getHost self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hostname\"] = $2; })"
+        js_setHostname :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
+setHostname :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setHostname self val
+  = liftIO (js_setHostname self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
+        :: URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hostname Mozilla URL.hostname documentation> 
+getHostname :: (MonadIO m, FromJSString result) => URL -> m result
+getHostname self = liftIO (fromJSString <$> (js_getHostname self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"port\"] = $2; })" js_setPort ::
+        URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
+setPort :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setPort self val = liftIO (js_setPort self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.port Mozilla URL.port documentation> 
+getPort :: (MonadIO m, FromJSString result) => URL -> m result
+getPort self = liftIO (fromJSString <$> (js_getPort self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pathname\"] = $2; })"
+        js_setPathname :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
+setPathname :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setPathname self val
+  = liftIO (js_setPathname self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
+        :: URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.pathname Mozilla URL.pathname documentation> 
+getPathname :: (MonadIO m, FromJSString result) => URL -> m result
+getPathname self = liftIO (fromJSString <$> (js_getPathname self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"hash\"] = $2; })" js_setHash ::
+        URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
+setHash :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setHash self val = liftIO (js_setHash self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.hash Mozilla URL.hash documentation> 
+getHash :: (MonadIO m, FromJSString result) => URL -> m result
+getHash self = liftIO (fromJSString <$> (js_getHash self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"search\"] = $2; })"
+        js_setSearch :: URL -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
+setSearch :: (MonadIO m, ToJSString val) => URL -> val -> m ()
+setSearch self val = liftIO (js_setSearch self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
+        URL -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.search Mozilla URL.search documentation> 
+getSearch :: (MonadIO m, FromJSString result) => URL -> m result
+getSearch self = liftIO (fromJSString <$> (js_getSearch self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"searchParams\"]; })"
+        js_getSearchParams :: URL -> IO URLSearchParams
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URL.searchParams Mozilla URL.searchParams documentation> 
+getSearchParams :: (MonadIO m) => URL -> m URLSearchParams
+getSearchParams self = liftIO (js_getSearchParams self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/URLSearchParams.hs
@@ -0,0 +1,152 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.URLSearchParams
+       (js_newURLSearchParams, newURLSearchParams, js_append, append,
+        js_delete, delete, js_get, get, get_, getUnsafe, getUnchecked,
+        js_getAll, getAll, getAll_, js_has, has, has_, js_set, set,
+        js_sort, sort, js_toString, toString, toString_,
+        URLSearchParams(..), gTypeURLSearchParams)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1) => { return new window[\"URLSearchParams\"]($1); })" js_newURLSearchParams ::
+        URLSearchParamsInit -> IO URLSearchParams
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams Mozilla URLSearchParams documentation> 
+newURLSearchParams ::
+                   (MonadIO m, IsURLSearchParamsInit init) =>
+                     init -> m URLSearchParams
+newURLSearchParams init
+  = liftIO
+      (toJSVal init >>=
+         \ init' -> js_newURLSearchParams (URLSearchParamsInit init'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"append\"]($2, $3); })" js_append
+        :: URLSearchParams -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.append Mozilla URLSearchParams.append documentation> 
+append ::
+       (MonadIO m, ToJSString name, ToJSString value) =>
+         URLSearchParams -> name -> value -> m ()
+append self name value
+  = liftIO (js_append self (toJSString name) (toJSString value))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"delete\"]($2); })" js_delete ::
+        URLSearchParams -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.delete Mozilla URLSearchParams.delete documentation> 
+delete ::
+       (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
+delete self name = liftIO (js_delete self (toJSString name))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"get\"]($2); })" js_get ::
+        URLSearchParams -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
+get ::
+    (MonadIO m, ToJSString name, FromJSString result) =>
+      URLSearchParams -> name -> m (Maybe result)
+get self name
+  = liftIO (fromMaybeJSString <$> (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
+get_ ::
+     (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
+get_ self name = liftIO (void (js_get self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
+getUnsafe ::
+          (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
+            URLSearchParams -> name -> m result
+getUnsafe self name
+  = liftIO
+      ((fromMaybeJSString <$> (js_get self (toJSString name))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.get Mozilla URLSearchParams.get documentation> 
+getUnchecked ::
+             (MonadIO m, ToJSString name, FromJSString result) =>
+               URLSearchParams -> name -> m result
+getUnchecked self name
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_get self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getAll\"]($2); })" js_getAll ::
+        URLSearchParams -> JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
+getAll ::
+       (MonadIO m, ToJSString name, FromJSString result) =>
+         URLSearchParams -> name -> m [result]
+getAll self name
+  = liftIO
+      ((js_getAll self (toJSString name)) >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.getAll Mozilla URLSearchParams.getAll documentation> 
+getAll_ ::
+        (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
+getAll_ self name
+  = liftIO (void (js_getAll self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"has\"]($2) ? 1 : 0); })" js_has
+        :: URLSearchParams -> JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
+has ::
+    (MonadIO m, ToJSString name) => URLSearchParams -> name -> m Bool
+has self name = liftIO (js_has self (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.has Mozilla URLSearchParams.has documentation> 
+has_ ::
+     (MonadIO m, ToJSString name) => URLSearchParams -> name -> m ()
+has_ self name = liftIO (void (js_has self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"set\"]($2, $3); })" js_set ::
+        URLSearchParams -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.set Mozilla URLSearchParams.set documentation> 
+set ::
+    (MonadIO m, ToJSString name, ToJSString value) =>
+      URLSearchParams -> name -> value -> m ()
+set self name value
+  = liftIO (js_set self (toJSString name) (toJSString value))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sort\"](); })" js_sort ::
+        URLSearchParams -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.sort Mozilla URLSearchParams.sort documentation> 
+sort :: (MonadIO m) => URLSearchParams -> m ()
+sort self = liftIO (js_sort self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: URLSearchParams -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => URLSearchParams -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams.toString Mozilla URLSearchParams.toString documentation> 
+toString_ :: (MonadIO m) => URLSearchParams -> m ()
+toString_ self = liftIO (void (js_toString self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs b/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/UserMessageHandler.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.UserMessageHandler
+       (js_postMessage, postMessage, UserMessageHandler(..),
+        gTypeUserMessageHandler)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"postMessage\"]($2); })"
+        js_postMessage ::
+        UserMessageHandler -> SerializedScriptValue -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler.postMessage Mozilla UserMessageHandler.postMessage documentation> 
+postMessage ::
+            (MonadIO m, IsSerializedScriptValue message) =>
+              UserMessageHandler -> message -> m ()
+postMessage self message
+  = liftIO (js_postMessage self (toSerializedScriptValue message))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTCue.hs
@@ -0,0 +1,172 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VTTCue
+       (js_newVTTCue, newVTTCue, js_getCueAsHTML, getCueAsHTML,
+        getCueAsHTML_, js_setVertical, setVertical, js_getVertical,
+        getVertical, js_setSnapToLines, setSnapToLines, js_getSnapToLines,
+        getSnapToLines, js_setLine, setLine, js_getLine, getLine,
+        js_setPosition, setPosition, js_getPosition, getPosition,
+        js_setSize, setSize, js_getSize, getSize, js_setAlign, setAlign,
+        js_getAlign, getAlign, js_setText, setText, js_getText, getText,
+        js_setRegionId, setRegionId, js_getRegionId, getRegionId,
+        VTTCue(..), gTypeVTTCue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return new window[\"VTTCue\"]($1, $2, $3); })" js_newVTTCue ::
+        Double -> Double -> JSString -> IO VTTCue
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation> 
+newVTTCue ::
+          (MonadIO m, ToJSString text) =>
+            Double -> Double -> text -> m VTTCue
+newVTTCue startTime endTime text
+  = liftIO (js_newVTTCue startTime endTime (toJSString text))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getCueAsHTML\"](); })"
+        js_getCueAsHTML :: VTTCue -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+getCueAsHTML :: (MonadIO m) => VTTCue -> m DocumentFragment
+getCueAsHTML self = liftIO (js_getCueAsHTML self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.getCueAsHTML Mozilla VTTCue.getCueAsHTML documentation> 
+getCueAsHTML_ :: (MonadIO m) => VTTCue -> m ()
+getCueAsHTML_ self = liftIO (void (js_getCueAsHTML self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"vertical\"] = $2; })"
+        js_setVertical :: VTTCue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
+setVertical :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
+setVertical self val
+  = liftIO (js_setVertical self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vertical\"]; })" js_getVertical
+        :: VTTCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.vertical Mozilla VTTCue.vertical documentation> 
+getVertical ::
+            (MonadIO m, FromJSString result) => VTTCue -> m result
+getVertical self = liftIO (fromJSString <$> (js_getVertical self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"snapToLines\"] = $2; })"
+        js_setSnapToLines :: VTTCue -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+setSnapToLines :: (MonadIO m) => VTTCue -> Bool -> m ()
+setSnapToLines self val = liftIO (js_setSnapToLines self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"snapToLines\"] ? 1 : 0); })"
+        js_getSnapToLines :: VTTCue -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.snapToLines Mozilla VTTCue.snapToLines documentation> 
+getSnapToLines :: (MonadIO m) => VTTCue -> m Bool
+getSnapToLines self = liftIO (js_getSnapToLines self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"line\"] = $2; })" js_setLine ::
+        VTTCue -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
+setLine :: (MonadIO m) => VTTCue -> Double -> m ()
+setLine self val = liftIO (js_setLine self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"line\"]; })" js_getLine ::
+        VTTCue -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.line Mozilla VTTCue.line documentation> 
+getLine :: (MonadIO m) => VTTCue -> m Double
+getLine self = liftIO (js_getLine self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"position\"] = $2; })"
+        js_setPosition :: VTTCue -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
+setPosition :: (MonadIO m) => VTTCue -> Double -> m ()
+setPosition self val = liftIO (js_setPosition self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
+        :: VTTCue -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.position Mozilla VTTCue.position documentation> 
+getPosition :: (MonadIO m) => VTTCue -> m Double
+getPosition self = liftIO (js_getPosition self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"size\"] = $2; })" js_setSize ::
+        VTTCue -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+setSize :: (MonadIO m) => VTTCue -> Double -> m ()
+setSize self val = liftIO (js_setSize self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        VTTCue -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.size Mozilla VTTCue.size documentation> 
+getSize :: (MonadIO m) => VTTCue -> m Double
+getSize self = liftIO (js_getSize self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"align\"] = $2; })" js_setAlign ::
+        VTTCue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
+setAlign :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
+setAlign self val = liftIO (js_setAlign self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"align\"]; })" js_getAlign ::
+        VTTCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.align Mozilla VTTCue.align documentation> 
+getAlign :: (MonadIO m, FromJSString result) => VTTCue -> m result
+getAlign self = liftIO (fromJSString <$> (js_getAlign self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"text\"] = $2; })" js_setText ::
+        VTTCue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+setText :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
+setText self val = liftIO (js_setText self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"text\"]; })" js_getText ::
+        VTTCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.text Mozilla VTTCue.text documentation> 
+getText :: (MonadIO m, FromJSString result) => VTTCue -> m result
+getText self = liftIO (fromJSString <$> (js_getText self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"regionId\"] = $2; })"
+        js_setRegionId :: VTTCue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
+setRegionId :: (MonadIO m, ToJSString val) => VTTCue -> val -> m ()
+setRegionId self val
+  = liftIO (js_setRegionId self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"regionId\"]; })" js_getRegionId
+        :: VTTCue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue.regionId Mozilla VTTCue.regionId documentation> 
+getRegionId ::
+            (MonadIO m, FromJSString result) => VTTCue -> m result
+getRegionId self = liftIO (fromJSString <$> (js_getRegionId self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTRegion.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VTTRegion
+       (js_newVTTRegion, newVTTRegion, js_getTrack, getTrack, js_setId,
+        setId, js_getId, getId, js_setWidth, setWidth, js_getWidth,
+        getWidth, js_setHeight, setHeight, js_getHeight, getHeight,
+        js_setRegionAnchorX, setRegionAnchorX, js_getRegionAnchorX,
+        getRegionAnchorX, js_setRegionAnchorY, setRegionAnchorY,
+        js_getRegionAnchorY, getRegionAnchorY, js_setViewportAnchorX,
+        setViewportAnchorX, js_getViewportAnchorX, getViewportAnchorX,
+        js_setViewportAnchorY, setViewportAnchorY, js_getViewportAnchorY,
+        getViewportAnchorY, js_setScroll, setScroll, js_getScroll,
+        getScroll, VTTRegion(..), gTypeVTTRegion)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"VTTRegion\"](); })"
+        js_newVTTRegion :: IO VTTRegion
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation> 
+newVTTRegion :: (MonadIO m) => m VTTRegion
+newVTTRegion = liftIO (js_newVTTRegion)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"track\"]; })" js_getTrack ::
+        VTTRegion -> IO TextTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.track Mozilla VTTRegion.track documentation> 
+getTrack :: (MonadIO m) => VTTRegion -> m TextTrack
+getTrack self = liftIO (js_getTrack self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"id\"] = $2; })" js_setId ::
+        VTTRegion -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+setId :: (MonadIO m, ToJSString val) => VTTRegion -> val -> m ()
+setId self val = liftIO (js_setId self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        VTTRegion -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.id Mozilla VTTRegion.id documentation> 
+getId :: (MonadIO m, FromJSString result) => VTTRegion -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth ::
+        VTTRegion -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+setWidth :: (MonadIO m) => VTTRegion -> Double -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        VTTRegion -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.width Mozilla VTTRegion.width documentation> 
+getWidth :: (MonadIO m) => VTTRegion -> m Double
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"height\"] = $2; })" js_setHeight
+        :: VTTRegion -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
+setHeight :: (MonadIO m) => VTTRegion -> Int -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        VTTRegion -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.height Mozilla VTTRegion.height documentation> 
+getHeight :: (MonadIO m) => VTTRegion -> m Int
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"regionAnchorX\"] = $2; })"
+        js_setRegionAnchorX :: VTTRegion -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+setRegionAnchorX :: (MonadIO m) => VTTRegion -> Double -> m ()
+setRegionAnchorX self val = liftIO (js_setRegionAnchorX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"regionAnchorX\"]; })"
+        js_getRegionAnchorX :: VTTRegion -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorX Mozilla VTTRegion.regionAnchorX documentation> 
+getRegionAnchorX :: (MonadIO m) => VTTRegion -> m Double
+getRegionAnchorX self = liftIO (js_getRegionAnchorX self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"regionAnchorY\"] = $2; })"
+        js_setRegionAnchorY :: VTTRegion -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+setRegionAnchorY :: (MonadIO m) => VTTRegion -> Double -> m ()
+setRegionAnchorY self val = liftIO (js_setRegionAnchorY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"regionAnchorY\"]; })"
+        js_getRegionAnchorY :: VTTRegion -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.regionAnchorY Mozilla VTTRegion.regionAnchorY documentation> 
+getRegionAnchorY :: (MonadIO m) => VTTRegion -> m Double
+getRegionAnchorY self = liftIO (js_getRegionAnchorY self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"viewportAnchorX\"] = $2; })"
+        js_setViewportAnchorX :: VTTRegion -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+setViewportAnchorX :: (MonadIO m) => VTTRegion -> Double -> m ()
+setViewportAnchorX self val
+  = liftIO (js_setViewportAnchorX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewportAnchorX\"]; })"
+        js_getViewportAnchorX :: VTTRegion -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorX Mozilla VTTRegion.viewportAnchorX documentation> 
+getViewportAnchorX :: (MonadIO m) => VTTRegion -> m Double
+getViewportAnchorX self = liftIO (js_getViewportAnchorX self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"viewportAnchorY\"] = $2; })"
+        js_setViewportAnchorY :: VTTRegion -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+setViewportAnchorY :: (MonadIO m) => VTTRegion -> Double -> m ()
+setViewportAnchorY self val
+  = liftIO (js_setViewportAnchorY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"viewportAnchorY\"]; })"
+        js_getViewportAnchorY :: VTTRegion -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.viewportAnchorY Mozilla VTTRegion.viewportAnchorY documentation> 
+getViewportAnchorY :: (MonadIO m) => VTTRegion -> m Double
+getViewportAnchorY self = liftIO (js_getViewportAnchorY self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"scroll\"] = $2; })" js_setScroll
+        :: VTTRegion -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
+setScroll ::
+          (MonadIO m, ToJSString val) => VTTRegion -> val -> m ()
+setScroll self val = liftIO (js_setScroll self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scroll\"]; })" js_getScroll ::
+        VTTRegion -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion.scroll Mozilla VTTRegion.scroll documentation> 
+getScroll ::
+          (MonadIO m, FromJSString result) => VTTRegion -> m result
+getScroll self = liftIO (fromJSString <$> (js_getScroll self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs b/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VTTRegionList.hs
@@ -0,0 +1,96 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VTTRegionList
+       (js_item, item, item_, itemUnsafe, itemUnchecked, js_getRegionById,
+        getRegionById, getRegionById_, getRegionByIdUnsafe,
+        getRegionByIdUnchecked, js_getLength, getLength, VTTRegionList(..),
+        gTypeVTTRegionList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        VTTRegionList -> Word -> IO (Nullable VTTRegion)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+item :: (MonadIO m) => VTTRegionList -> Word -> m (Maybe VTTRegion)
+item self index = liftIO (nullableToMaybe <$> (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+item_ :: (MonadIO m) => VTTRegionList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+itemUnsafe ::
+           (MonadIO m, HasCallStack) => VTTRegionList -> Word -> m VTTRegion
+itemUnsafe self index
+  = liftIO
+      ((nullableToMaybe <$> (js_item self index)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.item Mozilla VTTRegionList.item documentation> 
+itemUnchecked ::
+              (MonadIO m) => VTTRegionList -> Word -> m VTTRegion
+itemUnchecked self index
+  = liftIO (fromJust . nullableToMaybe <$> (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getRegionById\"]($2); })"
+        js_getRegionById ::
+        VTTRegionList -> JSString -> IO (Nullable VTTRegion)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionById ::
+              (MonadIO m, ToJSString id) =>
+                VTTRegionList -> id -> m (Maybe VTTRegion)
+getRegionById self id
+  = liftIO
+      (nullableToMaybe <$> (js_getRegionById self (toJSString id)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionById_ ::
+               (MonadIO m, ToJSString id) => VTTRegionList -> id -> m ()
+getRegionById_ self id
+  = liftIO (void (js_getRegionById self (toJSString id)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionByIdUnsafe ::
+                    (MonadIO m, ToJSString id, HasCallStack) =>
+                      VTTRegionList -> id -> m VTTRegion
+getRegionByIdUnsafe self id
+  = liftIO
+      ((nullableToMaybe <$> (js_getRegionById self (toJSString id))) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.getRegionById Mozilla VTTRegionList.getRegionById documentation> 
+getRegionByIdUnchecked ::
+                       (MonadIO m, ToJSString id) => VTTRegionList -> id -> m VTTRegion
+getRegionByIdUnchecked self id
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getRegionById self (toJSString id)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        VTTRegionList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList.length Mozilla VTTRegionList.length documentation> 
+getLength :: (MonadIO m) => VTTRegionList -> m Word
+getLength self = liftIO (js_getLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/ValidityState.hs
@@ -0,0 +1,110 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.ValidityState
+       (js_getValueMissing, getValueMissing, js_getTypeMismatch,
+        getTypeMismatch, js_getPatternMismatch, getPatternMismatch,
+        js_getTooShort, getTooShort, js_getTooLong, getTooLong,
+        js_getRangeUnderflow, getRangeUnderflow, js_getRangeOverflow,
+        getRangeOverflow, js_getStepMismatch, getStepMismatch,
+        js_getBadInput, getBadInput, js_getCustomError, getCustomError,
+        js_getValid, getValid, ValidityState(..), gTypeValidityState)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"valueMissing\"] ? 1 : 0); })"
+        js_getValueMissing :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valueMissing Mozilla ValidityState.valueMissing documentation> 
+getValueMissing :: (MonadIO m) => ValidityState -> m Bool
+getValueMissing self = liftIO (js_getValueMissing self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"typeMismatch\"] ? 1 : 0); })"
+        js_getTypeMismatch :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.typeMismatch Mozilla ValidityState.typeMismatch documentation> 
+getTypeMismatch :: (MonadIO m) => ValidityState -> m Bool
+getTypeMismatch self = liftIO (js_getTypeMismatch self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"patternMismatch\"] ? 1 : 0); })" js_getPatternMismatch ::
+        ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.patternMismatch Mozilla ValidityState.patternMismatch documentation> 
+getPatternMismatch :: (MonadIO m) => ValidityState -> m Bool
+getPatternMismatch self = liftIO (js_getPatternMismatch self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"tooShort\"] ? 1 : 0); })"
+        js_getTooShort :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooShort Mozilla ValidityState.tooShort documentation> 
+getTooShort :: (MonadIO m) => ValidityState -> m Bool
+getTooShort self = liftIO (js_getTooShort self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"tooLong\"] ? 1 : 0); })"
+        js_getTooLong :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.tooLong Mozilla ValidityState.tooLong documentation> 
+getTooLong :: (MonadIO m) => ValidityState -> m Bool
+getTooLong self = liftIO (js_getTooLong self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"rangeUnderflow\"] ? 1 : 0); })"
+        js_getRangeUnderflow :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeUnderflow Mozilla ValidityState.rangeUnderflow documentation> 
+getRangeUnderflow :: (MonadIO m) => ValidityState -> m Bool
+getRangeUnderflow self = liftIO (js_getRangeUnderflow self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"rangeOverflow\"] ? 1 : 0); })"
+        js_getRangeOverflow :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.rangeOverflow Mozilla ValidityState.rangeOverflow documentation> 
+getRangeOverflow :: (MonadIO m) => ValidityState -> m Bool
+getRangeOverflow self = liftIO (js_getRangeOverflow self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"stepMismatch\"] ? 1 : 0); })"
+        js_getStepMismatch :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.stepMismatch Mozilla ValidityState.stepMismatch documentation> 
+getStepMismatch :: (MonadIO m) => ValidityState -> m Bool
+getStepMismatch self = liftIO (js_getStepMismatch self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"badInput\"] ? 1 : 0); })"
+        js_getBadInput :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.badInput Mozilla ValidityState.badInput documentation> 
+getBadInput :: (MonadIO m) => ValidityState -> m Bool
+getBadInput self = liftIO (js_getBadInput self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"customError\"] ? 1 : 0); })"
+        js_getCustomError :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.customError Mozilla ValidityState.customError documentation> 
+getCustomError :: (MonadIO m) => ValidityState -> m Bool
+getCustomError self = liftIO (js_getCustomError self)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"valid\"] ? 1 : 0); })"
+        js_getValid :: ValidityState -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState.valid Mozilla ValidityState.valid documentation> 
+getValid :: (MonadIO m) => ValidityState -> m Bool
+getValid self = liftIO (js_getValid self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoPlaybackQuality.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VideoPlaybackQuality
+       (js_getCreationTime, getCreationTime, js_getTotalVideoFrames,
+        getTotalVideoFrames, js_getDroppedVideoFrames,
+        getDroppedVideoFrames, js_getCorruptedVideoFrames,
+        getCorruptedVideoFrames, js_getTotalFrameDelay, getTotalFrameDelay,
+        VideoPlaybackQuality(..), gTypeVideoPlaybackQuality)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"creationTime\"]; })"
+        js_getCreationTime :: VideoPlaybackQuality -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.creationTime Mozilla VideoPlaybackQuality.creationTime documentation> 
+getCreationTime :: (MonadIO m) => VideoPlaybackQuality -> m Double
+getCreationTime self = liftIO (js_getCreationTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"totalVideoFrames\"]; })"
+        js_getTotalVideoFrames :: VideoPlaybackQuality -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalVideoFrames Mozilla VideoPlaybackQuality.totalVideoFrames documentation> 
+getTotalVideoFrames ::
+                    (MonadIO m) => VideoPlaybackQuality -> m Word
+getTotalVideoFrames self = liftIO (js_getTotalVideoFrames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"droppedVideoFrames\"]; })"
+        js_getDroppedVideoFrames :: VideoPlaybackQuality -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.droppedVideoFrames Mozilla VideoPlaybackQuality.droppedVideoFrames documentation> 
+getDroppedVideoFrames ::
+                      (MonadIO m) => VideoPlaybackQuality -> m Word
+getDroppedVideoFrames self = liftIO (js_getDroppedVideoFrames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"corruptedVideoFrames\"]; })"
+        js_getCorruptedVideoFrames :: VideoPlaybackQuality -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.corruptedVideoFrames Mozilla VideoPlaybackQuality.corruptedVideoFrames documentation> 
+getCorruptedVideoFrames ::
+                        (MonadIO m) => VideoPlaybackQuality -> m Word
+getCorruptedVideoFrames self
+  = liftIO (js_getCorruptedVideoFrames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"totalFrameDelay\"]; })"
+        js_getTotalFrameDelay :: VideoPlaybackQuality -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality.totalFrameDelay Mozilla VideoPlaybackQuality.totalFrameDelay documentation> 
+getTotalFrameDelay ::
+                   (MonadIO m) => VideoPlaybackQuality -> m Double
+getTotalFrameDelay self = liftIO (js_getTotalFrameDelay self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrack.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VideoTrack
+       (js_getId, getId, js_setKind, setKind, js_getKind, getKind,
+        js_getLabel, getLabel, js_setLanguage, setLanguage, js_getLanguage,
+        getLanguage, js_setSelected, setSelected, js_getSelected,
+        getSelected, js_getSourceBuffer, getSourceBuffer, VideoTrack(..),
+        gTypeVideoTrack)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"id\"]; })" js_getId ::
+        VideoTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.id Mozilla VideoTrack.id documentation> 
+getId :: (MonadIO m, FromJSString result) => VideoTrack -> m result
+getId self = liftIO (fromJSString <$> (js_getId self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"kind\"] = $2; })" js_setKind ::
+        VideoTrack -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
+setKind :: (MonadIO m, ToJSString val) => VideoTrack -> val -> m ()
+setKind self val = liftIO (js_setKind self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"kind\"]; })" js_getKind ::
+        VideoTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.kind Mozilla VideoTrack.kind documentation> 
+getKind ::
+        (MonadIO m, FromJSString result) => VideoTrack -> m result
+getKind self = liftIO (fromJSString <$> (js_getKind self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        VideoTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.label Mozilla VideoTrack.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => VideoTrack -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"language\"] = $2; })"
+        js_setLanguage :: VideoTrack -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
+setLanguage ::
+            (MonadIO m, ToJSString val) => VideoTrack -> val -> m ()
+setLanguage self val
+  = liftIO (js_setLanguage self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"language\"]; })" js_getLanguage
+        :: VideoTrack -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.language Mozilla VideoTrack.language documentation> 
+getLanguage ::
+            (MonadIO m, FromJSString result) => VideoTrack -> m result
+getLanguage self = liftIO (fromJSString <$> (js_getLanguage self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"selected\"] = $2; })"
+        js_setSelected :: VideoTrack -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+setSelected :: (MonadIO m) => VideoTrack -> Bool -> m ()
+setSelected self val = liftIO (js_setSelected self val)
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"selected\"] ? 1 : 0); })"
+        js_getSelected :: VideoTrack -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.selected Mozilla VideoTrack.selected documentation> 
+getSelected :: (MonadIO m) => VideoTrack -> m Bool
+getSelected self = liftIO (js_getSelected self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceBuffer\"]; })"
+        js_getSourceBuffer :: VideoTrack -> IO SourceBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack.sourceBuffer Mozilla VideoTrack.sourceBuffer documentation> 
+getSourceBuffer :: (MonadIO m) => VideoTrack -> m SourceBuffer
+getSourceBuffer self = liftIO (js_getSourceBuffer self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VideoTrackList.hs
@@ -0,0 +1,81 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VideoTrackList
+       (js_item, item, item_, js_getTrackById, getTrackById,
+        getTrackById_, js_getLength, getLength, js_getSelectedIndex,
+        getSelectedIndex, change, addTrack, removeTrack,
+        VideoTrackList(..), gTypeVideoTrackList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[$2]; })" js_item ::
+        VideoTrackList -> Word -> IO VideoTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
+item :: (MonadIO m) => VideoTrackList -> Word -> m VideoTrack
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.item Mozilla VideoTrackList.item documentation> 
+item_ :: (MonadIO m) => VideoTrackList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getTrackById\"]($2); })"
+        js_getTrackById :: VideoTrackList -> JSString -> IO VideoTrack
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
+getTrackById ::
+             (MonadIO m, ToJSString id) => VideoTrackList -> id -> m VideoTrack
+getTrackById self id
+  = liftIO (js_getTrackById self (toJSString id))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.getTrackById Mozilla VideoTrackList.getTrackById documentation> 
+getTrackById_ ::
+              (MonadIO m, ToJSString id) => VideoTrackList -> id -> m ()
+getTrackById_ self id
+  = liftIO (void (js_getTrackById self (toJSString id)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        VideoTrackList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.length Mozilla VideoTrackList.length documentation> 
+getLength :: (MonadIO m) => VideoTrackList -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"selectedIndex\"]; })"
+        js_getSelectedIndex :: VideoTrackList -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.selectedIndex Mozilla VideoTrackList.selectedIndex documentation> 
+getSelectedIndex :: (MonadIO m) => VideoTrackList -> m Int
+getSelectedIndex self = liftIO (js_getSelectedIndex self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onchange Mozilla VideoTrackList.onchange documentation> 
+change :: EventName VideoTrackList Event
+change = unsafeEventName (toJSString "change")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onaddtrack Mozilla VideoTrackList.onaddtrack documentation> 
+addTrack :: EventName VideoTrackList Event
+addTrack = unsafeEventName (toJSString "addtrack")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList.onremovetrack Mozilla VideoTrackList.onremovetrack documentation> 
+removeTrack :: EventName VideoTrackList Event
+removeTrack = unsafeEventName (toJSString "removetrack")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs b/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/VoidCallback.hs
@@ -0,0 +1,42 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.VoidCallback
+       (newVoidCallback, newVoidCallbackSync, newVoidCallbackAsync,
+        VoidCallback)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallback :: (MonadIO m) => IO () -> m VoidCallback
+newVoidCallback callback
+  = liftIO (VoidCallback <$> syncCallback ThrowWouldBlock callback)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallbackSync :: (MonadIO m) => IO () -> m VoidCallback
+newVoidCallbackSync callback
+  = liftIO (VoidCallback <$> syncCallback ContinueAsync callback)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/VoidCallback Mozilla VoidCallback documentation> 
+newVoidCallbackAsync :: (MonadIO m) => IO () -> m VoidCallback
+newVoidCallbackAsync callback
+  = liftIO (VoidCallback <$> asyncCallback callback)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WaveShaperNode.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WaveShaperNode
+       (js_setCurve, setCurve, js_getCurve, getCurve, js_setOversample,
+        setOversample, js_getOversample, getOversample, WaveShaperNode(..),
+        gTypeWaveShaperNode)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"curve\"] = $2; })" js_setCurve
+        :: WaveShaperNode -> Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+setCurve ::
+         (MonadIO m, IsFloat32Array val) => WaveShaperNode -> val -> m ()
+setCurve self val = liftIO (js_setCurve self (toFloat32Array val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"curve\"]; })" js_getCurve ::
+        WaveShaperNode -> IO Float32Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.curve Mozilla WaveShaperNode.curve documentation> 
+getCurve :: (MonadIO m) => WaveShaperNode -> m Float32Array
+getCurve self = liftIO (js_getCurve self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"oversample\"] = $2; })"
+        js_setOversample :: WaveShaperNode -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
+setOversample ::
+              (MonadIO m) => WaveShaperNode -> OverSampleType -> m ()
+setOversample self val
+  = liftIO (js_setOversample self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"oversample\"]; })"
+        js_getOversample :: WaveShaperNode -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode.oversample Mozilla WaveShaperNode.oversample documentation> 
+getOversample :: (MonadIO m) => WaveShaperNode -> m OverSampleType
+getOversample self
+  = liftIO ((js_getOversample self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGL2RenderingContext.hs
@@ -0,0 +1,2111 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGL2RenderingContext
+       (js_bufferDataPtr, bufferDataPtr, js_bufferData, bufferData,
+        js_bufferSubData, bufferSubData, js_bufferDataView, bufferDataView,
+        js_bufferSubDataView, bufferSubDataView, js_copyBufferSubData,
+        copyBufferSubData, js_getBufferSubData, getBufferSubData,
+        js_blitFramebuffer, blitFramebuffer, js_framebufferTextureLayer,
+        framebufferTextureLayer, js_getInternalformatParameter,
+        getInternalformatParameter, getInternalformatParameter_,
+        js_invalidateFramebuffer, invalidateFramebuffer,
+        js_invalidateSubFramebuffer, invalidateSubFramebuffer,
+        js_readBuffer, readBuffer, js_renderbufferStorageMultisample,
+        renderbufferStorageMultisample, js_texStorage2D, texStorage2D,
+        js_texStorage3D, texStorage3D, js_texImage3D, texImage3D,
+        js_texSubImage3DView, texSubImage3DView, js_texSubImage3D,
+        texSubImage3D, js_copyTexSubImage3D, copyTexSubImage3D,
+        js_compressedTexImage3D, compressedTexImage3D,
+        js_compressedTexSubImage3D, compressedTexSubImage3D,
+        js_getFragDataLocation, getFragDataLocation, getFragDataLocation_,
+        js_uniform1ui, uniform1ui, js_uniform2ui, uniform2ui,
+        js_uniform3ui, uniform3ui, js_uniform4ui, uniform4ui,
+        js_uniform1uiv, uniform1uiv, js_uniform2uiv, uniform2uiv,
+        js_uniform3uiv, uniform3uiv, js_uniform4uiv, uniform4uiv,
+        js_uniformMatrix2x3fv, uniformMatrix2x3fv, js_uniformMatrix3x2fv,
+        uniformMatrix3x2fv, js_uniformMatrix2x4fv, uniformMatrix2x4fv,
+        js_uniformMatrix4x2fv, uniformMatrix4x2fv, js_uniformMatrix3x4fv,
+        uniformMatrix3x4fv, js_uniformMatrix4x3fv, uniformMatrix4x3fv,
+        js_vertexAttribI4i, vertexAttribI4i, js_vertexAttribI4iv,
+        vertexAttribI4iv, js_vertexAttribI4ui, vertexAttribI4ui,
+        js_vertexAttribI4uiv, vertexAttribI4uiv, js_vertexAttribIPointer,
+        vertexAttribIPointer, js_vertexAttribDivisor, vertexAttribDivisor,
+        js_drawArraysInstanced, drawArraysInstanced,
+        js_drawElementsInstanced, drawElementsInstanced,
+        js_drawRangeElements, drawRangeElements, js_drawBuffers,
+        drawBuffers, js_clearBufferiv, clearBufferiv, js_clearBufferuiv,
+        clearBufferuiv, js_clearBufferfv, clearBufferfv, js_clearBufferfi,
+        clearBufferfi, js_createQuery, createQuery, createQuery_,
+        js_deleteQuery, deleteQuery, js_isQuery, isQuery, isQuery_,
+        js_beginQuery, beginQuery, js_endQuery, endQuery, js_getQuery,
+        getQuery, getQuery_, js_getQueryParameter, getQueryParameter,
+        getQueryParameter_, js_createSampler, createSampler,
+        createSampler_, js_deleteSampler, deleteSampler, js_isSampler,
+        isSampler, isSampler_, js_bindSampler, bindSampler,
+        js_samplerParameteri, samplerParameteri, js_samplerParameterf,
+        samplerParameterf, js_getSamplerParameter, getSamplerParameter,
+        getSamplerParameter_, js_fenceSync, fenceSync, fenceSync_,
+        js_isSync, isSync, isSync_, js_deleteSync, deleteSync,
+        js_clientWaitSync, clientWaitSync, clientWaitSync_, js_waitSync,
+        waitSync, js_getSyncParameter, getSyncParameter, getSyncParameter_,
+        js_createTransformFeedback, createTransformFeedback,
+        createTransformFeedback_, js_deleteTransformFeedback,
+        deleteTransformFeedback, js_isTransformFeedback,
+        isTransformFeedback, isTransformFeedback_,
+        js_bindTransformFeedback, bindTransformFeedback,
+        js_beginTransformFeedback, beginTransformFeedback,
+        js_endTransformFeedback, endTransformFeedback,
+        js_transformFeedbackVaryings, transformFeedbackVaryings,
+        js_getTransformFeedbackVarying, getTransformFeedbackVarying,
+        getTransformFeedbackVarying_, js_pauseTransformFeedback,
+        pauseTransformFeedback, js_resumeTransformFeedback,
+        resumeTransformFeedback, js_bindBufferBase, bindBufferBase,
+        js_bindBufferRange, bindBufferRange, js_getIndexedParameter,
+        getIndexedParameter, getIndexedParameter_, js_getUniformIndices,
+        getUniformIndices, getUniformIndices_, js_getActiveUniforms,
+        getActiveUniforms, getActiveUniforms_, js_getUniformBlockIndex,
+        getUniformBlockIndex, getUniformBlockIndex_,
+        js_getActiveUniformBlockParameter, getActiveUniformBlockParameter,
+        getActiveUniformBlockParameter_, js_getActiveUniformBlockName,
+        getActiveUniformBlockName, getActiveUniformBlockName_,
+        js_uniformBlockBinding, uniformBlockBinding, js_createVertexArray,
+        createVertexArray, createVertexArray_, js_deleteVertexArray,
+        deleteVertexArray, js_isVertexArray, isVertexArray, isVertexArray_,
+        js_bindVertexArray, bindVertexArray, pattern READ_BUFFER,
+        pattern UNPACK_ROW_LENGTH, pattern UNPACK_SKIP_ROWS,
+        pattern UNPACK_SKIP_PIXELS, pattern PACK_ROW_LENGTH,
+        pattern PACK_SKIP_ROWS, pattern PACK_SKIP_PIXELS, pattern COLOR,
+        pattern DEPTH, pattern STENCIL, pattern RED, pattern RGB8,
+        pattern RGBA8, pattern RGB10_A2, pattern TEXTURE_BINDING_3D,
+        pattern UNPACK_SKIP_IMAGES, pattern UNPACK_IMAGE_HEIGHT,
+        pattern TEXTURE_3D, pattern TEXTURE_WRAP_R,
+        pattern MAX_3D_TEXTURE_SIZE, pattern UNSIGNED_INT_2_10_10_10_REV,
+        pattern MAX_ELEMENTS_VERTICES, pattern MAX_ELEMENTS_INDICES,
+        pattern TEXTURE_MIN_LOD, pattern TEXTURE_MAX_LOD,
+        pattern TEXTURE_BASE_LEVEL, pattern TEXTURE_MAX_LEVEL, pattern MIN,
+        pattern MAX, pattern DEPTH_COMPONENT24,
+        pattern MAX_TEXTURE_LOD_BIAS, pattern TEXTURE_COMPARE_MODE,
+        pattern TEXTURE_COMPARE_FUNC, pattern CURRENT_QUERY,
+        pattern QUERY_RESULT, pattern QUERY_RESULT_AVAILABLE,
+        pattern STREAM_READ, pattern STREAM_COPY, pattern STATIC_READ,
+        pattern STATIC_COPY, pattern DYNAMIC_READ, pattern DYNAMIC_COPY,
+        pattern MAX_DRAW_BUFFERS, pattern DRAW_BUFFER0,
+        pattern DRAW_BUFFER1, pattern DRAW_BUFFER2, pattern DRAW_BUFFER3,
+        pattern DRAW_BUFFER4, pattern DRAW_BUFFER5, pattern DRAW_BUFFER6,
+        pattern DRAW_BUFFER7, pattern DRAW_BUFFER8, pattern DRAW_BUFFER9,
+        pattern DRAW_BUFFER10, pattern DRAW_BUFFER11,
+        pattern DRAW_BUFFER12, pattern DRAW_BUFFER13,
+        pattern DRAW_BUFFER14, pattern DRAW_BUFFER15,
+        pattern MAX_FRAGMENT_UNIFORM_COMPONENTS,
+        pattern MAX_VERTEX_UNIFORM_COMPONENTS, pattern SAMPLER_3D,
+        pattern SAMPLER_2D_SHADOW, pattern FRAGMENT_SHADER_DERIVATIVE_HINT,
+        pattern PIXEL_PACK_BUFFER, pattern PIXEL_UNPACK_BUFFER,
+        pattern PIXEL_PACK_BUFFER_BINDING,
+        pattern PIXEL_UNPACK_BUFFER_BINDING, pattern FLOAT_MAT2x3,
+        pattern FLOAT_MAT2x4, pattern FLOAT_MAT3x2, pattern FLOAT_MAT3x4,
+        pattern FLOAT_MAT4x2, pattern FLOAT_MAT4x3, pattern SRGB,
+        pattern SRGB8, pattern SRGB8_ALPHA8,
+        pattern COMPARE_REF_TO_TEXTURE, pattern RGBA32F, pattern RGB32F,
+        pattern RGBA16F, pattern RGB16F,
+        pattern VERTEX_ATTRIB_ARRAY_INTEGER,
+        pattern MAX_ARRAY_TEXTURE_LAYERS, pattern MIN_PROGRAM_TEXEL_OFFSET,
+        pattern MAX_PROGRAM_TEXEL_OFFSET, pattern MAX_VARYING_COMPONENTS,
+        pattern TEXTURE_2D_ARRAY, pattern TEXTURE_BINDING_2D_ARRAY,
+        pattern R11F_G11F_B10F, pattern UNSIGNED_INT_10F_11F_11F_REV,
+        pattern RGB9_E5, pattern UNSIGNED_INT_5_9_9_9_REV,
+        pattern TRANSFORM_FEEDBACK_BUFFER_MODE,
+        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+        pattern TRANSFORM_FEEDBACK_VARYINGS,
+        pattern TRANSFORM_FEEDBACK_BUFFER_START,
+        pattern TRANSFORM_FEEDBACK_BUFFER_SIZE,
+        pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN,
+        pattern RASTERIZER_DISCARD,
+        pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+        pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
+        pattern INTERLEAVED_ATTRIBS, pattern SEPARATE_ATTRIBS,
+        pattern TRANSFORM_FEEDBACK_BUFFER,
+        pattern TRANSFORM_FEEDBACK_BUFFER_BINDING, pattern RGBA32UI,
+        pattern RGB32UI, pattern RGBA16UI, pattern RGB16UI,
+        pattern RGBA8UI, pattern RGB8UI, pattern RGBA32I, pattern RGB32I,
+        pattern RGBA16I, pattern RGB16I, pattern RGBA8I, pattern RGB8I,
+        pattern RED_INTEGER, pattern RGB_INTEGER, pattern RGBA_INTEGER,
+        pattern SAMPLER_2D_ARRAY, pattern SAMPLER_2D_ARRAY_SHADOW,
+        pattern SAMPLER_CUBE_SHADOW, pattern UNSIGNED_INT_VEC2,
+        pattern UNSIGNED_INT_VEC3, pattern UNSIGNED_INT_VEC4,
+        pattern INT_SAMPLER_2D, pattern INT_SAMPLER_3D,
+        pattern INT_SAMPLER_CUBE, pattern INT_SAMPLER_2D_ARRAY,
+        pattern UNSIGNED_INT_SAMPLER_2D, pattern UNSIGNED_INT_SAMPLER_3D,
+        pattern UNSIGNED_INT_SAMPLER_CUBE,
+        pattern UNSIGNED_INT_SAMPLER_2D_ARRAY, pattern DEPTH_COMPONENT32F,
+        pattern DEPTH32F_STENCIL8, pattern FLOAT_32_UNSIGNED_INT_24_8_REV,
+        pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING,
+        pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE,
+        pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE,
+        pattern FRAMEBUFFER_DEFAULT, pattern DEPTH_STENCIL_ATTACHMENT,
+        pattern DEPTH_STENCIL, pattern UNSIGNED_INT_24_8,
+        pattern DEPTH24_STENCIL8, pattern UNSIGNED_NORMALIZED,
+        pattern DRAW_FRAMEBUFFER_BINDING, pattern READ_FRAMEBUFFER,
+        pattern DRAW_FRAMEBUFFER, pattern READ_FRAMEBUFFER_BINDING,
+        pattern RENDERBUFFER_SAMPLES,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER,
+        pattern MAX_COLOR_ATTACHMENTS, pattern COLOR_ATTACHMENT1,
+        pattern COLOR_ATTACHMENT2, pattern COLOR_ATTACHMENT3,
+        pattern COLOR_ATTACHMENT4, pattern COLOR_ATTACHMENT5,
+        pattern COLOR_ATTACHMENT6, pattern COLOR_ATTACHMENT7,
+        pattern COLOR_ATTACHMENT8, pattern COLOR_ATTACHMENT9,
+        pattern COLOR_ATTACHMENT10, pattern COLOR_ATTACHMENT11,
+        pattern COLOR_ATTACHMENT12, pattern COLOR_ATTACHMENT13,
+        pattern COLOR_ATTACHMENT14, pattern COLOR_ATTACHMENT15,
+        pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE, pattern MAX_SAMPLES,
+        pattern HALF_FLOAT, pattern RG, pattern RG_INTEGER, pattern R8,
+        pattern RG8, pattern R16F, pattern R32F, pattern RG16F,
+        pattern RG32F, pattern R8I, pattern R8UI, pattern R16I,
+        pattern R16UI, pattern R32I, pattern R32UI, pattern RG8I,
+        pattern RG8UI, pattern RG16I, pattern RG16UI, pattern RG32I,
+        pattern RG32UI, pattern VERTEX_ARRAY_BINDING, pattern R8_SNORM,
+        pattern RG8_SNORM, pattern RGB8_SNORM, pattern RGBA8_SNORM,
+        pattern SIGNED_NORMALIZED, pattern PRIMITIVE_RESTART_FIXED_INDEX,
+        pattern COPY_READ_BUFFER, pattern COPY_WRITE_BUFFER,
+        pattern COPY_READ_BUFFER_BINDING,
+        pattern COPY_WRITE_BUFFER_BINDING, pattern UNIFORM_BUFFER,
+        pattern UNIFORM_BUFFER_BINDING, pattern UNIFORM_BUFFER_START,
+        pattern UNIFORM_BUFFER_SIZE, pattern MAX_VERTEX_UNIFORM_BLOCKS,
+        pattern MAX_FRAGMENT_UNIFORM_BLOCKS,
+        pattern MAX_COMBINED_UNIFORM_BLOCKS,
+        pattern MAX_UNIFORM_BUFFER_BINDINGS,
+        pattern MAX_UNIFORM_BLOCK_SIZE,
+        pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS,
+        pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS,
+        pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT,
+        pattern ACTIVE_UNIFORM_BLOCKS, pattern UNIFORM_TYPE,
+        pattern UNIFORM_SIZE, pattern UNIFORM_BLOCK_INDEX,
+        pattern UNIFORM_OFFSET, pattern UNIFORM_ARRAY_STRIDE,
+        pattern UNIFORM_MATRIX_STRIDE, pattern UNIFORM_IS_ROW_MAJOR,
+        pattern UNIFORM_BLOCK_BINDING, pattern UNIFORM_BLOCK_DATA_SIZE,
+        pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS,
+        pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES,
+        pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER,
+        pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER,
+        pattern INVALID_INDEX, pattern MAX_VERTEX_OUTPUT_COMPONENTS,
+        pattern MAX_FRAGMENT_INPUT_COMPONENTS,
+        pattern MAX_SERVER_WAIT_TIMEOUT, pattern OBJECT_TYPE,
+        pattern SYNC_CONDITION, pattern SYNC_STATUS, pattern SYNC_FLAGS,
+        pattern SYNC_FENCE, pattern SYNC_GPU_COMMANDS_COMPLETE,
+        pattern UNSIGNALED, pattern SIGNALED, pattern ALREADY_SIGNALED,
+        pattern TIMEOUT_EXPIRED, pattern CONDITION_SATISFIED,
+        pattern WAIT_FAILED, pattern SYNC_FLUSH_COMMANDS_BIT,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR, pattern ANY_SAMPLES_PASSED,
+        pattern ANY_SAMPLES_PASSED_CONSERVATIVE, pattern SAMPLER_BINDING,
+        pattern RGB10_A2UI, pattern TEXTURE_SWIZZLE_R,
+        pattern TEXTURE_SWIZZLE_G, pattern TEXTURE_SWIZZLE_B,
+        pattern TEXTURE_SWIZZLE_A, pattern GREEN, pattern BLUE,
+        pattern INT_2_10_10_10_REV, pattern TRANSFORM_FEEDBACK,
+        pattern TRANSFORM_FEEDBACK_PAUSED,
+        pattern TRANSFORM_FEEDBACK_ACTIVE,
+        pattern TRANSFORM_FEEDBACK_BINDING, pattern COMPRESSED_R11_EAC,
+        pattern COMPRESSED_SIGNED_R11_EAC, pattern COMPRESSED_RG11_EAC,
+        pattern COMPRESSED_SIGNED_RG11_EAC, pattern COMPRESSED_RGB8_ETC2,
+        pattern COMPRESSED_SRGB8_ETC2,
+        pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+        pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2,
+        pattern COMPRESSED_RGBA8_ETC2_EAC,
+        pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC,
+        pattern TEXTURE_IMMUTABLE_FORMAT, pattern MAX_ELEMENT_INDEX,
+        pattern NUM_SAMPLE_COUNTS, pattern TEXTURE_IMMUTABLE_LEVELS,
+        pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE, pattern TIMEOUT_IGNORED,
+        WebGL2RenderingContext(..), gTypeWebGL2RenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferDataPtr ::
+        WebGL2RenderingContext -> GLenum -> Double -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
+bufferDataPtr ::
+              (MonadIO m) =>
+                WebGL2RenderingContext -> GLenum -> GLsizeiptr -> GLenum -> m ()
+bufferDataPtr self target size usage
+  = liftIO (js_bufferDataPtr self target (fromIntegral size) usage)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferData ::
+        WebGL2RenderingContext ->
+          GLenum -> Optional BufferDataSource -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
+bufferData ::
+           (MonadIO m, IsBufferDataSource srcData) =>
+             WebGL2RenderingContext -> GLenum -> Maybe srcData -> GLenum -> m ()
+bufferData self target srcData usage
+  = liftIO
+      (js_bufferData self target
+         (maybeToOptional (fmap toBufferDataSource srcData))
+         usage)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })" js_bufferSubData ::
+        WebGL2RenderingContext ->
+          GLenum -> Double -> Optional BufferDataSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
+bufferSubData ::
+              (MonadIO m, IsBufferDataSource srcData) =>
+                WebGL2RenderingContext ->
+                  GLenum -> GLintptr -> Maybe srcData -> m ()
+bufferSubData self target dstByteOffset srcData
+  = liftIO
+      (js_bufferSubData self target (fromIntegral dstByteOffset)
+         (maybeToOptional (fmap toBufferDataSource srcData)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferData\"]($2, $3, $4, $5,\n$6); })" js_bufferDataView ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            ArrayBufferView -> GLenum -> GLuint -> Optional GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferData Mozilla WebGL2RenderingContext.bufferData documentation> 
+bufferDataView ::
+               (MonadIO m, IsArrayBufferView data') =>
+                 WebGL2RenderingContext ->
+                   GLenum -> data' -> GLenum -> GLuint -> Maybe GLuint -> m ()
+bufferDataView self target data' usage srcOffset length
+  = liftIO
+      (js_bufferDataView self target (toArrayBufferView data') usage
+         srcOffset
+         (maybeToOptional length))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bufferSubData\"]($2, $3, $4,\n$5, $6); })" js_bufferSubDataView
+        ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            Double -> ArrayBufferView -> GLuint -> Optional GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bufferSubData Mozilla WebGL2RenderingContext.bufferSubData documentation> 
+bufferSubDataView ::
+                  (MonadIO m, IsArrayBufferView srcData) =>
+                    WebGL2RenderingContext ->
+                      GLenum -> GLintptr -> srcData -> GLuint -> Maybe GLuint -> m ()
+bufferSubDataView self target dstByteOffset srcData srcOffset
+  length
+  = liftIO
+      (js_bufferSubDataView self target (fromIntegral dstByteOffset)
+         (toArrayBufferView srcData)
+         srcOffset
+         (maybeToOptional length))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"copyBufferSubData\"]($2, $3,\n$4, $5, $6); })"
+        js_copyBufferSubData ::
+        WebGL2RenderingContext ->
+          GLenum -> GLenum -> Double -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyBufferSubData Mozilla WebGL2RenderingContext.copyBufferSubData documentation> 
+copyBufferSubData ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      GLenum -> GLenum -> GLintptr -> GLintptr -> GLsizeiptr -> m ()
+copyBufferSubData self readTarget writeTarget readOffset
+  writeOffset size
+  = liftIO
+      (js_copyBufferSubData self readTarget writeTarget
+         (fromIntegral readOffset)
+         (fromIntegral writeOffset)
+         (fromIntegral size))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"getBufferSubData\"]($2, $3,\n$4, $5, $6); })" js_getBufferSubData
+        ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            Double ->
+              ArrayBufferView -> Optional GLuint -> Optional GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getBufferSubData Mozilla WebGL2RenderingContext.getBufferSubData documentation> 
+getBufferSubData ::
+                 (MonadIO m, IsArrayBufferView dstData) =>
+                   WebGL2RenderingContext ->
+                     GLenum ->
+                       GLintptr -> dstData -> Maybe GLuint -> Maybe GLuint -> m ()
+getBufferSubData self target srcByteOffset dstData dstOffset length
+  = liftIO
+      (js_getBufferSubData self target (fromIntegral srcByteOffset)
+         (toArrayBufferView dstData)
+         (maybeToOptional dstOffset)
+         (maybeToOptional length))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"blitFramebuffer\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10,\n$11); })"
+        js_blitFramebuffer ::
+        WebGL2RenderingContext ->
+          GLint ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.blitFramebuffer Mozilla WebGL2RenderingContext.blitFramebuffer documentation> 
+blitFramebuffer ::
+                (MonadIO m) =>
+                  WebGL2RenderingContext ->
+                    GLint ->
+                      GLint ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLint -> GLint -> GLbitfield -> GLenum -> m ()
+blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1
+  dstY1 mask filter
+  = liftIO
+      (js_blitFramebuffer self srcX0 srcY0 srcX1 srcY1 dstX0 dstY0 dstX1
+         dstY1
+         mask
+         filter)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTextureLayer\"]($2,\n$3, $4, $5, $6); })"
+        js_framebufferTextureLayer ::
+        WebGL2RenderingContext ->
+          GLenum -> GLenum -> GLuint -> GLint -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.framebufferTextureLayer Mozilla WebGL2RenderingContext.framebufferTextureLayer documentation> 
+framebufferTextureLayer ::
+                        (MonadIO m) =>
+                          WebGL2RenderingContext ->
+                            GLenum -> GLenum -> GLuint -> GLint -> GLint -> m ()
+framebufferTextureLayer self target attachment texture level layer
+  = liftIO
+      (js_framebufferTextureLayer self target attachment texture level
+         layer)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getInternalformatParameter\"]($2,\n$3, $4); })"
+        js_getInternalformatParameter ::
+        WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
+getInternalformatParameter ::
+                           (MonadIO m) =>
+                             WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m JSVal
+getInternalformatParameter self target internalformat pname
+  = liftIO
+      (js_getInternalformatParameter self target internalformat pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getInternalformatParameter Mozilla WebGL2RenderingContext.getInternalformatParameter documentation> 
+getInternalformatParameter_ ::
+                            (MonadIO m) =>
+                              WebGL2RenderingContext -> GLenum -> GLenum -> GLenum -> m ()
+getInternalformatParameter_ self target internalformat pname
+  = liftIO
+      (void
+         (js_getInternalformatParameter self target internalformat pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"invalidateFramebuffer\"]($2,\n$3); })" js_invalidateFramebuffer
+        :: WebGL2RenderingContext -> GLenum -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateFramebuffer Mozilla WebGL2RenderingContext.invalidateFramebuffer documentation> 
+invalidateFramebuffer ::
+                      (MonadIO m) => WebGL2RenderingContext -> GLenum -> [GLenum] -> m ()
+invalidateFramebuffer self target attachments
+  = liftIO
+      (toJSVal attachments >>=
+         \ attachments' ->
+           js_invalidateFramebuffer self target attachments')
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"invalidateSubFramebuffer\"]($2,\n$3, $4, $5, $6, $7); })"
+        js_invalidateSubFramebuffer ::
+        WebGL2RenderingContext ->
+          GLenum -> JSVal -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.invalidateSubFramebuffer Mozilla WebGL2RenderingContext.invalidateSubFramebuffer documentation> 
+invalidateSubFramebuffer ::
+                         (MonadIO m) =>
+                           WebGL2RenderingContext ->
+                             GLenum -> [GLenum] -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+invalidateSubFramebuffer self target attachments x y width height
+  = liftIO
+      (toJSVal attachments >>=
+         \ attachments' ->
+           js_invalidateSubFramebuffer self target attachments'
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"readBuffer\"]($2); })"
+        js_readBuffer :: WebGL2RenderingContext -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.readBuffer Mozilla WebGL2RenderingContext.readBuffer documentation> 
+readBuffer ::
+           (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
+readBuffer self src = liftIO (js_readBuffer self src)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"renderbufferStorageMultisample\"]($2,\n$3, $4, $5, $6); })"
+        js_renderbufferStorageMultisample ::
+        WebGL2RenderingContext ->
+          GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.renderbufferStorageMultisample Mozilla WebGL2RenderingContext.renderbufferStorageMultisample documentation> 
+renderbufferStorageMultisample ::
+                               (MonadIO m) =>
+                                 WebGL2RenderingContext ->
+                                   GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+renderbufferStorageMultisample self target samples internalformat
+  width height
+  = liftIO
+      (js_renderbufferStorageMultisample self target samples
+         internalformat
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"texStorage2D\"]($2, $3, $4,\n$5, $6); })" js_texStorage2D ::
+        WebGL2RenderingContext ->
+          GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage2D Mozilla WebGL2RenderingContext.texStorage2D documentation> 
+texStorage2D ::
+             (MonadIO m) =>
+               WebGL2RenderingContext ->
+                 GLenum -> GLsizei -> GLenum -> GLsizei -> GLsizei -> m ()
+texStorage2D self target levels internalformat width height
+  = liftIO
+      (js_texStorage2D self target levels internalformat width height)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texStorage3D\"]($2, $3, $4,\n$5, $6, $7); })" js_texStorage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texStorage3D Mozilla WebGL2RenderingContext.texStorage3D documentation> 
+texStorage3D ::
+             (MonadIO m) =>
+               WebGL2RenderingContext ->
+                 GLenum ->
+                   GLsizei -> GLenum -> GLsizei -> GLsizei -> GLsizei -> m ()
+texStorage3D self target levels internalformat width height depth
+  = liftIO
+      (js_texStorage3D self target levels internalformat width height
+         depth)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11) => { return $1[\"texImage3D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10, $11); })"
+        js_texImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei ->
+                      GLint -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texImage3D Mozilla WebGL2RenderingContext.texImage3D documentation> 
+texImage3D ::
+           (MonadIO m, IsArrayBufferView pixels) =>
+             WebGL2RenderingContext ->
+               GLenum ->
+                 GLint ->
+                   GLint ->
+                     GLsizei ->
+                       GLsizei ->
+                         GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
+texImage3D self target level internalformat width height depth
+  border format type' pixels
+  = liftIO
+      (js_texImage3D self target level internalformat width height depth
+         border
+         format
+         type'
+         (maybeToOptional (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10, $11,\n$12); })"
+        js_texSubImage3DView ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint ->
+                    GLsizei ->
+                      GLsizei ->
+                        GLsizei -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3DView ::
+                  (MonadIO m, IsArrayBufferView pixels) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint ->
+                              GLint ->
+                                GLsizei ->
+                                  GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
+texSubImage3DView self target level xoffset yoffset zoffset width
+  height depth format type' pixels
+  = liftIO
+      (js_texSubImage3DView self target level xoffset yoffset zoffset
+         width
+         height
+         depth
+         format
+         type'
+         (maybeToOptional (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"texSubImage3D\"]($2, $3, $4,\n$5, $6, $7, $8, $9); })"
+        js_texSubImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLint -> GLenum -> GLenum -> TexImageSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.texSubImage3D Mozilla WebGL2RenderingContext.texSubImage3D documentation> 
+texSubImage3D ::
+              (MonadIO m, IsTexImageSource source) =>
+                WebGL2RenderingContext ->
+                  GLenum ->
+                    GLint ->
+                      GLint -> GLint -> GLint -> GLenum -> GLenum -> source -> m ()
+texSubImage3D self target level xoffset yoffset zoffset format
+  type' source
+  = liftIO
+      (js_texSubImage3D self target level xoffset yoffset zoffset format
+         type'
+         (toTexImageSource source))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"copyTexSubImage3D\"]($2, $3,\n$4, $5, $6, $7, $8, $9, $10); })"
+        js_copyTexSubImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.copyTexSubImage3D Mozilla WebGL2RenderingContext.copyTexSubImage3D documentation> 
+copyTexSubImage3D ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+copyTexSubImage3D self target level xoffset yoffset zoffset x y
+  width height
+  = liftIO
+      (js_copyTexSubImage3D self target level xoffset yoffset zoffset x y
+         width
+         height)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"compressedTexImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10); })"
+        js_compressedTexImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLsizei -> GLint -> GLsizei -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexImage3D Mozilla WebGL2RenderingContext.compressedTexImage3D documentation> 
+compressedTexImage3D ::
+                     (MonadIO m, IsArrayBufferView data') =>
+                       WebGL2RenderingContext ->
+                         GLenum ->
+                           GLint ->
+                             GLenum ->
+                               GLsizei ->
+                                 GLsizei -> GLsizei -> GLint -> GLsizei -> Maybe data' -> m ()
+compressedTexImage3D self target level internalformat width height
+  depth border imageSize data'
+  = liftIO
+      (js_compressedTexImage3D self target level internalformat width
+         height
+         depth
+         border
+         imageSize
+         (maybeToOptional (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"compressedTexSubImage3D\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
+        js_compressedTexSubImage3D ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLint ->
+                    GLsizei ->
+                      GLsizei ->
+                        GLsizei -> GLenum -> GLsizei -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.compressedTexSubImage3D Mozilla WebGL2RenderingContext.compressedTexSubImage3D documentation> 
+compressedTexSubImage3D ::
+                        (MonadIO m, IsArrayBufferView data') =>
+                          WebGL2RenderingContext ->
+                            GLenum ->
+                              GLint ->
+                                GLint ->
+                                  GLint ->
+                                    GLint ->
+                                      GLsizei ->
+                                        GLsizei ->
+                                          GLsizei -> GLenum -> GLsizei -> Maybe data' -> m ()
+compressedTexSubImage3D self target level xoffset yoffset zoffset
+  width height depth format imageSize data'
+  = liftIO
+      (js_compressedTexSubImage3D self target level xoffset yoffset
+         zoffset
+         width
+         height
+         depth
+         format
+         imageSize
+         (maybeToOptional (fmap toArrayBufferView data')))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getFragDataLocation\"]($2,\n$3); })" js_getFragDataLocation ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> JSString -> IO GLint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
+getFragDataLocation ::
+                    (MonadIO m, ToJSString name) =>
+                      WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m GLint
+getFragDataLocation self program name
+  = liftIO
+      (js_getFragDataLocation self (maybeToOptional program)
+         (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getFragDataLocation Mozilla WebGL2RenderingContext.getFragDataLocation documentation> 
+getFragDataLocation_ ::
+                     (MonadIO m, ToJSString name) =>
+                       WebGL2RenderingContext -> Maybe WebGLProgram -> name -> m ()
+getFragDataLocation_ self program name
+  = liftIO
+      (void
+         (js_getFragDataLocation self (maybeToOptional program)
+            (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1ui\"]($2, $3); })"
+        js_uniform1ui ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1ui Mozilla WebGL2RenderingContext.uniform1ui documentation> 
+uniform1ui ::
+           (MonadIO m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> m ()
+uniform1ui self location v0
+  = liftIO (js_uniform1ui self (maybeToOptional location) v0)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2ui\"]($2, $3, $4); })"
+        js_uniform2ui ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2ui Mozilla WebGL2RenderingContext.uniform2ui documentation> 
+uniform2ui ::
+           (MonadIO m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> GLuint -> m ()
+uniform2ui self location v0 v1
+  = liftIO (js_uniform2ui self (maybeToOptional location) v0 v1)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3ui\"]($2, $3, $4, $5); })" js_uniform3ui ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLuint -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3ui Mozilla WebGL2RenderingContext.uniform3ui documentation> 
+uniform3ui ::
+           (MonadIO m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation -> GLuint -> GLuint -> GLuint -> m ()
+uniform3ui self location v0 v1 v2
+  = liftIO (js_uniform3ui self (maybeToOptional location) v0 v1 v2)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4ui\"]($2, $3, $4, $5,\n$6); })" js_uniform4ui ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4ui Mozilla WebGL2RenderingContext.uniform4ui documentation> 
+uniform4ui ::
+           (MonadIO m) =>
+             WebGL2RenderingContext ->
+               Maybe WebGLUniformLocation ->
+                 GLuint -> GLuint -> GLuint -> GLuint -> m ()
+uniform4ui self location v0 v1 v2 v3
+  = liftIO
+      (js_uniform4ui self (maybeToOptional location) v0 v1 v2 v3)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1uiv\"]($2, $3); })"
+        js_uniform1uiv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform1uiv Mozilla WebGL2RenderingContext.uniform1uiv documentation> 
+uniform1uiv ::
+            (MonadIO m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform1uiv self location value
+  = liftIO
+      (js_uniform1uiv self (maybeToOptional location)
+         (maybeToOptional (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2uiv\"]($2, $3); })"
+        js_uniform2uiv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform2uiv Mozilla WebGL2RenderingContext.uniform2uiv documentation> 
+uniform2uiv ::
+            (MonadIO m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform2uiv self location value
+  = liftIO
+      (js_uniform2uiv self (maybeToOptional location)
+         (maybeToOptional (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3uiv\"]($2, $3); })"
+        js_uniform3uiv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform3uiv Mozilla WebGL2RenderingContext.uniform3uiv documentation> 
+uniform3uiv ::
+            (MonadIO m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform3uiv self location value
+  = liftIO
+      (js_uniform3uiv self (maybeToOptional location)
+         (maybeToOptional (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4uiv\"]($2, $3); })"
+        js_uniform4uiv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniform4uiv Mozilla WebGL2RenderingContext.uniform4uiv documentation> 
+uniform4uiv ::
+            (MonadIO m, IsUint32Array value) =>
+              WebGL2RenderingContext ->
+                Maybe WebGLUniformLocation -> Maybe value -> m ()
+uniform4uiv self location value
+  = liftIO
+      (js_uniform4uiv self (maybeToOptional location)
+         (maybeToOptional (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x3fv\"]($2, $3,\n$4); })" js_uniformMatrix2x3fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x3fv Mozilla WebGL2RenderingContext.uniformMatrix2x3fv documentation> 
+uniformMatrix2x3fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix2x3fv self location transpose value
+  = liftIO
+      (js_uniformMatrix2x3fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x2fv\"]($2, $3,\n$4); })" js_uniformMatrix3x2fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x2fv Mozilla WebGL2RenderingContext.uniformMatrix3x2fv documentation> 
+uniformMatrix3x2fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix3x2fv self location transpose value
+  = liftIO
+      (js_uniformMatrix3x2fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2x4fv\"]($2, $3,\n$4); })" js_uniformMatrix2x4fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix2x4fv Mozilla WebGL2RenderingContext.uniformMatrix2x4fv documentation> 
+uniformMatrix2x4fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix2x4fv self location transpose value
+  = liftIO
+      (js_uniformMatrix2x4fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x2fv\"]($2, $3,\n$4); })" js_uniformMatrix4x2fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x2fv Mozilla WebGL2RenderingContext.uniformMatrix4x2fv documentation> 
+uniformMatrix4x2fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix4x2fv self location transpose value
+  = liftIO
+      (js_uniformMatrix4x2fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3x4fv\"]($2, $3,\n$4); })" js_uniformMatrix3x4fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix3x4fv Mozilla WebGL2RenderingContext.uniformMatrix3x4fv documentation> 
+uniformMatrix3x4fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix3x4fv self location transpose value
+  = liftIO
+      (js_uniformMatrix3x4fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4x3fv\"]($2, $3,\n$4); })" js_uniformMatrix4x3fv ::
+        WebGL2RenderingContext ->
+          Optional WebGLUniformLocation ->
+            GLboolean -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformMatrix4x3fv Mozilla WebGL2RenderingContext.uniformMatrix4x3fv documentation> 
+uniformMatrix4x3fv ::
+                   (MonadIO m, IsFloat32Array value) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLUniformLocation -> GLboolean -> Maybe value -> m ()
+uniformMatrix4x3fv self location transpose value
+  = liftIO
+      (js_uniformMatrix4x3fv self (maybeToOptional location) transpose
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4i\"]($2, $3,\n$4, $5, $6); })" js_vertexAttribI4i
+        ::
+        WebGL2RenderingContext ->
+          GLuint -> GLint -> GLint -> GLint -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4i Mozilla WebGL2RenderingContext.vertexAttribI4i documentation> 
+vertexAttribI4i ::
+                (MonadIO m) =>
+                  WebGL2RenderingContext ->
+                    GLuint -> GLint -> GLint -> GLint -> GLint -> m ()
+vertexAttribI4i self index x y z w
+  = liftIO (js_vertexAttribI4i self index x y z w)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttribI4iv\"]($2, $3); })"
+        js_vertexAttribI4iv ::
+        WebGL2RenderingContext -> GLuint -> Optional Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4iv Mozilla WebGL2RenderingContext.vertexAttribI4iv documentation> 
+vertexAttribI4iv ::
+                 (MonadIO m, IsInt32Array v) =>
+                   WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
+vertexAttribI4iv self index v
+  = liftIO
+      (js_vertexAttribI4iv self index
+         (maybeToOptional (fmap toInt32Array v)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribI4ui\"]($2, $3,\n$4, $5, $6); })" js_vertexAttribI4ui
+        ::
+        WebGL2RenderingContext ->
+          GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4ui Mozilla WebGL2RenderingContext.vertexAttribI4ui documentation> 
+vertexAttribI4ui ::
+                 (MonadIO m) =>
+                   WebGL2RenderingContext ->
+                     GLuint -> GLuint -> GLuint -> GLuint -> GLuint -> m ()
+vertexAttribI4ui self index x y z w
+  = liftIO (js_vertexAttribI4ui self index x y z w)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"vertexAttribI4uiv\"]($2, $3); })" js_vertexAttribI4uiv ::
+        WebGL2RenderingContext -> GLuint -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribI4uiv Mozilla WebGL2RenderingContext.vertexAttribI4uiv documentation> 
+vertexAttribI4uiv ::
+                  (MonadIO m, IsUint32Array v) =>
+                    WebGL2RenderingContext -> GLuint -> Maybe v -> m ()
+vertexAttribI4uiv self index v
+  = liftIO
+      (js_vertexAttribI4uiv self index
+         (maybeToOptional (fmap toUint32Array v)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttribIPointer\"]($2,\n$3, $4, $5, $6); })"
+        js_vertexAttribIPointer ::
+        WebGL2RenderingContext ->
+          GLuint -> GLint -> GLenum -> GLsizei -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribIPointer Mozilla WebGL2RenderingContext.vertexAttribIPointer documentation> 
+vertexAttribIPointer ::
+                     (MonadIO m) =>
+                       WebGL2RenderingContext ->
+                         GLuint -> GLint -> GLenum -> GLsizei -> GLintptr -> m ()
+vertexAttribIPointer self index size type' stride offset
+  = liftIO
+      (js_vertexAttribIPointer self index size type' stride
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"vertexAttribDivisor\"]($2,\n$3); })" js_vertexAttribDivisor ::
+        WebGL2RenderingContext -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.vertexAttribDivisor Mozilla WebGL2RenderingContext.vertexAttribDivisor documentation> 
+vertexAttribDivisor ::
+                    (MonadIO m) => WebGL2RenderingContext -> GLuint -> GLuint -> m ()
+vertexAttribDivisor self index divisor
+  = liftIO (js_vertexAttribDivisor self index divisor)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"drawArraysInstanced\"]($2,\n$3, $4, $5); })"
+        js_drawArraysInstanced ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawArraysInstanced Mozilla WebGL2RenderingContext.drawArraysInstanced documentation> 
+drawArraysInstanced ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext ->
+                        GLenum -> GLint -> GLsizei -> GLsizei -> m ()
+drawArraysInstanced self mode first count instanceCount
+  = liftIO
+      (js_drawArraysInstanced self mode first count instanceCount)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"drawElementsInstanced\"]($2,\n$3, $4, $5, $6); })"
+        js_drawElementsInstanced ::
+        WebGL2RenderingContext ->
+          GLenum -> GLsizei -> GLenum -> Double -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawElementsInstanced Mozilla WebGL2RenderingContext.drawElementsInstanced documentation> 
+drawElementsInstanced ::
+                      (MonadIO m) =>
+                        WebGL2RenderingContext ->
+                          GLenum -> GLsizei -> GLenum -> GLintptr -> GLsizei -> m ()
+drawElementsInstanced self mode count type' offset instanceCount
+  = liftIO
+      (js_drawElementsInstanced self mode count type'
+         (fromIntegral offset)
+         instanceCount)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"drawRangeElements\"]($2, $3,\n$4, $5, $6, $7); })"
+        js_drawRangeElements ::
+        WebGL2RenderingContext ->
+          GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawRangeElements Mozilla WebGL2RenderingContext.drawRangeElements documentation> 
+drawRangeElements ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      GLenum -> GLuint -> GLuint -> GLsizei -> GLenum -> GLintptr -> m ()
+drawRangeElements self mode start end count type' offset
+  = liftIO
+      (js_drawRangeElements self mode start end count type'
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"drawBuffers\"]($2); })"
+        js_drawBuffers :: WebGL2RenderingContext -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.drawBuffers Mozilla WebGL2RenderingContext.drawBuffers documentation> 
+drawBuffers ::
+            (MonadIO m) => WebGL2RenderingContext -> [GLenum] -> m ()
+drawBuffers self buffers
+  = liftIO
+      (toJSVal buffers >>= \ buffers' -> js_drawBuffers self buffers')
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"clearBufferiv\"]($2, $3, $4); })" js_clearBufferiv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Optional Int32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferiv Mozilla WebGL2RenderingContext.clearBufferiv documentation> 
+clearBufferiv ::
+              (MonadIO m, IsInt32Array value) =>
+                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferiv self buffer drawbuffer value
+  = liftIO
+      (js_clearBufferiv self buffer drawbuffer
+         (maybeToOptional (fmap toInt32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"clearBufferuiv\"]($2, $3, $4); })" js_clearBufferuiv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Optional Uint32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferuiv Mozilla WebGL2RenderingContext.clearBufferuiv documentation> 
+clearBufferuiv ::
+               (MonadIO m, IsUint32Array value) =>
+                 WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferuiv self buffer drawbuffer value
+  = liftIO
+      (js_clearBufferuiv self buffer drawbuffer
+         (maybeToOptional (fmap toUint32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"clearBufferfv\"]($2, $3, $4); })" js_clearBufferfv ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> Optional Float32Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfv Mozilla WebGL2RenderingContext.clearBufferfv documentation> 
+clearBufferfv ::
+              (MonadIO m, IsFloat32Array value) =>
+                WebGL2RenderingContext -> GLenum -> GLint -> Maybe value -> m ()
+clearBufferfv self buffer drawbuffer value
+  = liftIO
+      (js_clearBufferfv self buffer drawbuffer
+         (maybeToOptional (fmap toFloat32Array value)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"clearBufferfi\"]($2, $3, $4,\n$5); })" js_clearBufferfi ::
+        WebGL2RenderingContext ->
+          GLenum -> GLint -> GLfloat -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clearBufferfi Mozilla WebGL2RenderingContext.clearBufferfi documentation> 
+clearBufferfi ::
+              (MonadIO m) =>
+                WebGL2RenderingContext ->
+                  GLenum -> GLint -> GLfloat -> GLint -> m ()
+clearBufferfi self buffer drawbuffer depth stencil
+  = liftIO (js_clearBufferfi self buffer drawbuffer depth stencil)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createQuery\"](); })"
+        js_createQuery :: WebGL2RenderingContext -> IO WebGLQuery
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
+createQuery ::
+            (MonadIO m) => WebGL2RenderingContext -> m WebGLQuery
+createQuery self = liftIO (js_createQuery self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createQuery Mozilla WebGL2RenderingContext.createQuery documentation> 
+createQuery_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
+createQuery_ self = liftIO (void (js_createQuery self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteQuery\"]($2); })"
+        js_deleteQuery ::
+        WebGL2RenderingContext -> Optional WebGLQuery -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteQuery Mozilla WebGL2RenderingContext.deleteQuery documentation> 
+deleteQuery ::
+            (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
+deleteQuery self query
+  = liftIO (js_deleteQuery self (maybeToOptional query))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isQuery\"]($2); })" js_isQuery
+        :: WebGL2RenderingContext -> Optional WebGLQuery -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
+isQuery ::
+        (MonadIO m) =>
+          WebGL2RenderingContext -> Maybe WebGLQuery -> m GLboolean
+isQuery self query
+  = liftIO (js_isQuery self (maybeToOptional query))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isQuery Mozilla WebGL2RenderingContext.isQuery documentation> 
+isQuery_ ::
+         (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLQuery -> m ()
+isQuery_ self query
+  = liftIO (void (js_isQuery self (maybeToOptional query)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"beginQuery\"]($2, $3); })"
+        js_beginQuery ::
+        WebGL2RenderingContext -> GLenum -> Optional WebGLQuery -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginQuery Mozilla WebGL2RenderingContext.beginQuery documentation> 
+beginQuery ::
+           (MonadIO m) =>
+             WebGL2RenderingContext -> GLenum -> Maybe WebGLQuery -> m ()
+beginQuery self target query
+  = liftIO (js_beginQuery self target (maybeToOptional query))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"endQuery\"]($2); })" js_endQuery
+        :: WebGL2RenderingContext -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endQuery Mozilla WebGL2RenderingContext.endQuery documentation> 
+endQuery :: (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
+endQuery self target = liftIO (js_endQuery self target)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getQuery\"]($2, $3); })"
+        js_getQuery ::
+        WebGL2RenderingContext -> GLenum -> GLenum -> IO WebGLQuery
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
+getQuery ::
+         (MonadIO m) =>
+           WebGL2RenderingContext -> GLenum -> GLenum -> m WebGLQuery
+getQuery self target pname = liftIO (js_getQuery self target pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQuery Mozilla WebGL2RenderingContext.getQuery documentation> 
+getQuery_ ::
+          (MonadIO m) => WebGL2RenderingContext -> GLenum -> GLenum -> m ()
+getQuery_ self target pname
+  = liftIO (void (js_getQuery self target pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getQueryParameter\"]($2, $3); })" js_getQueryParameter ::
+        WebGL2RenderingContext -> Optional WebGLQuery -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
+getQueryParameter ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m JSVal
+getQueryParameter self query pname
+  = liftIO (js_getQueryParameter self (maybeToOptional query) pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getQueryParameter Mozilla WebGL2RenderingContext.getQueryParameter documentation> 
+getQueryParameter_ ::
+                   (MonadIO m) =>
+                     WebGL2RenderingContext -> Maybe WebGLQuery -> GLenum -> m ()
+getQueryParameter_ self query pname
+  = liftIO
+      (void (js_getQueryParameter self (maybeToOptional query) pname))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createSampler\"](); })"
+        js_createSampler :: WebGL2RenderingContext -> IO WebGLSampler
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
+createSampler ::
+              (MonadIO m) => WebGL2RenderingContext -> m WebGLSampler
+createSampler self = liftIO (js_createSampler self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createSampler Mozilla WebGL2RenderingContext.createSampler documentation> 
+createSampler_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
+createSampler_ self = liftIO (void (js_createSampler self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteSampler\"]($2); })"
+        js_deleteSampler ::
+        WebGL2RenderingContext -> Optional WebGLSampler -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSampler Mozilla WebGL2RenderingContext.deleteSampler documentation> 
+deleteSampler ::
+              (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
+deleteSampler self sampler
+  = liftIO (js_deleteSampler self (maybeToOptional sampler))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isSampler\"]($2); })"
+        js_isSampler ::
+        WebGL2RenderingContext -> Optional WebGLSampler -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
+isSampler ::
+          (MonadIO m) =>
+            WebGL2RenderingContext -> Maybe WebGLSampler -> m GLboolean
+isSampler self sampler
+  = liftIO (js_isSampler self (maybeToOptional sampler))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSampler Mozilla WebGL2RenderingContext.isSampler documentation> 
+isSampler_ ::
+           (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSampler -> m ()
+isSampler_ self sampler
+  = liftIO (void (js_isSampler self (maybeToOptional sampler)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindSampler\"]($2, $3); })"
+        js_bindSampler ::
+        WebGL2RenderingContext -> GLuint -> Optional WebGLSampler -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindSampler Mozilla WebGL2RenderingContext.bindSampler documentation> 
+bindSampler ::
+            (MonadIO m) =>
+              WebGL2RenderingContext -> GLuint -> Maybe WebGLSampler -> m ()
+bindSampler self unit sampler
+  = liftIO (js_bindSampler self unit (maybeToOptional sampler))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"samplerParameteri\"]($2, $3,\n$4); })" js_samplerParameteri ::
+        WebGL2RenderingContext ->
+          Optional WebGLSampler -> GLenum -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameteri Mozilla WebGL2RenderingContext.samplerParameteri documentation> 
+samplerParameteri ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLSampler -> GLenum -> GLint -> m ()
+samplerParameteri self sampler pname param
+  = liftIO
+      (js_samplerParameteri self (maybeToOptional sampler) pname param)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"samplerParameterf\"]($2, $3,\n$4); })" js_samplerParameterf ::
+        WebGL2RenderingContext ->
+          Optional WebGLSampler -> GLenum -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.samplerParameterf Mozilla WebGL2RenderingContext.samplerParameterf documentation> 
+samplerParameterf ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLSampler -> GLenum -> GLfloat -> m ()
+samplerParameterf self sampler pname param
+  = liftIO
+      (js_samplerParameterf self (maybeToOptional sampler) pname param)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getSamplerParameter\"]($2,\n$3); })" js_getSamplerParameter ::
+        WebGL2RenderingContext ->
+          Optional WebGLSampler -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
+getSamplerParameter ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m JSVal
+getSamplerParameter self sampler pname
+  = liftIO
+      (js_getSamplerParameter self (maybeToOptional sampler) pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSamplerParameter Mozilla WebGL2RenderingContext.getSamplerParameter documentation> 
+getSamplerParameter_ ::
+                     (MonadIO m) =>
+                       WebGL2RenderingContext -> Maybe WebGLSampler -> GLenum -> m ()
+getSamplerParameter_ self sampler pname
+  = liftIO
+      (void
+         (js_getSamplerParameter self (maybeToOptional sampler) pname))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"fenceSync\"]($2, $3); })"
+        js_fenceSync ::
+        WebGL2RenderingContext -> GLenum -> GLbitfield -> IO WebGLSync
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
+fenceSync ::
+          (MonadIO m) =>
+            WebGL2RenderingContext -> GLenum -> GLbitfield -> m WebGLSync
+fenceSync self condition flags
+  = liftIO (js_fenceSync self condition flags)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.fenceSync Mozilla WebGL2RenderingContext.fenceSync documentation> 
+fenceSync_ ::
+           (MonadIO m) =>
+             WebGL2RenderingContext -> GLenum -> GLbitfield -> m ()
+fenceSync_ self condition flags
+  = liftIO (void (js_fenceSync self condition flags))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isSync\"]($2); })" js_isSync ::
+        WebGL2RenderingContext -> Optional WebGLSync -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
+isSync ::
+       (MonadIO m) =>
+         WebGL2RenderingContext -> Maybe WebGLSync -> m GLboolean
+isSync self sync = liftIO (js_isSync self (maybeToOptional sync))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isSync Mozilla WebGL2RenderingContext.isSync documentation> 
+isSync_ ::
+        (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
+isSync_ self sync
+  = liftIO (void (js_isSync self (maybeToOptional sync)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteSync\"]($2); })"
+        js_deleteSync ::
+        WebGL2RenderingContext -> Optional WebGLSync -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteSync Mozilla WebGL2RenderingContext.deleteSync documentation> 
+deleteSync ::
+           (MonadIO m) => WebGL2RenderingContext -> Maybe WebGLSync -> m ()
+deleteSync self sync
+  = liftIO (js_deleteSync self (maybeToOptional sync))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"clientWaitSync\"]($2, $3, $4); })" js_clientWaitSync ::
+        WebGL2RenderingContext ->
+          Optional WebGLSync -> GLbitfield -> Double -> IO GLenum
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
+clientWaitSync ::
+               (MonadIO m) =>
+                 WebGL2RenderingContext ->
+                   Maybe WebGLSync -> GLbitfield -> GLuint64 -> m GLenum
+clientWaitSync self sync flags timeout
+  = liftIO
+      (js_clientWaitSync self (maybeToOptional sync) flags
+         (fromIntegral timeout))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.clientWaitSync Mozilla WebGL2RenderingContext.clientWaitSync documentation> 
+clientWaitSync_ ::
+                (MonadIO m) =>
+                  WebGL2RenderingContext ->
+                    Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
+clientWaitSync_ self sync flags timeout
+  = liftIO
+      (void
+         (js_clientWaitSync self (maybeToOptional sync) flags
+            (fromIntegral timeout)))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"waitSync\"]($2, $3, $4); })"
+        js_waitSync ::
+        WebGL2RenderingContext ->
+          Optional WebGLSync -> GLbitfield -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.waitSync Mozilla WebGL2RenderingContext.waitSync documentation> 
+waitSync ::
+         (MonadIO m) =>
+           WebGL2RenderingContext ->
+             Maybe WebGLSync -> GLbitfield -> GLuint64 -> m ()
+waitSync self sync flags timeout
+  = liftIO
+      (js_waitSync self (maybeToOptional sync) flags
+         (fromIntegral timeout))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getSyncParameter\"]($2, $3); })"
+        js_getSyncParameter ::
+        WebGL2RenderingContext -> Optional WebGLSync -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
+getSyncParameter ::
+                 (MonadIO m) =>
+                   WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m JSVal
+getSyncParameter self sync pname
+  = liftIO (js_getSyncParameter self (maybeToOptional sync) pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getSyncParameter Mozilla WebGL2RenderingContext.getSyncParameter documentation> 
+getSyncParameter_ ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext -> Maybe WebGLSync -> GLenum -> m ()
+getSyncParameter_ self sync pname
+  = liftIO
+      (void (js_getSyncParameter self (maybeToOptional sync) pname))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"createTransformFeedback\"](); })" js_createTransformFeedback ::
+        WebGL2RenderingContext -> IO WebGLTransformFeedback
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
+createTransformFeedback ::
+                        (MonadIO m) => WebGL2RenderingContext -> m WebGLTransformFeedback
+createTransformFeedback self
+  = liftIO (js_createTransformFeedback self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createTransformFeedback Mozilla WebGL2RenderingContext.createTransformFeedback documentation> 
+createTransformFeedback_ ::
+                         (MonadIO m) => WebGL2RenderingContext -> m ()
+createTransformFeedback_ self
+  = liftIO (void (js_createTransformFeedback self))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"deleteTransformFeedback\"]($2); })" js_deleteTransformFeedback ::
+        WebGL2RenderingContext -> Optional WebGLTransformFeedback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteTransformFeedback Mozilla WebGL2RenderingContext.deleteTransformFeedback documentation> 
+deleteTransformFeedback ::
+                        (MonadIO m) =>
+                          WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
+deleteTransformFeedback self id
+  = liftIO (js_deleteTransformFeedback self (maybeToOptional id))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isTransformFeedback\"]($2); })"
+        js_isTransformFeedback ::
+        WebGL2RenderingContext ->
+          Optional WebGLTransformFeedback -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
+isTransformFeedback ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext ->
+                        Maybe WebGLTransformFeedback -> m GLboolean
+isTransformFeedback self id
+  = liftIO (js_isTransformFeedback self (maybeToOptional id))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isTransformFeedback Mozilla WebGL2RenderingContext.isTransformFeedback documentation> 
+isTransformFeedback_ ::
+                     (MonadIO m) =>
+                       WebGL2RenderingContext -> Maybe WebGLTransformFeedback -> m ()
+isTransformFeedback_ self id
+  = liftIO (void (js_isTransformFeedback self (maybeToOptional id)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"bindTransformFeedback\"]($2,\n$3); })" js_bindTransformFeedback
+        ::
+        WebGL2RenderingContext ->
+          GLenum -> Optional WebGLTransformFeedback -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindTransformFeedback Mozilla WebGL2RenderingContext.bindTransformFeedback documentation> 
+bindTransformFeedback ::
+                      (MonadIO m) =>
+                        WebGL2RenderingContext ->
+                          GLenum -> Maybe WebGLTransformFeedback -> m ()
+bindTransformFeedback self target id
+  = liftIO
+      (js_bindTransformFeedback self target (maybeToOptional id))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"beginTransformFeedback\"]($2); })" js_beginTransformFeedback ::
+        WebGL2RenderingContext -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.beginTransformFeedback Mozilla WebGL2RenderingContext.beginTransformFeedback documentation> 
+beginTransformFeedback ::
+                       (MonadIO m) => WebGL2RenderingContext -> GLenum -> m ()
+beginTransformFeedback self primitiveMode
+  = liftIO (js_beginTransformFeedback self primitiveMode)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endTransformFeedback\"](); })"
+        js_endTransformFeedback :: WebGL2RenderingContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.endTransformFeedback Mozilla WebGL2RenderingContext.endTransformFeedback documentation> 
+endTransformFeedback ::
+                     (MonadIO m) => WebGL2RenderingContext -> m ()
+endTransformFeedback self = liftIO (js_endTransformFeedback self)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"transformFeedbackVaryings\"]($2,\n$3, $4); })"
+        js_transformFeedbackVaryings ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> JSVal -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.transformFeedbackVaryings Mozilla WebGL2RenderingContext.transformFeedbackVaryings documentation> 
+transformFeedbackVaryings ::
+                          (MonadIO m, ToJSString varyings) =>
+                            WebGL2RenderingContext ->
+                              Maybe WebGLProgram -> [varyings] -> GLenum -> m ()
+transformFeedbackVaryings self program varyings bufferMode
+  = liftIO
+      (toJSVal varyings >>=
+         \ varyings' ->
+           js_transformFeedbackVaryings self (maybeToOptional program)
+             varyings'
+         bufferMode)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getTransformFeedbackVarying\"]($2,\n$3); })"
+        js_getTransformFeedbackVarying ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
+getTransformFeedbackVarying ::
+                            (MonadIO m) =>
+                              WebGL2RenderingContext ->
+                                Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getTransformFeedbackVarying self program index
+  = liftIO
+      (js_getTransformFeedbackVarying self (maybeToOptional program)
+         index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getTransformFeedbackVarying Mozilla WebGL2RenderingContext.getTransformFeedbackVarying documentation> 
+getTransformFeedbackVarying_ ::
+                             (MonadIO m) =>
+                               WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
+getTransformFeedbackVarying_ self program index
+  = liftIO
+      (void
+         (js_getTransformFeedbackVarying self (maybeToOptional program)
+            index))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pauseTransformFeedback\"](); })"
+        js_pauseTransformFeedback :: WebGL2RenderingContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.pauseTransformFeedback Mozilla WebGL2RenderingContext.pauseTransformFeedback documentation> 
+pauseTransformFeedback ::
+                       (MonadIO m) => WebGL2RenderingContext -> m ()
+pauseTransformFeedback self
+  = liftIO (js_pauseTransformFeedback self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"resumeTransformFeedback\"](); })" js_resumeTransformFeedback ::
+        WebGL2RenderingContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.resumeTransformFeedback Mozilla WebGL2RenderingContext.resumeTransformFeedback documentation> 
+resumeTransformFeedback ::
+                        (MonadIO m) => WebGL2RenderingContext -> m ()
+resumeTransformFeedback self
+  = liftIO (js_resumeTransformFeedback self)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"bindBufferBase\"]($2, $3, $4); })" js_bindBufferBase ::
+        WebGL2RenderingContext ->
+          GLenum -> GLuint -> Optional WebGLBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferBase Mozilla WebGL2RenderingContext.bindBufferBase documentation> 
+bindBufferBase ::
+               (MonadIO m) =>
+                 WebGL2RenderingContext ->
+                   GLenum -> GLuint -> Maybe WebGLBuffer -> m ()
+bindBufferBase self target index buffer
+  = liftIO
+      (js_bindBufferBase self target index (maybeToOptional buffer))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"bindBufferRange\"]($2, $3,\n$4, $5, $6); })" js_bindBufferRange
+        ::
+        WebGL2RenderingContext ->
+          GLenum ->
+            GLuint -> Optional WebGLBuffer -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindBufferRange Mozilla WebGL2RenderingContext.bindBufferRange documentation> 
+bindBufferRange ::
+                (MonadIO m) =>
+                  WebGL2RenderingContext ->
+                    GLenum ->
+                      GLuint -> Maybe WebGLBuffer -> GLintptr -> GLsizeiptr -> m ()
+bindBufferRange self target index buffer offset size
+  = liftIO
+      (js_bindBufferRange self target index (maybeToOptional buffer)
+         (fromIntegral offset)
+         (fromIntegral size))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getIndexedParameter\"]($2,\n$3); })" js_getIndexedParameter ::
+        WebGL2RenderingContext -> GLenum -> GLuint -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
+getIndexedParameter ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext -> GLenum -> GLuint -> m JSVal
+getIndexedParameter self target index
+  = liftIO (js_getIndexedParameter self target index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getIndexedParameter Mozilla WebGL2RenderingContext.getIndexedParameter documentation> 
+getIndexedParameter_ ::
+                     (MonadIO m) => WebGL2RenderingContext -> GLenum -> GLuint -> m ()
+getIndexedParameter_ self target index
+  = liftIO (void (js_getIndexedParameter self target index))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getUniformIndices\"]($2, $3); })" js_getUniformIndices ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> JSVal -> IO Uint32Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
+getUniformIndices ::
+                  (MonadIO m, ToJSString uniformNames) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLProgram -> [uniformNames] -> m Uint32Array
+getUniformIndices self program uniformNames
+  = liftIO
+      (toJSVal uniformNames >>=
+         \ uniformNames' ->
+           js_getUniformIndices self (maybeToOptional program) uniformNames')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformIndices Mozilla WebGL2RenderingContext.getUniformIndices documentation> 
+getUniformIndices_ ::
+                   (MonadIO m, ToJSString uniformNames) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLProgram -> [uniformNames] -> m ()
+getUniformIndices_ self program uniformNames
+  = liftIO
+      (void
+         (toJSVal uniformNames >>=
+            \ uniformNames' ->
+              js_getUniformIndices self (maybeToOptional program) uniformNames'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getActiveUniforms\"]($2, $3,\n$4); })" js_getActiveUniforms ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram ->
+            Optional Uint32Array -> GLenum -> IO Int32Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
+getActiveUniforms ::
+                  (MonadIO m, IsUint32Array uniformIndices) =>
+                    WebGL2RenderingContext ->
+                      Maybe WebGLProgram ->
+                        Maybe uniformIndices -> GLenum -> m Int32Array
+getActiveUniforms self program uniformIndices pname
+  = liftIO
+      (js_getActiveUniforms self (maybeToOptional program)
+         (maybeToOptional (fmap toUint32Array uniformIndices))
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniforms Mozilla WebGL2RenderingContext.getActiveUniforms documentation> 
+getActiveUniforms_ ::
+                   (MonadIO m, IsUint32Array uniformIndices) =>
+                     WebGL2RenderingContext ->
+                       Maybe WebGLProgram -> Maybe uniformIndices -> GLenum -> m ()
+getActiveUniforms_ self program uniformIndices pname
+  = liftIO
+      (void
+         (js_getActiveUniforms self (maybeToOptional program)
+            (maybeToOptional (fmap toUint32Array uniformIndices))
+            pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getUniformBlockIndex\"]($2,\n$3); })" js_getUniformBlockIndex ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> JSString -> IO GLuint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
+getUniformBlockIndex ::
+                     (MonadIO m, ToJSString uniformBlockName) =>
+                       WebGL2RenderingContext ->
+                         Maybe WebGLProgram -> uniformBlockName -> m GLuint
+getUniformBlockIndex self program uniformBlockName
+  = liftIO
+      (js_getUniformBlockIndex self (maybeToOptional program)
+         (toJSString uniformBlockName))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getUniformBlockIndex Mozilla WebGL2RenderingContext.getUniformBlockIndex documentation> 
+getUniformBlockIndex_ ::
+                      (MonadIO m, ToJSString uniformBlockName) =>
+                        WebGL2RenderingContext ->
+                          Maybe WebGLProgram -> uniformBlockName -> m ()
+getUniformBlockIndex_ self program uniformBlockName
+  = liftIO
+      (void
+         (js_getUniformBlockIndex self (maybeToOptional program)
+            (toJSString uniformBlockName)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getActiveUniformBlockParameter\"]($2,\n$3, $4); })"
+        js_getActiveUniformBlockParameter ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> GLuint -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
+getActiveUniformBlockParameter ::
+                               (MonadIO m) =>
+                                 WebGL2RenderingContext ->
+                                   Maybe WebGLProgram -> GLuint -> GLenum -> m JSVal
+getActiveUniformBlockParameter self program uniformBlockIndex pname
+  = liftIO
+      (js_getActiveUniformBlockParameter self (maybeToOptional program)
+         uniformBlockIndex
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockParameter Mozilla WebGL2RenderingContext.getActiveUniformBlockParameter documentation> 
+getActiveUniformBlockParameter_ ::
+                                (MonadIO m) =>
+                                  WebGL2RenderingContext ->
+                                    Maybe WebGLProgram -> GLuint -> GLenum -> m ()
+getActiveUniformBlockParameter_ self program uniformBlockIndex
+  pname
+  = liftIO
+      (void
+         (js_getActiveUniformBlockParameter self (maybeToOptional program)
+            uniformBlockIndex
+            pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getActiveUniformBlockName\"]($2,\n$3); })"
+        js_getActiveUniformBlockName ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> GLuint -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
+getActiveUniformBlockName ::
+                          (MonadIO m) =>
+                            WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m JSVal
+getActiveUniformBlockName self program uniformBlockIndex
+  = liftIO
+      (js_getActiveUniformBlockName self (maybeToOptional program)
+         uniformBlockIndex)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.getActiveUniformBlockName Mozilla WebGL2RenderingContext.getActiveUniformBlockName documentation> 
+getActiveUniformBlockName_ ::
+                           (MonadIO m) =>
+                             WebGL2RenderingContext -> Maybe WebGLProgram -> GLuint -> m ()
+getActiveUniformBlockName_ self program uniformBlockIndex
+  = liftIO
+      (void
+         (js_getActiveUniformBlockName self (maybeToOptional program)
+            uniformBlockIndex))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformBlockBinding\"]($2,\n$3, $4); })" js_uniformBlockBinding
+        ::
+        WebGL2RenderingContext ->
+          Optional WebGLProgram -> GLuint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.uniformBlockBinding Mozilla WebGL2RenderingContext.uniformBlockBinding documentation> 
+uniformBlockBinding ::
+                    (MonadIO m) =>
+                      WebGL2RenderingContext ->
+                        Maybe WebGLProgram -> GLuint -> GLuint -> m ()
+uniformBlockBinding self program uniformBlockIndex
+  uniformBlockBinding
+  = liftIO
+      (js_uniformBlockBinding self (maybeToOptional program)
+         uniformBlockIndex
+         uniformBlockBinding)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createVertexArray\"](); })"
+        js_createVertexArray ::
+        WebGL2RenderingContext -> IO WebGLVertexArrayObject
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
+createVertexArray ::
+                  (MonadIO m) => WebGL2RenderingContext -> m WebGLVertexArrayObject
+createVertexArray self = liftIO (js_createVertexArray self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.createVertexArray Mozilla WebGL2RenderingContext.createVertexArray documentation> 
+createVertexArray_ :: (MonadIO m) => WebGL2RenderingContext -> m ()
+createVertexArray_ self = liftIO (void (js_createVertexArray self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteVertexArray\"]($2); })"
+        js_deleteVertexArray ::
+        WebGL2RenderingContext -> Optional WebGLVertexArrayObject -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.deleteVertexArray Mozilla WebGL2RenderingContext.deleteVertexArray documentation> 
+deleteVertexArray ::
+                  (MonadIO m) =>
+                    WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
+deleteVertexArray self vertexArray
+  = liftIO (js_deleteVertexArray self (maybeToOptional vertexArray))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isVertexArray\"]($2); })"
+        js_isVertexArray ::
+        WebGL2RenderingContext ->
+          Optional WebGLVertexArrayObject -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
+isVertexArray ::
+              (MonadIO m) =>
+                WebGL2RenderingContext ->
+                  Maybe WebGLVertexArrayObject -> m GLboolean
+isVertexArray self vertexArray
+  = liftIO (js_isVertexArray self (maybeToOptional vertexArray))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.isVertexArray Mozilla WebGL2RenderingContext.isVertexArray documentation> 
+isVertexArray_ ::
+               (MonadIO m) =>
+                 WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
+isVertexArray_ self vertexArray
+  = liftIO
+      (void (js_isVertexArray self (maybeToOptional vertexArray)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"bindVertexArray\"]($2); })"
+        js_bindVertexArray ::
+        WebGL2RenderingContext -> Optional WebGLVertexArrayObject -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext.bindVertexArray Mozilla WebGL2RenderingContext.bindVertexArray documentation> 
+bindVertexArray ::
+                (MonadIO m) =>
+                  WebGL2RenderingContext -> Maybe WebGLVertexArrayObject -> m ()
+bindVertexArray self vertexArray
+  = liftIO (js_bindVertexArray self (maybeToOptional vertexArray))
+pattern READ_BUFFER = 3074
+pattern UNPACK_ROW_LENGTH = 3314
+pattern UNPACK_SKIP_ROWS = 3315
+pattern UNPACK_SKIP_PIXELS = 3316
+pattern PACK_ROW_LENGTH = 3330
+pattern PACK_SKIP_ROWS = 3331
+pattern PACK_SKIP_PIXELS = 3332
+pattern COLOR = 6144
+pattern DEPTH = 6145
+pattern STENCIL = 6146
+pattern RED = 6403
+pattern RGB8 = 32849
+pattern RGBA8 = 32856
+pattern RGB10_A2 = 32857
+pattern TEXTURE_BINDING_3D = 32874
+pattern UNPACK_SKIP_IMAGES = 32877
+pattern UNPACK_IMAGE_HEIGHT = 32878
+pattern TEXTURE_3D = 32879
+pattern TEXTURE_WRAP_R = 32882
+pattern MAX_3D_TEXTURE_SIZE = 32883
+pattern UNSIGNED_INT_2_10_10_10_REV = 33640
+pattern MAX_ELEMENTS_VERTICES = 33000
+pattern MAX_ELEMENTS_INDICES = 33001
+pattern TEXTURE_MIN_LOD = 33082
+pattern TEXTURE_MAX_LOD = 33083
+pattern TEXTURE_BASE_LEVEL = 33084
+pattern TEXTURE_MAX_LEVEL = 33085
+pattern MIN = 32775
+pattern MAX = 32776
+pattern DEPTH_COMPONENT24 = 33190
+pattern MAX_TEXTURE_LOD_BIAS = 34045
+pattern TEXTURE_COMPARE_MODE = 34892
+pattern TEXTURE_COMPARE_FUNC = 34893
+pattern CURRENT_QUERY = 34917
+pattern QUERY_RESULT = 34918
+pattern QUERY_RESULT_AVAILABLE = 34919
+pattern STREAM_READ = 35041
+pattern STREAM_COPY = 35042
+pattern STATIC_READ = 35045
+pattern STATIC_COPY = 35046
+pattern DYNAMIC_READ = 35049
+pattern DYNAMIC_COPY = 35050
+pattern MAX_DRAW_BUFFERS = 34852
+pattern DRAW_BUFFER0 = 34853
+pattern DRAW_BUFFER1 = 34854
+pattern DRAW_BUFFER2 = 34855
+pattern DRAW_BUFFER3 = 34856
+pattern DRAW_BUFFER4 = 34857
+pattern DRAW_BUFFER5 = 34858
+pattern DRAW_BUFFER6 = 34859
+pattern DRAW_BUFFER7 = 34860
+pattern DRAW_BUFFER8 = 34861
+pattern DRAW_BUFFER9 = 34862
+pattern DRAW_BUFFER10 = 34863
+pattern DRAW_BUFFER11 = 34864
+pattern DRAW_BUFFER12 = 34865
+pattern DRAW_BUFFER13 = 34866
+pattern DRAW_BUFFER14 = 34867
+pattern DRAW_BUFFER15 = 34868
+pattern MAX_FRAGMENT_UNIFORM_COMPONENTS = 35657
+pattern MAX_VERTEX_UNIFORM_COMPONENTS = 35658
+pattern SAMPLER_3D = 35679
+pattern SAMPLER_2D_SHADOW = 35682
+pattern FRAGMENT_SHADER_DERIVATIVE_HINT = 35723
+pattern PIXEL_PACK_BUFFER = 35051
+pattern PIXEL_UNPACK_BUFFER = 35052
+pattern PIXEL_PACK_BUFFER_BINDING = 35053
+pattern PIXEL_UNPACK_BUFFER_BINDING = 35055
+pattern FLOAT_MAT2x3 = 35685
+pattern FLOAT_MAT2x4 = 35686
+pattern FLOAT_MAT3x2 = 35687
+pattern FLOAT_MAT3x4 = 35688
+pattern FLOAT_MAT4x2 = 35689
+pattern FLOAT_MAT4x3 = 35690
+pattern SRGB = 35904
+pattern SRGB8 = 35905
+pattern SRGB8_ALPHA8 = 35907
+pattern COMPARE_REF_TO_TEXTURE = 34894
+pattern RGBA32F = 34836
+pattern RGB32F = 34837
+pattern RGBA16F = 34842
+pattern RGB16F = 34843
+pattern VERTEX_ATTRIB_ARRAY_INTEGER = 35069
+pattern MAX_ARRAY_TEXTURE_LAYERS = 35071
+pattern MIN_PROGRAM_TEXEL_OFFSET = 35076
+pattern MAX_PROGRAM_TEXEL_OFFSET = 35077
+pattern MAX_VARYING_COMPONENTS = 35659
+pattern TEXTURE_2D_ARRAY = 35866
+pattern TEXTURE_BINDING_2D_ARRAY = 35869
+pattern R11F_G11F_B10F = 35898
+pattern UNSIGNED_INT_10F_11F_11F_REV = 35899
+pattern RGB9_E5 = 35901
+pattern UNSIGNED_INT_5_9_9_9_REV = 35902
+pattern TRANSFORM_FEEDBACK_BUFFER_MODE = 35967
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS = 35968
+pattern TRANSFORM_FEEDBACK_VARYINGS = 35971
+pattern TRANSFORM_FEEDBACK_BUFFER_START = 35972
+pattern TRANSFORM_FEEDBACK_BUFFER_SIZE = 35973
+pattern TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN = 35976
+pattern RASTERIZER_DISCARD = 35977
+pattern MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS = 35978
+pattern MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS = 35979
+pattern INTERLEAVED_ATTRIBS = 35980
+pattern SEPARATE_ATTRIBS = 35981
+pattern TRANSFORM_FEEDBACK_BUFFER = 35982
+pattern TRANSFORM_FEEDBACK_BUFFER_BINDING = 35983
+pattern RGBA32UI = 36208
+pattern RGB32UI = 36209
+pattern RGBA16UI = 36214
+pattern RGB16UI = 36215
+pattern RGBA8UI = 36220
+pattern RGB8UI = 36221
+pattern RGBA32I = 36226
+pattern RGB32I = 36227
+pattern RGBA16I = 36232
+pattern RGB16I = 36233
+pattern RGBA8I = 36238
+pattern RGB8I = 36239
+pattern RED_INTEGER = 36244
+pattern RGB_INTEGER = 36248
+pattern RGBA_INTEGER = 36249
+pattern SAMPLER_2D_ARRAY = 36289
+pattern SAMPLER_2D_ARRAY_SHADOW = 36292
+pattern SAMPLER_CUBE_SHADOW = 36293
+pattern UNSIGNED_INT_VEC2 = 36294
+pattern UNSIGNED_INT_VEC3 = 36295
+pattern UNSIGNED_INT_VEC4 = 36296
+pattern INT_SAMPLER_2D = 36298
+pattern INT_SAMPLER_3D = 36299
+pattern INT_SAMPLER_CUBE = 36300
+pattern INT_SAMPLER_2D_ARRAY = 36303
+pattern UNSIGNED_INT_SAMPLER_2D = 36306
+pattern UNSIGNED_INT_SAMPLER_3D = 36307
+pattern UNSIGNED_INT_SAMPLER_CUBE = 36308
+pattern UNSIGNED_INT_SAMPLER_2D_ARRAY = 36311
+pattern DEPTH_COMPONENT32F = 36012
+pattern DEPTH32F_STENCIL8 = 36013
+pattern FLOAT_32_UNSIGNED_INT_24_8_REV = 36269
+pattern FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING = 33296
+pattern FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE = 33297
+pattern FRAMEBUFFER_ATTACHMENT_RED_SIZE = 33298
+pattern FRAMEBUFFER_ATTACHMENT_GREEN_SIZE = 33299
+pattern FRAMEBUFFER_ATTACHMENT_BLUE_SIZE = 33300
+pattern FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE = 33301
+pattern FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE = 33302
+pattern FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE = 33303
+pattern FRAMEBUFFER_DEFAULT = 33304
+pattern DEPTH_STENCIL_ATTACHMENT = 33306
+pattern DEPTH_STENCIL = 34041
+pattern UNSIGNED_INT_24_8 = 34042
+pattern DEPTH24_STENCIL8 = 35056
+pattern UNSIGNED_NORMALIZED = 35863
+pattern DRAW_FRAMEBUFFER_BINDING = 36006
+pattern READ_FRAMEBUFFER = 36008
+pattern DRAW_FRAMEBUFFER = 36009
+pattern READ_FRAMEBUFFER_BINDING = 36010
+pattern RENDERBUFFER_SAMPLES = 36011
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER = 36052
+pattern MAX_COLOR_ATTACHMENTS = 36063
+pattern COLOR_ATTACHMENT1 = 36065
+pattern COLOR_ATTACHMENT2 = 36066
+pattern COLOR_ATTACHMENT3 = 36067
+pattern COLOR_ATTACHMENT4 = 36068
+pattern COLOR_ATTACHMENT5 = 36069
+pattern COLOR_ATTACHMENT6 = 36070
+pattern COLOR_ATTACHMENT7 = 36071
+pattern COLOR_ATTACHMENT8 = 36072
+pattern COLOR_ATTACHMENT9 = 36073
+pattern COLOR_ATTACHMENT10 = 36074
+pattern COLOR_ATTACHMENT11 = 36075
+pattern COLOR_ATTACHMENT12 = 36076
+pattern COLOR_ATTACHMENT13 = 36077
+pattern COLOR_ATTACHMENT14 = 36078
+pattern COLOR_ATTACHMENT15 = 36079
+pattern FRAMEBUFFER_INCOMPLETE_MULTISAMPLE = 36182
+pattern MAX_SAMPLES = 36183
+pattern HALF_FLOAT = 5131
+pattern RG = 33319
+pattern RG_INTEGER = 33320
+pattern R8 = 33321
+pattern RG8 = 33323
+pattern R16F = 33325
+pattern R32F = 33326
+pattern RG16F = 33327
+pattern RG32F = 33328
+pattern R8I = 33329
+pattern R8UI = 33330
+pattern R16I = 33331
+pattern R16UI = 33332
+pattern R32I = 33333
+pattern R32UI = 33334
+pattern RG8I = 33335
+pattern RG8UI = 33336
+pattern RG16I = 33337
+pattern RG16UI = 33338
+pattern RG32I = 33339
+pattern RG32UI = 33340
+pattern VERTEX_ARRAY_BINDING = 34229
+pattern R8_SNORM = 36756
+pattern RG8_SNORM = 36757
+pattern RGB8_SNORM = 36758
+pattern RGBA8_SNORM = 36759
+pattern SIGNED_NORMALIZED = 36764
+pattern PRIMITIVE_RESTART_FIXED_INDEX = 36201
+pattern COPY_READ_BUFFER = 36662
+pattern COPY_WRITE_BUFFER = 36663
+pattern COPY_READ_BUFFER_BINDING = 36662
+pattern COPY_WRITE_BUFFER_BINDING = 36663
+pattern UNIFORM_BUFFER = 35345
+pattern UNIFORM_BUFFER_BINDING = 35368
+pattern UNIFORM_BUFFER_START = 35369
+pattern UNIFORM_BUFFER_SIZE = 35370
+pattern MAX_VERTEX_UNIFORM_BLOCKS = 35371
+pattern MAX_FRAGMENT_UNIFORM_BLOCKS = 35373
+pattern MAX_COMBINED_UNIFORM_BLOCKS = 35374
+pattern MAX_UNIFORM_BUFFER_BINDINGS = 35375
+pattern MAX_UNIFORM_BLOCK_SIZE = 35376
+pattern MAX_COMBINED_VERTEX_UNIFORM_COMPONENTS = 35377
+pattern MAX_COMBINED_FRAGMENT_UNIFORM_COMPONENTS = 35379
+pattern UNIFORM_BUFFER_OFFSET_ALIGNMENT = 35380
+pattern ACTIVE_UNIFORM_BLOCKS = 35382
+pattern UNIFORM_TYPE = 35383
+pattern UNIFORM_SIZE = 35384
+pattern UNIFORM_BLOCK_INDEX = 35386
+pattern UNIFORM_OFFSET = 35387
+pattern UNIFORM_ARRAY_STRIDE = 35388
+pattern UNIFORM_MATRIX_STRIDE = 35389
+pattern UNIFORM_IS_ROW_MAJOR = 35390
+pattern UNIFORM_BLOCK_BINDING = 35391
+pattern UNIFORM_BLOCK_DATA_SIZE = 35392
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORMS = 35394
+pattern UNIFORM_BLOCK_ACTIVE_UNIFORM_INDICES = 35395
+pattern UNIFORM_BLOCK_REFERENCED_BY_VERTEX_SHADER = 35396
+pattern UNIFORM_BLOCK_REFERENCED_BY_FRAGMENT_SHADER = 35398
+pattern INVALID_INDEX = 4294967295
+pattern MAX_VERTEX_OUTPUT_COMPONENTS = 37154
+pattern MAX_FRAGMENT_INPUT_COMPONENTS = 37157
+pattern MAX_SERVER_WAIT_TIMEOUT = 37137
+pattern OBJECT_TYPE = 37138
+pattern SYNC_CONDITION = 37139
+pattern SYNC_STATUS = 37140
+pattern SYNC_FLAGS = 37141
+pattern SYNC_FENCE = 37142
+pattern SYNC_GPU_COMMANDS_COMPLETE = 37143
+pattern UNSIGNALED = 37144
+pattern SIGNALED = 37145
+pattern ALREADY_SIGNALED = 37146
+pattern TIMEOUT_EXPIRED = 37147
+pattern CONDITION_SATISFIED = 37148
+pattern WAIT_FAILED = 37149
+pattern SYNC_FLUSH_COMMANDS_BIT = 1
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR = 35070
+pattern ANY_SAMPLES_PASSED = 35887
+pattern ANY_SAMPLES_PASSED_CONSERVATIVE = 36202
+pattern SAMPLER_BINDING = 35097
+pattern RGB10_A2UI = 36975
+pattern TEXTURE_SWIZZLE_R = 36418
+pattern TEXTURE_SWIZZLE_G = 36419
+pattern TEXTURE_SWIZZLE_B = 36420
+pattern TEXTURE_SWIZZLE_A = 36421
+pattern GREEN = 6404
+pattern BLUE = 6405
+pattern INT_2_10_10_10_REV = 36255
+pattern TRANSFORM_FEEDBACK = 36386
+pattern TRANSFORM_FEEDBACK_PAUSED = 36387
+pattern TRANSFORM_FEEDBACK_ACTIVE = 36388
+pattern TRANSFORM_FEEDBACK_BINDING = 36389
+pattern COMPRESSED_R11_EAC = 37488
+pattern COMPRESSED_SIGNED_R11_EAC = 37489
+pattern COMPRESSED_RG11_EAC = 37490
+pattern COMPRESSED_SIGNED_RG11_EAC = 37491
+pattern COMPRESSED_RGB8_ETC2 = 37492
+pattern COMPRESSED_SRGB8_ETC2 = 37493
+pattern COMPRESSED_RGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37494
+pattern COMPRESSED_SRGB8_PUNCHTHROUGH_ALPHA1_ETC2 = 37495
+pattern COMPRESSED_RGBA8_ETC2_EAC = 37496
+pattern COMPRESSED_SRGB8_ALPHA8_ETC2_EAC = 37497
+pattern TEXTURE_IMMUTABLE_FORMAT = 37167
+pattern MAX_ELEMENT_INDEX = 36203
+pattern NUM_SAMPLE_COUNTS = 37760
+pattern TEXTURE_IMMUTABLE_LEVELS = 33503
+pattern VERTEX_ATTRIB_ARRAY_DIVISOR_ANGLE = 35070
+pattern TIMEOUT_IGNORED = 18446744073709551615
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLActiveInfo.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLActiveInfo
+       (js_getSize, getSize, js_getType, getType, js_getName, getName,
+        WebGLActiveInfo(..), gTypeWebGLActiveInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"size\"]; })" js_getSize ::
+        WebGLActiveInfo -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.size Mozilla WebGLActiveInfo.size documentation> 
+getSize :: (MonadIO m) => WebGLActiveInfo -> m Int
+getSize self = liftIO (js_getSize self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"type\"]; })" js_getType ::
+        WebGLActiveInfo -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.type Mozilla WebGLActiveInfo.type documentation> 
+getType :: (MonadIO m) => WebGLActiveInfo -> m Word
+getType self = liftIO (js_getType self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        WebGLActiveInfo -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo.name Mozilla WebGLActiveInfo.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => WebGLActiveInfo -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureATC.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureATC
+       (pattern COMPRESSED_RGB_ATC_WEBGL,
+        pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL,
+        pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL,
+        WebGLCompressedTextureATC(..), gTypeWebGLCompressedTextureATC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern COMPRESSED_RGB_ATC_WEBGL = 35986
+pattern COMPRESSED_RGBA_ATC_EXPLICIT_ALPHA_WEBGL = 35987
+pattern COMPRESSED_RGBA_ATC_INTERPOLATED_ALPHA_WEBGL = 34798
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTexturePVRTC.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTexturePVRTC
+       (pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG,
+        pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG,
+        pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG,
+        pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG,
+        WebGLCompressedTexturePVRTC(..), gTypeWebGLCompressedTexturePVRTC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern COMPRESSED_RGB_PVRTC_4BPPV1_IMG = 35840
+pattern COMPRESSED_RGB_PVRTC_2BPPV1_IMG = 35841
+pattern COMPRESSED_RGBA_PVRTC_4BPPV1_IMG = 35842
+pattern COMPRESSED_RGBA_PVRTC_2BPPV1_IMG = 35843
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLCompressedTextureS3TC.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLCompressedTextureS3TC
+       (pattern COMPRESSED_RGB_S3TC_DXT1_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT1_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT3_EXT,
+        pattern COMPRESSED_RGBA_S3TC_DXT5_EXT,
+        WebGLCompressedTextureS3TC(..), gTypeWebGLCompressedTextureS3TC)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern COMPRESSED_RGB_S3TC_DXT1_EXT = 33776
+pattern COMPRESSED_RGBA_S3TC_DXT1_EXT = 33777
+pattern COMPRESSED_RGBA_S3TC_DXT3_EXT = 33778
+pattern COMPRESSED_RGBA_S3TC_DXT5_EXT = 33779
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLContextEvent.hs
@@ -0,0 +1,51 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLContextEvent
+       (js_newWebGLContextEvent, newWebGLContextEvent,
+        js_getStatusMessage, getStatusMessage, WebGLContextEvent(..),
+        gTypeWebGLContextEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebGLContextEvent\"]($1,\n$2); })"
+        js_newWebGLContextEvent ::
+        JSString -> Optional WebGLContextEventInit -> IO WebGLContextEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation> 
+newWebGLContextEvent ::
+                     (MonadIO m, ToJSString type') =>
+                       type' -> Maybe WebGLContextEventInit -> m WebGLContextEvent
+newWebGLContextEvent type' eventInit
+  = liftIO
+      (js_newWebGLContextEvent (toJSString type')
+         (maybeToOptional eventInit))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"statusMessage\"]; })"
+        js_getStatusMessage :: WebGLContextEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent.statusMessage Mozilla WebGLContextEvent.statusMessage documentation> 
+getStatusMessage ::
+                 (MonadIO m, FromJSString result) => WebGLContextEvent -> m result
+getStatusMessage self
+  = liftIO (fromJSString <$> (js_getStatusMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugRendererInfo.hs
@@ -0,0 +1,29 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDebugRendererInfo
+       (pattern UNMASKED_VENDOR_WEBGL, pattern UNMASKED_RENDERER_WEBGL,
+        WebGLDebugRendererInfo(..), gTypeWebGLDebugRendererInfo)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern UNMASKED_VENDOR_WEBGL = 37445
+pattern UNMASKED_RENDERER_WEBGL = 37446
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDebugShaders.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDebugShaders
+       (js_getTranslatedShaderSource, getTranslatedShaderSource,
+        getTranslatedShaderSource_, getTranslatedShaderSourceUnsafe,
+        getTranslatedShaderSourceUnchecked, WebGLDebugShaders(..),
+        gTypeWebGLDebugShaders)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"getTranslatedShaderSource\"]($2); })"
+        js_getTranslatedShaderSource ::
+        WebGLDebugShaders -> Optional WebGLShader -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSource ::
+                          (MonadIO m, FromJSString result) =>
+                            WebGLDebugShaders -> Maybe WebGLShader -> m (Maybe result)
+getTranslatedShaderSource self shader
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getTranslatedShaderSource self (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSource_ ::
+                           (MonadIO m) => WebGLDebugShaders -> Maybe WebGLShader -> m ()
+getTranslatedShaderSource_ self shader
+  = liftIO
+      (void (js_getTranslatedShaderSource self (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSourceUnsafe ::
+                                (MonadIO m, HasCallStack, FromJSString result) =>
+                                  WebGLDebugShaders -> Maybe WebGLShader -> m result
+getTranslatedShaderSourceUnsafe self shader
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getTranslatedShaderSource self (maybeToOptional shader)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders.getTranslatedShaderSource Mozilla WebGLDebugShaders.getTranslatedShaderSource documentation> 
+getTranslatedShaderSourceUnchecked ::
+                                   (MonadIO m, FromJSString result) =>
+                                     WebGLDebugShaders -> Maybe WebGLShader -> m result
+getTranslatedShaderSourceUnchecked self shader
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getTranslatedShaderSource self (maybeToOptional shader)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDepthTexture.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDepthTexture
+       (pattern UNSIGNED_INT_24_8_WEBGL, WebGLDepthTexture(..),
+        gTypeWebGLDepthTexture)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern UNSIGNED_INT_24_8_WEBGL = 34042
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLDrawBuffers.hs
@@ -0,0 +1,90 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLDrawBuffers
+       (js_drawBuffersWEBGL, drawBuffersWEBGL,
+        pattern COLOR_ATTACHMENT0_WEBGL, pattern COLOR_ATTACHMENT1_WEBGL,
+        pattern COLOR_ATTACHMENT2_WEBGL, pattern COLOR_ATTACHMENT3_WEBGL,
+        pattern COLOR_ATTACHMENT4_WEBGL, pattern COLOR_ATTACHMENT5_WEBGL,
+        pattern COLOR_ATTACHMENT6_WEBGL, pattern COLOR_ATTACHMENT7_WEBGL,
+        pattern COLOR_ATTACHMENT8_WEBGL, pattern COLOR_ATTACHMENT9_WEBGL,
+        pattern COLOR_ATTACHMENT10_WEBGL, pattern COLOR_ATTACHMENT11_WEBGL,
+        pattern COLOR_ATTACHMENT12_WEBGL, pattern COLOR_ATTACHMENT13_WEBGL,
+        pattern COLOR_ATTACHMENT14_WEBGL, pattern COLOR_ATTACHMENT15_WEBGL,
+        pattern DRAW_BUFFER0_WEBGL, pattern DRAW_BUFFER1_WEBGL,
+        pattern DRAW_BUFFER2_WEBGL, pattern DRAW_BUFFER3_WEBGL,
+        pattern DRAW_BUFFER4_WEBGL, pattern DRAW_BUFFER5_WEBGL,
+        pattern DRAW_BUFFER6_WEBGL, pattern DRAW_BUFFER7_WEBGL,
+        pattern DRAW_BUFFER8_WEBGL, pattern DRAW_BUFFER9_WEBGL,
+        pattern DRAW_BUFFER10_WEBGL, pattern DRAW_BUFFER11_WEBGL,
+        pattern DRAW_BUFFER12_WEBGL, pattern DRAW_BUFFER13_WEBGL,
+        pattern DRAW_BUFFER14_WEBGL, pattern DRAW_BUFFER15_WEBGL,
+        pattern MAX_COLOR_ATTACHMENTS_WEBGL,
+        pattern MAX_DRAW_BUFFERS_WEBGL, WebGLDrawBuffers(..),
+        gTypeWebGLDrawBuffers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"drawBuffersWEBGL\"]($2); })"
+        js_drawBuffersWEBGL :: WebGLDrawBuffers -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers.drawBuffersWEBGL Mozilla WebGLDrawBuffers.drawBuffersWEBGL documentation> 
+drawBuffersWEBGL ::
+                 (MonadIO m) => WebGLDrawBuffers -> [GLenum] -> m ()
+drawBuffersWEBGL self buffers
+  = liftIO
+      (toJSVal buffers >>=
+         \ buffers' -> js_drawBuffersWEBGL self buffers')
+pattern COLOR_ATTACHMENT0_WEBGL = 36064
+pattern COLOR_ATTACHMENT1_WEBGL = 36065
+pattern COLOR_ATTACHMENT2_WEBGL = 36066
+pattern COLOR_ATTACHMENT3_WEBGL = 36067
+pattern COLOR_ATTACHMENT4_WEBGL = 36068
+pattern COLOR_ATTACHMENT5_WEBGL = 36069
+pattern COLOR_ATTACHMENT6_WEBGL = 36070
+pattern COLOR_ATTACHMENT7_WEBGL = 36071
+pattern COLOR_ATTACHMENT8_WEBGL = 36072
+pattern COLOR_ATTACHMENT9_WEBGL = 36073
+pattern COLOR_ATTACHMENT10_WEBGL = 36074
+pattern COLOR_ATTACHMENT11_WEBGL = 36075
+pattern COLOR_ATTACHMENT12_WEBGL = 36076
+pattern COLOR_ATTACHMENT13_WEBGL = 36077
+pattern COLOR_ATTACHMENT14_WEBGL = 36078
+pattern COLOR_ATTACHMENT15_WEBGL = 36079
+pattern DRAW_BUFFER0_WEBGL = 34853
+pattern DRAW_BUFFER1_WEBGL = 34854
+pattern DRAW_BUFFER2_WEBGL = 34855
+pattern DRAW_BUFFER3_WEBGL = 34856
+pattern DRAW_BUFFER4_WEBGL = 34857
+pattern DRAW_BUFFER5_WEBGL = 34858
+pattern DRAW_BUFFER6_WEBGL = 34859
+pattern DRAW_BUFFER7_WEBGL = 34860
+pattern DRAW_BUFFER8_WEBGL = 34861
+pattern DRAW_BUFFER9_WEBGL = 34862
+pattern DRAW_BUFFER10_WEBGL = 34863
+pattern DRAW_BUFFER11_WEBGL = 34864
+pattern DRAW_BUFFER12_WEBGL = 34865
+pattern DRAW_BUFFER13_WEBGL = 34866
+pattern DRAW_BUFFER14_WEBGL = 34867
+pattern DRAW_BUFFER15_WEBGL = 34868
+pattern MAX_COLOR_ATTACHMENTS_WEBGL = 36063
+pattern MAX_DRAW_BUFFERS_WEBGL = 34852
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLLoseContext.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLLoseContext
+       (js_loseContext, loseContext, js_restoreContext, restoreContext,
+        WebGLLoseContext(..), gTypeWebGLLoseContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loseContext\"](); })"
+        js_loseContext :: WebGLLoseContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.loseContext Mozilla WebGLLoseContext.loseContext documentation> 
+loseContext :: (MonadIO m) => WebGLLoseContext -> m ()
+loseContext self = liftIO (js_loseContext self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"restoreContext\"](); })"
+        js_restoreContext :: WebGLLoseContext -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext.restoreContext Mozilla WebGLLoseContext.restoreContext documentation> 
+restoreContext :: (MonadIO m) => WebGLLoseContext -> m ()
+restoreContext self = liftIO (js_restoreContext self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLRenderingContextBase.hs
@@ -0,0 +1,3112 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLRenderingContextBase
+       (js_activeTexture, activeTexture, js_attachShader, attachShader,
+        js_bindAttribLocation, bindAttribLocation, js_bindBuffer,
+        bindBuffer, js_bindFramebuffer, bindFramebuffer,
+        js_bindRenderbuffer, bindRenderbuffer, js_bindTexture, bindTexture,
+        js_blendColor, blendColor, js_blendEquation, blendEquation,
+        js_blendEquationSeparate, blendEquationSeparate, js_blendFunc,
+        blendFunc, js_blendFuncSeparate, blendFuncSeparate, js_bufferData,
+        bufferData, js_bufferDataPtr, bufferDataPtr, js_bufferSubData,
+        bufferSubData, js_checkFramebufferStatus, checkFramebufferStatus,
+        checkFramebufferStatus_, js_clear, clear, js_clearColor,
+        clearColor, js_clearDepth, clearDepth, js_clearStencil,
+        clearStencil, js_colorMask, colorMask, js_compileShader,
+        compileShader, js_compressedTexImage2D, compressedTexImage2D,
+        js_compressedTexSubImage2D, compressedTexSubImage2D,
+        js_copyTexImage2D, copyTexImage2D, js_copyTexSubImage2D,
+        copyTexSubImage2D, js_createBuffer, createBuffer, createBuffer_,
+        js_createFramebuffer, createFramebuffer, createFramebuffer_,
+        js_createProgram, createProgram, createProgram_,
+        js_createRenderbuffer, createRenderbuffer, createRenderbuffer_,
+        js_createShader, createShader, createShader_, js_createTexture,
+        createTexture, createTexture_, js_cullFace, cullFace,
+        js_deleteBuffer, deleteBuffer, js_deleteFramebuffer,
+        deleteFramebuffer, js_deleteProgram, deleteProgram,
+        js_deleteRenderbuffer, deleteRenderbuffer, js_deleteShader,
+        deleteShader, js_deleteTexture, deleteTexture, js_depthFunc,
+        depthFunc, js_depthMask, depthMask, js_depthRange, depthRange,
+        js_detachShader, detachShader, js_disable, disable,
+        js_disableVertexAttribArray, disableVertexAttribArray,
+        js_drawArrays, drawArrays, js_drawElements, drawElements,
+        js_enable, enable, js_enableVertexAttribArray,
+        enableVertexAttribArray, js_finish, finish, js_flush, flush,
+        js_framebufferRenderbuffer, framebufferRenderbuffer,
+        js_framebufferTexture2D, framebufferTexture2D, js_frontFace,
+        frontFace, js_generateMipmap, generateMipmap, js_getActiveAttrib,
+        getActiveAttrib, getActiveAttrib_, js_getActiveUniform,
+        getActiveUniform, getActiveUniform_, js_getAttachedShaders,
+        getAttachedShaders, getAttachedShaders_, js_getAttribLocation,
+        getAttribLocation, getAttribLocation_, js_getBufferParameter,
+        getBufferParameter, getBufferParameter_, js_getContextAttributes,
+        getContextAttributes, getContextAttributes_,
+        getContextAttributesUnsafe, getContextAttributesUnchecked,
+        js_getError, getError, getError_, js_getSupportedExtensions,
+        getSupportedExtensions, getSupportedExtensions_, js_getExtension,
+        getExtension, getExtension_, getExtensionUnsafe,
+        getExtensionUnchecked, js_getFramebufferAttachmentParameter,
+        getFramebufferAttachmentParameter,
+        getFramebufferAttachmentParameter_, js_getParameter, getParameter,
+        getParameter_, js_getProgramParameter, getProgramParameter,
+        getProgramParameter_, js_getProgramInfoLog, getProgramInfoLog,
+        getProgramInfoLog_, getProgramInfoLogUnsafe,
+        getProgramInfoLogUnchecked, js_getRenderbufferParameter,
+        getRenderbufferParameter, getRenderbufferParameter_,
+        js_getShaderParameter, getShaderParameter, getShaderParameter_,
+        js_getShaderInfoLog, getShaderInfoLog, getShaderInfoLog_,
+        getShaderInfoLogUnsafe, getShaderInfoLogUnchecked,
+        js_getShaderPrecisionFormat, getShaderPrecisionFormat,
+        getShaderPrecisionFormat_, js_getShaderSource, getShaderSource,
+        getShaderSource_, getShaderSourceUnsafe, getShaderSourceUnchecked,
+        js_getTexParameter, getTexParameter, getTexParameter_,
+        js_getUniform, getUniform, getUniform_, js_getUniformLocation,
+        getUniformLocation, getUniformLocation_, js_getVertexAttrib,
+        getVertexAttrib, getVertexAttrib_, js_getVertexAttribOffset,
+        getVertexAttribOffset, getVertexAttribOffset_, js_hint, hint,
+        js_isBuffer, isBuffer, isBuffer_, js_isContextLost, isContextLost,
+        isContextLost_, js_isEnabled, isEnabled, isEnabled_,
+        js_isFramebuffer, isFramebuffer, isFramebuffer_, js_isProgram,
+        isProgram, isProgram_, js_isRenderbuffer, isRenderbuffer,
+        isRenderbuffer_, js_isShader, isShader, isShader_, js_isTexture,
+        isTexture, isTexture_, js_lineWidth, lineWidth, js_linkProgram,
+        linkProgram, js_pixelStorei, pixelStorei, js_polygonOffset,
+        polygonOffset, js_readPixels, readPixels, js_releaseShaderCompiler,
+        releaseShaderCompiler, js_renderbufferStorage, renderbufferStorage,
+        js_sampleCoverage, sampleCoverage, js_scissor, scissor,
+        js_shaderSource, shaderSource, js_stencilFunc, stencilFunc,
+        js_stencilFuncSeparate, stencilFuncSeparate, js_stencilMask,
+        stencilMask, js_stencilMaskSeparate, stencilMaskSeparate,
+        js_stencilOp, stencilOp, js_stencilOpSeparate, stencilOpSeparate,
+        js_texParameterf, texParameterf, js_texParameteri, texParameteri,
+        js_texImage2DView, texImage2DView, js_texImage2D, texImage2D,
+        js_texSubImage2DView, texSubImage2DView, js_texSubImage2D,
+        texSubImage2D, js_uniform1f, uniform1f, js_uniform2f, uniform2f,
+        js_uniform3f, uniform3f, js_uniform4f, uniform4f, js_uniform1i,
+        uniform1i, js_uniform2i, uniform2i, js_uniform3i, uniform3i,
+        js_uniform4i, uniform4i, js_uniform1fv, uniform1fv, js_uniform2fv,
+        uniform2fv, js_uniform3fv, uniform3fv, js_uniform4fv, uniform4fv,
+        js_uniform1iv, uniform1iv, js_uniform2iv, uniform2iv,
+        js_uniform3iv, uniform3iv, js_uniform4iv, uniform4iv,
+        js_uniformMatrix2fv, uniformMatrix2fv, js_uniformMatrix3fv,
+        uniformMatrix3fv, js_uniformMatrix4fv, uniformMatrix4fv,
+        js_useProgram, useProgram, js_validateProgram, validateProgram,
+        js_vertexAttrib1f, vertexAttrib1f, js_vertexAttrib2f,
+        vertexAttrib2f, js_vertexAttrib3f, vertexAttrib3f,
+        js_vertexAttrib4f, vertexAttrib4f, js_vertexAttrib1fv,
+        vertexAttrib1fv, js_vertexAttrib2fv, vertexAttrib2fv,
+        js_vertexAttrib3fv, vertexAttrib3fv, js_vertexAttrib4fv,
+        vertexAttrib4fv, js_vertexAttribPointer, vertexAttribPointer,
+        js_viewport, viewport, pattern DEPTH_BUFFER_BIT,
+        pattern STENCIL_BUFFER_BIT, pattern COLOR_BUFFER_BIT,
+        pattern POINTS, pattern LINES, pattern LINE_LOOP,
+        pattern LINE_STRIP, pattern TRIANGLES, pattern TRIANGLE_STRIP,
+        pattern TRIANGLE_FAN, pattern ZERO, pattern ONE, pattern SRC_COLOR,
+        pattern ONE_MINUS_SRC_COLOR, pattern SRC_ALPHA,
+        pattern ONE_MINUS_SRC_ALPHA, pattern DST_ALPHA,
+        pattern ONE_MINUS_DST_ALPHA, pattern DST_COLOR,
+        pattern ONE_MINUS_DST_COLOR, pattern SRC_ALPHA_SATURATE,
+        pattern FUNC_ADD, pattern BLEND_EQUATION,
+        pattern BLEND_EQUATION_RGB, pattern BLEND_EQUATION_ALPHA,
+        pattern FUNC_SUBTRACT, pattern FUNC_REVERSE_SUBTRACT,
+        pattern BLEND_DST_RGB, pattern BLEND_SRC_RGB,
+        pattern BLEND_DST_ALPHA, pattern BLEND_SRC_ALPHA,
+        pattern CONSTANT_COLOR, pattern ONE_MINUS_CONSTANT_COLOR,
+        pattern CONSTANT_ALPHA, pattern ONE_MINUS_CONSTANT_ALPHA,
+        pattern BLEND_COLOR, pattern ARRAY_BUFFER,
+        pattern ELEMENT_ARRAY_BUFFER, pattern ARRAY_BUFFER_BINDING,
+        pattern ELEMENT_ARRAY_BUFFER_BINDING, pattern STREAM_DRAW,
+        pattern STATIC_DRAW, pattern DYNAMIC_DRAW, pattern BUFFER_SIZE,
+        pattern BUFFER_USAGE, pattern CURRENT_VERTEX_ATTRIB, pattern FRONT,
+        pattern BACK, pattern FRONT_AND_BACK, pattern TEXTURE_2D,
+        pattern CULL_FACE, pattern BLEND, pattern DITHER,
+        pattern STENCIL_TEST, pattern DEPTH_TEST, pattern SCISSOR_TEST,
+        pattern POLYGON_OFFSET_FILL, pattern SAMPLE_ALPHA_TO_COVERAGE,
+        pattern SAMPLE_COVERAGE, pattern NO_ERROR, pattern INVALID_ENUM,
+        pattern INVALID_VALUE, pattern INVALID_OPERATION,
+        pattern OUT_OF_MEMORY, pattern CW, pattern CCW, pattern LINE_WIDTH,
+        pattern ALIASED_POINT_SIZE_RANGE, pattern ALIASED_LINE_WIDTH_RANGE,
+        pattern CULL_FACE_MODE, pattern FRONT_FACE, pattern DEPTH_RANGE,
+        pattern DEPTH_WRITEMASK, pattern DEPTH_CLEAR_VALUE,
+        pattern DEPTH_FUNC, pattern STENCIL_CLEAR_VALUE,
+        pattern STENCIL_FUNC, pattern STENCIL_FAIL,
+        pattern STENCIL_PASS_DEPTH_FAIL, pattern STENCIL_PASS_DEPTH_PASS,
+        pattern STENCIL_REF, pattern STENCIL_VALUE_MASK,
+        pattern STENCIL_WRITEMASK, pattern STENCIL_BACK_FUNC,
+        pattern STENCIL_BACK_FAIL, pattern STENCIL_BACK_PASS_DEPTH_FAIL,
+        pattern STENCIL_BACK_PASS_DEPTH_PASS, pattern STENCIL_BACK_REF,
+        pattern STENCIL_BACK_VALUE_MASK, pattern STENCIL_BACK_WRITEMASK,
+        pattern VIEWPORT, pattern SCISSOR_BOX, pattern COLOR_CLEAR_VALUE,
+        pattern COLOR_WRITEMASK, pattern UNPACK_ALIGNMENT,
+        pattern PACK_ALIGNMENT, pattern MAX_TEXTURE_SIZE,
+        pattern MAX_VIEWPORT_DIMS, pattern SUBPIXEL_BITS, pattern RED_BITS,
+        pattern GREEN_BITS, pattern BLUE_BITS, pattern ALPHA_BITS,
+        pattern DEPTH_BITS, pattern STENCIL_BITS,
+        pattern POLYGON_OFFSET_UNITS, pattern POLYGON_OFFSET_FACTOR,
+        pattern TEXTURE_BINDING_2D, pattern SAMPLE_BUFFERS,
+        pattern SAMPLES, pattern SAMPLE_COVERAGE_VALUE,
+        pattern SAMPLE_COVERAGE_INVERT, pattern COMPRESSED_TEXTURE_FORMATS,
+        pattern DONT_CARE, pattern FASTEST, pattern NICEST,
+        pattern GENERATE_MIPMAP_HINT, pattern BYTE, pattern UNSIGNED_BYTE,
+        pattern SHORT, pattern UNSIGNED_SHORT, pattern INT,
+        pattern UNSIGNED_INT, pattern FLOAT, pattern DEPTH_COMPONENT,
+        pattern ALPHA, pattern RGB, pattern RGBA, pattern LUMINANCE,
+        pattern LUMINANCE_ALPHA, pattern UNSIGNED_SHORT_4_4_4_4,
+        pattern UNSIGNED_SHORT_5_5_5_1, pattern UNSIGNED_SHORT_5_6_5,
+        pattern FRAGMENT_SHADER, pattern VERTEX_SHADER,
+        pattern MAX_VERTEX_ATTRIBS, pattern MAX_VERTEX_UNIFORM_VECTORS,
+        pattern MAX_VARYING_VECTORS,
+        pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS,
+        pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS,
+        pattern MAX_TEXTURE_IMAGE_UNITS,
+        pattern MAX_FRAGMENT_UNIFORM_VECTORS, pattern SHADER_TYPE,
+        pattern DELETE_STATUS, pattern LINK_STATUS,
+        pattern VALIDATE_STATUS, pattern ATTACHED_SHADERS,
+        pattern ACTIVE_UNIFORMS, pattern ACTIVE_ATTRIBUTES,
+        pattern SHADING_LANGUAGE_VERSION, pattern CURRENT_PROGRAM,
+        pattern NEVER, pattern LESS, pattern EQUAL, pattern LEQUAL,
+        pattern GREATER, pattern NOTEQUAL, pattern GEQUAL, pattern ALWAYS,
+        pattern KEEP, pattern REPLACE, pattern INCR, pattern DECR,
+        pattern INVERT, pattern INCR_WRAP, pattern DECR_WRAP,
+        pattern VENDOR, pattern RENDERER, pattern VERSION, pattern NEAREST,
+        pattern LINEAR, pattern NEAREST_MIPMAP_NEAREST,
+        pattern LINEAR_MIPMAP_NEAREST, pattern NEAREST_MIPMAP_LINEAR,
+        pattern LINEAR_MIPMAP_LINEAR, pattern TEXTURE_MAG_FILTER,
+        pattern TEXTURE_MIN_FILTER, pattern TEXTURE_WRAP_S,
+        pattern TEXTURE_WRAP_T, pattern TEXTURE, pattern TEXTURE_CUBE_MAP,
+        pattern TEXTURE_BINDING_CUBE_MAP,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_X,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_X,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_Y,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_Y,
+        pattern TEXTURE_CUBE_MAP_POSITIVE_Z,
+        pattern TEXTURE_CUBE_MAP_NEGATIVE_Z,
+        pattern MAX_CUBE_MAP_TEXTURE_SIZE, pattern TEXTURE0,
+        pattern TEXTURE1, pattern TEXTURE2, pattern TEXTURE3,
+        pattern TEXTURE4, pattern TEXTURE5, pattern TEXTURE6,
+        pattern TEXTURE7, pattern TEXTURE8, pattern TEXTURE9,
+        pattern TEXTURE10, pattern TEXTURE11, pattern TEXTURE12,
+        pattern TEXTURE13, pattern TEXTURE14, pattern TEXTURE15,
+        pattern TEXTURE16, pattern TEXTURE17, pattern TEXTURE18,
+        pattern TEXTURE19, pattern TEXTURE20, pattern TEXTURE21,
+        pattern TEXTURE22, pattern TEXTURE23, pattern TEXTURE24,
+        pattern TEXTURE25, pattern TEXTURE26, pattern TEXTURE27,
+        pattern TEXTURE28, pattern TEXTURE29, pattern TEXTURE30,
+        pattern TEXTURE31, pattern ACTIVE_TEXTURE, pattern REPEAT,
+        pattern CLAMP_TO_EDGE, pattern MIRRORED_REPEAT, pattern FLOAT_VEC2,
+        pattern FLOAT_VEC3, pattern FLOAT_VEC4, pattern INT_VEC2,
+        pattern INT_VEC3, pattern INT_VEC4, pattern BOOL,
+        pattern BOOL_VEC2, pattern BOOL_VEC3, pattern BOOL_VEC4,
+        pattern FLOAT_MAT2, pattern FLOAT_MAT3, pattern FLOAT_MAT4,
+        pattern SAMPLER_2D, pattern SAMPLER_CUBE,
+        pattern VERTEX_ATTRIB_ARRAY_ENABLED,
+        pattern VERTEX_ATTRIB_ARRAY_SIZE,
+        pattern VERTEX_ATTRIB_ARRAY_STRIDE,
+        pattern VERTEX_ATTRIB_ARRAY_TYPE,
+        pattern VERTEX_ATTRIB_ARRAY_NORMALIZED,
+        pattern VERTEX_ATTRIB_ARRAY_POINTER,
+        pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING,
+        pattern IMPLEMENTATION_COLOR_READ_TYPE,
+        pattern IMPLEMENTATION_COLOR_READ_FORMAT, pattern COMPILE_STATUS,
+        pattern LOW_FLOAT, pattern MEDIUM_FLOAT, pattern HIGH_FLOAT,
+        pattern LOW_INT, pattern MEDIUM_INT, pattern HIGH_INT,
+        pattern FRAMEBUFFER, pattern RENDERBUFFER, pattern RGBA4,
+        pattern RGB5_A1, pattern RGB565, pattern DEPTH_COMPONENT16,
+        pattern STENCIL_INDEX, pattern STENCIL_INDEX8,
+        pattern DEPTH_STENCIL, pattern RENDERBUFFER_WIDTH,
+        pattern RENDERBUFFER_HEIGHT, pattern RENDERBUFFER_INTERNAL_FORMAT,
+        pattern RENDERBUFFER_RED_SIZE, pattern RENDERBUFFER_GREEN_SIZE,
+        pattern RENDERBUFFER_BLUE_SIZE, pattern RENDERBUFFER_ALPHA_SIZE,
+        pattern RENDERBUFFER_DEPTH_SIZE, pattern RENDERBUFFER_STENCIL_SIZE,
+        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE,
+        pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL,
+        pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE,
+        pattern COLOR_ATTACHMENT0, pattern DEPTH_ATTACHMENT,
+        pattern STENCIL_ATTACHMENT, pattern DEPTH_STENCIL_ATTACHMENT,
+        pattern NONE, pattern FRAMEBUFFER_COMPLETE,
+        pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT,
+        pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT,
+        pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS,
+        pattern FRAMEBUFFER_UNSUPPORTED, pattern FRAMEBUFFER_BINDING,
+        pattern RENDERBUFFER_BINDING, pattern MAX_RENDERBUFFER_SIZE,
+        pattern INVALID_FRAMEBUFFER_OPERATION, pattern UNPACK_FLIP_Y_WEBGL,
+        pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL, pattern CONTEXT_LOST_WEBGL,
+        pattern UNPACK_COLORSPACE_CONVERSION_WEBGL,
+        pattern BROWSER_DEFAULT_WEBGL, js_getCanvas, getCanvas,
+        js_getDrawingBufferWidth, getDrawingBufferWidth,
+        js_getDrawingBufferHeight, getDrawingBufferHeight,
+        WebGLRenderingContextBase(..), gTypeWebGLRenderingContextBase,
+        IsWebGLRenderingContextBase, toWebGLRenderingContextBase)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"activeTexture\"]($2); })"
+        js_activeTexture :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.activeTexture Mozilla WebGLRenderingContextBase.activeTexture documentation> 
+activeTexture ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+activeTexture self texture
+  = liftIO
+      (js_activeTexture (toWebGLRenderingContextBase self) texture)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"attachShader\"]($2, $3); })"
+        js_attachShader ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> Optional WebGLShader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.attachShader Mozilla WebGLRenderingContextBase.attachShader documentation> 
+attachShader ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
+attachShader self program shader
+  = liftIO
+      (js_attachShader (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         (maybeToOptional shader))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"bindAttribLocation\"]($2, $3,\n$4); })" js_bindAttribLocation ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> GLuint -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindAttribLocation Mozilla WebGLRenderingContextBase.bindAttribLocation documentation> 
+bindAttribLocation ::
+                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                     self -> Maybe WebGLProgram -> GLuint -> name -> m ()
+bindAttribLocation self program index name
+  = liftIO
+      (js_bindAttribLocation (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         index
+         (toJSString name))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindBuffer\"]($2, $3); })"
+        js_bindBuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Optional WebGLBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindBuffer Mozilla WebGLRenderingContextBase.bindBuffer documentation> 
+bindBuffer ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLenum -> Maybe WebGLBuffer -> m ()
+bindBuffer self target buffer
+  = liftIO
+      (js_bindBuffer (toWebGLRenderingContextBase self) target
+         (maybeToOptional buffer))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindFramebuffer\"]($2, $3); })"
+        js_bindFramebuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Optional WebGLFramebuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindFramebuffer Mozilla WebGLRenderingContextBase.bindFramebuffer documentation> 
+bindFramebuffer ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> GLenum -> Maybe WebGLFramebuffer -> m ()
+bindFramebuffer self target framebuffer
+  = liftIO
+      (js_bindFramebuffer (toWebGLRenderingContextBase self) target
+         (maybeToOptional framebuffer))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindRenderbuffer\"]($2, $3); })"
+        js_bindRenderbuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> Optional WebGLRenderbuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindRenderbuffer Mozilla WebGLRenderingContextBase.bindRenderbuffer documentation> 
+bindRenderbuffer ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> GLenum -> Maybe WebGLRenderbuffer -> m ()
+bindRenderbuffer self target renderbuffer
+  = liftIO
+      (js_bindRenderbuffer (toWebGLRenderingContextBase self) target
+         (maybeToOptional renderbuffer))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"bindTexture\"]($2, $3); })"
+        js_bindTexture ::
+        WebGLRenderingContextBase ->
+          GLenum -> Optional WebGLTexture -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bindTexture Mozilla WebGLRenderingContextBase.bindTexture documentation> 
+bindTexture ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> Maybe WebGLTexture -> m ()
+bindTexture self target texture
+  = liftIO
+      (js_bindTexture (toWebGLRenderingContextBase self) target
+         (maybeToOptional texture))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"blendColor\"]($2, $3, $4, $5); })" js_blendColor ::
+        WebGLRenderingContextBase ->
+          GLclampf -> GLclampf -> GLclampf -> GLclampf -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendColor Mozilla WebGLRenderingContextBase.blendColor documentation> 
+blendColor ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
+blendColor self red green blue alpha
+  = liftIO
+      (js_blendColor (toWebGLRenderingContextBase self) red green blue
+         alpha)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"blendEquation\"]($2); })"
+        js_blendEquation :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquation Mozilla WebGLRenderingContextBase.blendEquation documentation> 
+blendEquation ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+blendEquation self mode
+  = liftIO (js_blendEquation (toWebGLRenderingContextBase self) mode)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"blendEquationSeparate\"]($2,\n$3); })" js_blendEquationSeparate
+        :: WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendEquationSeparate Mozilla WebGLRenderingContextBase.blendEquationSeparate documentation> 
+blendEquationSeparate ::
+                      (MonadIO m, IsWebGLRenderingContextBase self) =>
+                        self -> GLenum -> GLenum -> m ()
+blendEquationSeparate self modeRGB modeAlpha
+  = liftIO
+      (js_blendEquationSeparate (toWebGLRenderingContextBase self)
+         modeRGB
+         modeAlpha)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"blendFunc\"]($2, $3); })"
+        js_blendFunc ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFunc Mozilla WebGLRenderingContextBase.blendFunc documentation> 
+blendFunc ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> GLenum -> m ()
+blendFunc self sfactor dfactor
+  = liftIO
+      (js_blendFunc (toWebGLRenderingContextBase self) sfactor dfactor)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"blendFuncSeparate\"]($2, $3,\n$4, $5); })" js_blendFuncSeparate
+        ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.blendFuncSeparate Mozilla WebGLRenderingContextBase.blendFuncSeparate documentation> 
+blendFuncSeparate ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+blendFuncSeparate self srcRGB dstRGB srcAlpha dstAlpha
+  = liftIO
+      (js_blendFuncSeparate (toWebGLRenderingContextBase self) srcRGB
+         dstRGB
+         srcAlpha
+         dstAlpha)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferData ::
+        WebGLRenderingContextBase ->
+          GLenum -> Optional BufferDataSource -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferData ::
+           (MonadIO m, IsWebGLRenderingContextBase self,
+            IsBufferDataSource data') =>
+             self -> GLenum -> Maybe data' -> GLenum -> m ()
+bufferData self target data' usage
+  = liftIO
+      (js_bufferData (toWebGLRenderingContextBase self) target
+         (maybeToOptional (fmap toBufferDataSource data'))
+         usage)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"bufferData\"]($2, $3, $4); })"
+        js_bufferDataPtr ::
+        WebGLRenderingContextBase -> GLenum -> Double -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferData Mozilla WebGLRenderingContextBase.bufferData documentation> 
+bufferDataPtr ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLsizeiptr -> GLenum -> m ()
+bufferDataPtr self target size usage
+  = liftIO
+      (js_bufferDataPtr (toWebGLRenderingContextBase self) target
+         (fromIntegral size)
+         usage)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"bufferSubData\"]($2, $3, $4); })" js_bufferSubData ::
+        WebGLRenderingContextBase ->
+          GLenum -> Double -> Optional BufferDataSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.bufferSubData Mozilla WebGLRenderingContextBase.bufferSubData documentation> 
+bufferSubData ::
+              (MonadIO m, IsWebGLRenderingContextBase self,
+               IsBufferDataSource data') =>
+                self -> GLenum -> GLintptr -> Maybe data' -> m ()
+bufferSubData self target offset data'
+  = liftIO
+      (js_bufferSubData (toWebGLRenderingContextBase self) target
+         (fromIntegral offset)
+         (maybeToOptional (fmap toBufferDataSource data')))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"checkFramebufferStatus\"]($2); })" js_checkFramebufferStatus ::
+        WebGLRenderingContextBase -> GLenum -> IO GLenum
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
+checkFramebufferStatus ::
+                       (MonadIO m, IsWebGLRenderingContextBase self) =>
+                         self -> GLenum -> m GLenum
+checkFramebufferStatus self target
+  = liftIO
+      (js_checkFramebufferStatus (toWebGLRenderingContextBase self)
+         target)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.checkFramebufferStatus Mozilla WebGLRenderingContextBase.checkFramebufferStatus documentation> 
+checkFramebufferStatus_ ::
+                        (MonadIO m, IsWebGLRenderingContextBase self) =>
+                          self -> GLenum -> m ()
+checkFramebufferStatus_ self target
+  = liftIO
+      (void
+         (js_checkFramebufferStatus (toWebGLRenderingContextBase self)
+            target))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clear\"]($2); })" js_clear ::
+        WebGLRenderingContextBase -> GLbitfield -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clear Mozilla WebGLRenderingContextBase.clear documentation> 
+clear ::
+      (MonadIO m, IsWebGLRenderingContextBase self) =>
+        self -> GLbitfield -> m ()
+clear self mask
+  = liftIO (js_clear (toWebGLRenderingContextBase self) mask)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"clearColor\"]($2, $3, $4, $5); })" js_clearColor ::
+        WebGLRenderingContextBase ->
+          GLclampf -> GLclampf -> GLclampf -> GLclampf -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearColor Mozilla WebGLRenderingContextBase.clearColor documentation> 
+clearColor ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> GLclampf -> GLclampf -> m ()
+clearColor self red green blue alpha
+  = liftIO
+      (js_clearColor (toWebGLRenderingContextBase self) red green blue
+         alpha)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearDepth\"]($2); })"
+        js_clearDepth :: WebGLRenderingContextBase -> GLclampf -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearDepth Mozilla WebGLRenderingContextBase.clearDepth documentation> 
+clearDepth ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> m ()
+clearDepth self depth
+  = liftIO (js_clearDepth (toWebGLRenderingContextBase self) depth)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearStencil\"]($2); })"
+        js_clearStencil :: WebGLRenderingContextBase -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.clearStencil Mozilla WebGLRenderingContextBase.clearStencil documentation> 
+clearStencil ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLint -> m ()
+clearStencil self s
+  = liftIO (js_clearStencil (toWebGLRenderingContextBase self) s)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"colorMask\"]($2, $3, $4, $5); })" js_colorMask ::
+        WebGLRenderingContextBase ->
+          GLboolean -> GLboolean -> GLboolean -> GLboolean -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.colorMask Mozilla WebGLRenderingContextBase.colorMask documentation> 
+colorMask ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLboolean -> GLboolean -> GLboolean -> GLboolean -> m ()
+colorMask self red green blue alpha
+  = liftIO
+      (js_colorMask (toWebGLRenderingContextBase self) red green blue
+         alpha)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"compileShader\"]($2); })"
+        js_compileShader ::
+        WebGLRenderingContextBase -> Optional WebGLShader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compileShader Mozilla WebGLRenderingContextBase.compileShader documentation> 
+compileShader ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLShader -> m ()
+compileShader self shader
+  = liftIO
+      (js_compileShader (toWebGLRenderingContextBase self)
+         (maybeToOptional shader))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"compressedTexImage2D\"]($2,\n$3, $4, $5, $6, $7, $8); })"
+        js_compressedTexImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLsizei -> GLsizei -> GLint -> ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexImage2D Mozilla WebGLRenderingContextBase.compressedTexImage2D documentation> 
+compressedTexImage2D ::
+                     (MonadIO m, IsWebGLRenderingContextBase self,
+                      IsArrayBufferView data') =>
+                       self ->
+                         GLenum ->
+                           GLint -> GLenum -> GLsizei -> GLsizei -> GLint -> data' -> m ()
+compressedTexImage2D self target level internalformat width height
+  border data'
+  = liftIO
+      (js_compressedTexImage2D (toWebGLRenderingContextBase self) target
+         level
+         internalformat
+         width
+         height
+         border
+         (toArrayBufferView data'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"compressedTexSubImage2D\"]($2,\n$3, $4, $5, $6, $7, $8, $9); })"
+        js_compressedTexSubImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLsizei -> GLsizei -> GLenum -> ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.compressedTexSubImage2D Mozilla WebGLRenderingContextBase.compressedTexSubImage2D documentation> 
+compressedTexSubImage2D ::
+                        (MonadIO m, IsWebGLRenderingContextBase self,
+                         IsArrayBufferView data') =>
+                          self ->
+                            GLenum ->
+                              GLint ->
+                                GLint -> GLint -> GLsizei -> GLsizei -> GLenum -> data' -> m ()
+compressedTexSubImage2D self target level xoffset yoffset width
+  height format data'
+  = liftIO
+      (js_compressedTexSubImage2D (toWebGLRenderingContextBase self)
+         target
+         level
+         xoffset
+         yoffset
+         width
+         height
+         format
+         (toArrayBufferView data'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9); })"
+        js_copyTexImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexImage2D Mozilla WebGLRenderingContextBase.copyTexImage2D documentation> 
+copyTexImage2D ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self ->
+                   GLenum ->
+                     GLint ->
+                       GLenum -> GLint -> GLint -> GLsizei -> GLsizei -> GLint -> m ()
+copyTexImage2D self target level internalformat x y width height
+  border
+  = liftIO
+      (js_copyTexImage2D (toWebGLRenderingContextBase self) target level
+         internalformat
+         x
+         y
+         width
+         height
+         border)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9) => { return $1[\"copyTexSubImage2D\"]($2, $3,\n$4, $5, $6, $7, $8, $9); })"
+        js_copyTexSubImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.copyTexSubImage2D Mozilla WebGLRenderingContextBase.copyTexSubImage2D documentation> 
+copyTexSubImage2D ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint -> GLint -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+copyTexSubImage2D self target level xoffset yoffset x y width
+  height
+  = liftIO
+      (js_copyTexSubImage2D (toWebGLRenderingContextBase self) target
+         level
+         xoffset
+         yoffset
+         x
+         y
+         width
+         height)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createBuffer\"](); })"
+        js_createBuffer :: WebGLRenderingContextBase -> IO WebGLBuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
+createBuffer ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> m WebGLBuffer
+createBuffer self
+  = liftIO (js_createBuffer (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createBuffer Mozilla WebGLRenderingContextBase.createBuffer documentation> 
+createBuffer_ ::
+              (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+createBuffer_ self
+  = liftIO
+      (void (js_createBuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createFramebuffer\"](); })"
+        js_createFramebuffer ::
+        WebGLRenderingContextBase -> IO WebGLFramebuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
+createFramebuffer ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> m WebGLFramebuffer
+createFramebuffer self
+  = liftIO (js_createFramebuffer (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createFramebuffer Mozilla WebGLRenderingContextBase.createFramebuffer documentation> 
+createFramebuffer_ ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+createFramebuffer_ self
+  = liftIO
+      (void (js_createFramebuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createProgram\"](); })"
+        js_createProgram :: WebGLRenderingContextBase -> IO WebGLProgram
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
+createProgram ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> m WebGLProgram
+createProgram self
+  = liftIO (js_createProgram (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createProgram Mozilla WebGLRenderingContextBase.createProgram documentation> 
+createProgram_ ::
+               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+createProgram_ self
+  = liftIO
+      (void (js_createProgram (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createRenderbuffer\"](); })"
+        js_createRenderbuffer ::
+        WebGLRenderingContextBase -> IO WebGLRenderbuffer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
+createRenderbuffer ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> m WebGLRenderbuffer
+createRenderbuffer self
+  = liftIO (js_createRenderbuffer (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createRenderbuffer Mozilla WebGLRenderingContextBase.createRenderbuffer documentation> 
+createRenderbuffer_ ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+createRenderbuffer_ self
+  = liftIO
+      (void (js_createRenderbuffer (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createShader\"]($2); })"
+        js_createShader ::
+        WebGLRenderingContextBase -> GLenum -> IO WebGLShader
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
+createShader ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m WebGLShader
+createShader self type'
+  = liftIO (js_createShader (toWebGLRenderingContextBase self) type')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createShader Mozilla WebGLRenderingContextBase.createShader documentation> 
+createShader_ ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+createShader_ self type'
+  = liftIO
+      (void (js_createShader (toWebGLRenderingContextBase self) type'))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createTexture\"](); })"
+        js_createTexture :: WebGLRenderingContextBase -> IO WebGLTexture
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
+createTexture ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> m WebGLTexture
+createTexture self
+  = liftIO (js_createTexture (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.createTexture Mozilla WebGLRenderingContextBase.createTexture documentation> 
+createTexture_ ::
+               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+createTexture_ self
+  = liftIO
+      (void (js_createTexture (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"cullFace\"]($2); })" js_cullFace
+        :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.cullFace Mozilla WebGLRenderingContextBase.cullFace documentation> 
+cullFace ::
+         (MonadIO m, IsWebGLRenderingContextBase self) =>
+           self -> GLenum -> m ()
+cullFace self mode
+  = liftIO (js_cullFace (toWebGLRenderingContextBase self) mode)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteBuffer\"]($2); })"
+        js_deleteBuffer ::
+        WebGLRenderingContextBase -> Optional WebGLBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteBuffer Mozilla WebGLRenderingContextBase.deleteBuffer documentation> 
+deleteBuffer ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLBuffer -> m ()
+deleteBuffer self buffer
+  = liftIO
+      (js_deleteBuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional buffer))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteFramebuffer\"]($2); })"
+        js_deleteFramebuffer ::
+        WebGLRenderingContextBase -> Optional WebGLFramebuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteFramebuffer Mozilla WebGLRenderingContextBase.deleteFramebuffer documentation> 
+deleteFramebuffer ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> Maybe WebGLFramebuffer -> m ()
+deleteFramebuffer self framebuffer
+  = liftIO
+      (js_deleteFramebuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional framebuffer))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteProgram\"]($2); })"
+        js_deleteProgram ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteProgram Mozilla WebGLRenderingContextBase.deleteProgram documentation> 
+deleteProgram ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLProgram -> m ()
+deleteProgram self program
+  = liftIO
+      (js_deleteProgram (toWebGLRenderingContextBase self)
+         (maybeToOptional program))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteRenderbuffer\"]($2); })"
+        js_deleteRenderbuffer ::
+        WebGLRenderingContextBase -> Optional WebGLRenderbuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteRenderbuffer Mozilla WebGLRenderingContextBase.deleteRenderbuffer documentation> 
+deleteRenderbuffer ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLRenderbuffer -> m ()
+deleteRenderbuffer self renderbuffer
+  = liftIO
+      (js_deleteRenderbuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional renderbuffer))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteShader\"]($2); })"
+        js_deleteShader ::
+        WebGLRenderingContextBase -> Optional WebGLShader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteShader Mozilla WebGLRenderingContextBase.deleteShader documentation> 
+deleteShader ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLShader -> m ()
+deleteShader self shader
+  = liftIO
+      (js_deleteShader (toWebGLRenderingContextBase self)
+         (maybeToOptional shader))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"deleteTexture\"]($2); })"
+        js_deleteTexture ::
+        WebGLRenderingContextBase -> Optional WebGLTexture -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.deleteTexture Mozilla WebGLRenderingContextBase.deleteTexture documentation> 
+deleteTexture ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLTexture -> m ()
+deleteTexture self texture
+  = liftIO
+      (js_deleteTexture (toWebGLRenderingContextBase self)
+         (maybeToOptional texture))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"depthFunc\"]($2); })"
+        js_depthFunc :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthFunc Mozilla WebGLRenderingContextBase.depthFunc documentation> 
+depthFunc ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m ()
+depthFunc self func
+  = liftIO (js_depthFunc (toWebGLRenderingContextBase self) func)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"depthMask\"]($2); })"
+        js_depthMask :: WebGLRenderingContextBase -> GLboolean -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthMask Mozilla WebGLRenderingContextBase.depthMask documentation> 
+depthMask ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLboolean -> m ()
+depthMask self flag
+  = liftIO (js_depthMask (toWebGLRenderingContextBase self) flag)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"depthRange\"]($2, $3); })"
+        js_depthRange ::
+        WebGLRenderingContextBase -> GLclampf -> GLclampf -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.depthRange Mozilla WebGLRenderingContextBase.depthRange documentation> 
+depthRange ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLclampf -> GLclampf -> m ()
+depthRange self zNear zFar
+  = liftIO
+      (js_depthRange (toWebGLRenderingContextBase self) zNear zFar)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"detachShader\"]($2, $3); })"
+        js_detachShader ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> Optional WebGLShader -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.detachShader Mozilla WebGLRenderingContextBase.detachShader documentation> 
+detachShader ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> Maybe WebGLProgram -> Maybe WebGLShader -> m ()
+detachShader self program shader
+  = liftIO
+      (js_detachShader (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         (maybeToOptional shader))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"disable\"]($2); })" js_disable
+        :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disable Mozilla WebGLRenderingContextBase.disable documentation> 
+disable ::
+        (MonadIO m, IsWebGLRenderingContextBase self) =>
+          self -> GLenum -> m ()
+disable self cap
+  = liftIO (js_disable (toWebGLRenderingContextBase self) cap)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"disableVertexAttribArray\"]($2); })" js_disableVertexAttribArray
+        :: WebGLRenderingContextBase -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.disableVertexAttribArray Mozilla WebGLRenderingContextBase.disableVertexAttribArray documentation> 
+disableVertexAttribArray ::
+                         (MonadIO m, IsWebGLRenderingContextBase self) =>
+                           self -> GLuint -> m ()
+disableVertexAttribArray self index
+  = liftIO
+      (js_disableVertexAttribArray (toWebGLRenderingContextBase self)
+         index)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"drawArrays\"]($2, $3, $4); })"
+        js_drawArrays ::
+        WebGLRenderingContextBase -> GLenum -> GLint -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawArrays Mozilla WebGLRenderingContextBase.drawArrays documentation> 
+drawArrays ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLenum -> GLint -> GLsizei -> m ()
+drawArrays self mode first count
+  = liftIO
+      (js_drawArrays (toWebGLRenderingContextBase self) mode first count)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"drawElements\"]($2, $3, $4,\n$5); })" js_drawElements ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLsizei -> GLenum -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawElements Mozilla WebGLRenderingContextBase.drawElements documentation> 
+drawElements ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> GLsizei -> GLenum -> GLintptr -> m ()
+drawElements self mode count type' offset
+  = liftIO
+      (js_drawElements (toWebGLRenderingContextBase self) mode count
+         type'
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"enable\"]($2); })" js_enable ::
+        WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enable Mozilla WebGLRenderingContextBase.enable documentation> 
+enable ::
+       (MonadIO m, IsWebGLRenderingContextBase self) =>
+         self -> GLenum -> m ()
+enable self cap
+  = liftIO (js_enable (toWebGLRenderingContextBase self) cap)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"enableVertexAttribArray\"]($2); })" js_enableVertexAttribArray ::
+        WebGLRenderingContextBase -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.enableVertexAttribArray Mozilla WebGLRenderingContextBase.enableVertexAttribArray documentation> 
+enableVertexAttribArray ::
+                        (MonadIO m, IsWebGLRenderingContextBase self) =>
+                          self -> GLuint -> m ()
+enableVertexAttribArray self index
+  = liftIO
+      (js_enableVertexAttribArray (toWebGLRenderingContextBase self)
+         index)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"finish\"](); })" js_finish ::
+        WebGLRenderingContextBase -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.finish Mozilla WebGLRenderingContextBase.finish documentation> 
+finish ::
+       (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+finish self = liftIO (js_finish (toWebGLRenderingContextBase self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"flush\"](); })" js_flush ::
+        WebGLRenderingContextBase -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.flush Mozilla WebGLRenderingContextBase.flush documentation> 
+flush ::
+      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+flush self = liftIO (js_flush (toWebGLRenderingContextBase self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"framebufferRenderbuffer\"]($2,\n$3, $4, $5); })"
+        js_framebufferRenderbuffer ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> Optional WebGLRenderbuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferRenderbuffer Mozilla WebGLRenderingContextBase.framebufferRenderbuffer documentation> 
+framebufferRenderbuffer ::
+                        (MonadIO m, IsWebGLRenderingContextBase self) =>
+                          self ->
+                            GLenum -> GLenum -> GLenum -> Maybe WebGLRenderbuffer -> m ()
+framebufferRenderbuffer self target attachment renderbuffertarget
+  renderbuffer
+  = liftIO
+      (js_framebufferRenderbuffer (toWebGLRenderingContextBase self)
+         target
+         attachment
+         renderbuffertarget
+         (maybeToOptional renderbuffer))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"framebufferTexture2D\"]($2,\n$3, $4, $5, $6); })"
+        js_framebufferTexture2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLenum -> GLenum -> Optional WebGLTexture -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.framebufferTexture2D Mozilla WebGLRenderingContextBase.framebufferTexture2D documentation> 
+framebufferTexture2D ::
+                     (MonadIO m, IsWebGLRenderingContextBase self) =>
+                       self ->
+                         GLenum -> GLenum -> GLenum -> Maybe WebGLTexture -> GLint -> m ()
+framebufferTexture2D self target attachment textarget texture level
+  = liftIO
+      (js_framebufferTexture2D (toWebGLRenderingContextBase self) target
+         attachment
+         textarget
+         (maybeToOptional texture)
+         level)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"frontFace\"]($2); })"
+        js_frontFace :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.frontFace Mozilla WebGLRenderingContextBase.frontFace documentation> 
+frontFace ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m ()
+frontFace self mode
+  = liftIO (js_frontFace (toWebGLRenderingContextBase self) mode)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"generateMipmap\"]($2); })"
+        js_generateMipmap :: WebGLRenderingContextBase -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.generateMipmap Mozilla WebGLRenderingContextBase.generateMipmap documentation> 
+generateMipmap ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLenum -> m ()
+generateMipmap self target
+  = liftIO
+      (js_generateMipmap (toWebGLRenderingContextBase self) target)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getActiveAttrib\"]($2, $3); })"
+        js_getActiveAttrib ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
+getActiveAttrib ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getActiveAttrib self program index
+  = liftIO
+      (js_getActiveAttrib (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveAttrib Mozilla WebGLRenderingContextBase.getActiveAttrib documentation> 
+getActiveAttrib_ ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> Maybe WebGLProgram -> GLuint -> m ()
+getActiveAttrib_ self program index
+  = liftIO
+      (void
+         (js_getActiveAttrib (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            index))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getActiveUniform\"]($2, $3); })"
+        js_getActiveUniform ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> GLuint -> IO WebGLActiveInfo
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
+getActiveUniform ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> Maybe WebGLProgram -> GLuint -> m WebGLActiveInfo
+getActiveUniform self program index
+  = liftIO
+      (js_getActiveUniform (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getActiveUniform Mozilla WebGLRenderingContextBase.getActiveUniform documentation> 
+getActiveUniform_ ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> Maybe WebGLProgram -> GLuint -> m ()
+getActiveUniform_ self program index
+  = liftIO
+      (void
+         (js_getActiveUniform (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            index))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getAttachedShaders\"]($2); })"
+        js_getAttachedShaders ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
+getAttachedShaders ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLProgram -> m (Maybe [WebGLShader])
+getAttachedShaders self program
+  = liftIO
+      ((js_getAttachedShaders (toWebGLRenderingContextBase self)
+          (maybeToOptional program))
+         >>= fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttachedShaders Mozilla WebGLRenderingContextBase.getAttachedShaders documentation> 
+getAttachedShaders_ ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> Maybe WebGLProgram -> m ()
+getAttachedShaders_ self program
+  = liftIO
+      (void
+         (js_getAttachedShaders (toWebGLRenderingContextBase self)
+            (maybeToOptional program)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getAttribLocation\"]($2, $3); })" js_getAttribLocation ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> JSString -> IO GLint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
+getAttribLocation ::
+                  (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                    self -> Maybe WebGLProgram -> name -> m GLint
+getAttribLocation self program name
+  = liftIO
+      (js_getAttribLocation (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getAttribLocation Mozilla WebGLRenderingContextBase.getAttribLocation documentation> 
+getAttribLocation_ ::
+                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                     self -> Maybe WebGLProgram -> name -> m ()
+getAttribLocation_ self program name
+  = liftIO
+      (void
+         (js_getAttribLocation (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            (toJSString name)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getBufferParameter\"]($2, $3); })" js_getBufferParameter ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
+getBufferParameter ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> GLenum -> GLenum -> m JSVal
+getBufferParameter self target pname
+  = liftIO
+      (js_getBufferParameter (toWebGLRenderingContextBase self) target
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getBufferParameter Mozilla WebGLRenderingContextBase.getBufferParameter documentation> 
+getBufferParameter_ ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLenum -> m ()
+getBufferParameter_ self target pname
+  = liftIO
+      (void
+         (js_getBufferParameter (toWebGLRenderingContextBase self) target
+            pname))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getContextAttributes\"](); })"
+        js_getContextAttributes ::
+        WebGLRenderingContextBase -> IO (Nullable WebGLContextAttributes)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributes ::
+                     (MonadIO m, IsWebGLRenderingContextBase self) =>
+                       self -> m (Maybe WebGLContextAttributes)
+getContextAttributes self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getContextAttributes (toWebGLRenderingContextBase self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributes_ ::
+                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+getContextAttributes_ self
+  = liftIO
+      (void (js_getContextAttributes (toWebGLRenderingContextBase self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributesUnsafe ::
+                           (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack) =>
+                             self -> m WebGLContextAttributes
+getContextAttributesUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getContextAttributes (toWebGLRenderingContextBase self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getContextAttributes Mozilla WebGLRenderingContextBase.getContextAttributes documentation> 
+getContextAttributesUnchecked ::
+                              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                                self -> m WebGLContextAttributes
+getContextAttributesUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getContextAttributes (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getError\"](); })" js_getError
+        :: WebGLRenderingContextBase -> IO GLenum
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
+getError ::
+         (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLenum
+getError self
+  = liftIO (js_getError (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getError Mozilla WebGLRenderingContextBase.getError documentation> 
+getError_ ::
+          (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+getError_ self
+  = liftIO (void (js_getError (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSupportedExtensions\"](); })"
+        js_getSupportedExtensions :: WebGLRenderingContextBase -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
+getSupportedExtensions ::
+                       (MonadIO m, IsWebGLRenderingContextBase self,
+                        FromJSString result) =>
+                         self -> m (Maybe [result])
+getSupportedExtensions self
+  = liftIO
+      ((js_getSupportedExtensions (toWebGLRenderingContextBase self)) >>=
+         fromJSValUnchecked)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getSupportedExtensions Mozilla WebGLRenderingContextBase.getSupportedExtensions documentation> 
+getSupportedExtensions_ ::
+                        (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+getSupportedExtensions_ self
+  = liftIO
+      (void
+         (js_getSupportedExtensions (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getExtension\"]($2); })"
+        js_getExtension ::
+        WebGLRenderingContextBase -> JSString -> IO (Nullable GObject)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
+getExtension ::
+             (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+               self -> name -> m (Maybe GObject)
+getExtension self name
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getExtension (toWebGLRenderingContextBase self)
+            (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
+getExtension_ ::
+              (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                self -> name -> m ()
+getExtension_ self name
+  = liftIO
+      (void
+         (js_getExtension (toWebGLRenderingContextBase self)
+            (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
+getExtensionUnsafe ::
+                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name,
+                    HasCallStack) =>
+                     self -> name -> m GObject
+getExtensionUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getExtension (toWebGLRenderingContextBase self)
+             (toJSString name)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getExtension Mozilla WebGLRenderingContextBase.getExtension documentation> 
+getExtensionUnchecked ::
+                      (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                        self -> name -> m GObject
+getExtensionUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getExtension (toWebGLRenderingContextBase self)
+            (toJSString name)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"getFramebufferAttachmentParameter\"]($2,\n$3, $4); })"
+        js_getFramebufferAttachmentParameter ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter ::
+                                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                                    self -> GLenum -> GLenum -> GLenum -> m JSVal
+getFramebufferAttachmentParameter self target attachment pname
+  = liftIO
+      (js_getFramebufferAttachmentParameter
+         (toWebGLRenderingContextBase self)
+         target
+         attachment
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getFramebufferAttachmentParameter Mozilla WebGLRenderingContextBase.getFramebufferAttachmentParameter documentation> 
+getFramebufferAttachmentParameter_ ::
+                                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                                     self -> GLenum -> GLenum -> GLenum -> m ()
+getFramebufferAttachmentParameter_ self target attachment pname
+  = liftIO
+      (void
+         (js_getFramebufferAttachmentParameter
+            (toWebGLRenderingContextBase self)
+            target
+            attachment
+            pname))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getParameter\"]($2); })"
+        js_getParameter :: WebGLRenderingContextBase -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
+getParameter ::
+             (MonadIO m, IsWebGLRenderingContextBase self) =>
+               self -> GLenum -> m JSVal
+getParameter self pname
+  = liftIO (js_getParameter (toWebGLRenderingContextBase self) pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getParameter Mozilla WebGLRenderingContextBase.getParameter documentation> 
+getParameter_ ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> m ()
+getParameter_ self pname
+  = liftIO
+      (void (js_getParameter (toWebGLRenderingContextBase self) pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getProgramParameter\"]($2,\n$3); })" js_getProgramParameter ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
+getProgramParameter ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> Maybe WebGLProgram -> GLenum -> m JSVal
+getProgramParameter self program pname
+  = liftIO
+      (js_getProgramParameter (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramParameter Mozilla WebGLRenderingContextBase.getProgramParameter documentation> 
+getProgramParameter_ ::
+                     (MonadIO m, IsWebGLRenderingContextBase self) =>
+                       self -> Maybe WebGLProgram -> GLenum -> m ()
+getProgramParameter_ self program pname
+  = liftIO
+      (void
+         (js_getProgramParameter (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            pname))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getProgramInfoLog\"]($2); })"
+        js_getProgramInfoLog ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLog ::
+                  (MonadIO m, IsWebGLRenderingContextBase self,
+                   FromJSString result) =>
+                    self -> Maybe WebGLProgram -> m (Maybe result)
+getProgramInfoLog self program
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional program)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLog_ ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLProgram -> m ()
+getProgramInfoLog_ self program
+  = liftIO
+      (void
+         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional program)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLogUnsafe ::
+                        (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
+                         FromJSString result) =>
+                          self -> Maybe WebGLProgram -> m result
+getProgramInfoLogUnsafe self program
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getProgramInfoLog (toWebGLRenderingContextBase self)
+             (maybeToOptional program)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getProgramInfoLog Mozilla WebGLRenderingContextBase.getProgramInfoLog documentation> 
+getProgramInfoLogUnchecked ::
+                           (MonadIO m, IsWebGLRenderingContextBase self,
+                            FromJSString result) =>
+                             self -> Maybe WebGLProgram -> m result
+getProgramInfoLogUnchecked self program
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getProgramInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional program)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getRenderbufferParameter\"]($2,\n$3); })"
+        js_getRenderbufferParameter ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
+getRenderbufferParameter ::
+                         (MonadIO m, IsWebGLRenderingContextBase self) =>
+                           self -> GLenum -> GLenum -> m JSVal
+getRenderbufferParameter self target pname
+  = liftIO
+      (js_getRenderbufferParameter (toWebGLRenderingContextBase self)
+         target
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getRenderbufferParameter Mozilla WebGLRenderingContextBase.getRenderbufferParameter documentation> 
+getRenderbufferParameter_ ::
+                          (MonadIO m, IsWebGLRenderingContextBase self) =>
+                            self -> GLenum -> GLenum -> m ()
+getRenderbufferParameter_ self target pname
+  = liftIO
+      (void
+         (js_getRenderbufferParameter (toWebGLRenderingContextBase self)
+            target
+            pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getShaderParameter\"]($2, $3); })" js_getShaderParameter ::
+        WebGLRenderingContextBase ->
+          Optional WebGLShader -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
+getShaderParameter ::
+                   (MonadIO m, IsWebGLRenderingContextBase self) =>
+                     self -> Maybe WebGLShader -> GLenum -> m JSVal
+getShaderParameter self shader pname
+  = liftIO
+      (js_getShaderParameter (toWebGLRenderingContextBase self)
+         (maybeToOptional shader)
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderParameter Mozilla WebGLRenderingContextBase.getShaderParameter documentation> 
+getShaderParameter_ ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> Maybe WebGLShader -> GLenum -> m ()
+getShaderParameter_ self shader pname
+  = liftIO
+      (void
+         (js_getShaderParameter (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)
+            pname))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getShaderInfoLog\"]($2); })"
+        js_getShaderInfoLog ::
+        WebGLRenderingContextBase ->
+          Optional WebGLShader -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLog ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  FromJSString result) =>
+                   self -> Maybe WebGLShader -> m (Maybe result)
+getShaderInfoLog self shader
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLog_ ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> Maybe WebGLShader -> m ()
+getShaderInfoLog_ self shader
+  = liftIO
+      (void
+         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLogUnsafe ::
+                       (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
+                        FromJSString result) =>
+                         self -> Maybe WebGLShader -> m result
+getShaderInfoLogUnsafe self shader
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getShaderInfoLog (toWebGLRenderingContextBase self)
+             (maybeToOptional shader)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderInfoLog Mozilla WebGLRenderingContextBase.getShaderInfoLog documentation> 
+getShaderInfoLogUnchecked ::
+                          (MonadIO m, IsWebGLRenderingContextBase self,
+                           FromJSString result) =>
+                            self -> Maybe WebGLShader -> m result
+getShaderInfoLogUnchecked self shader
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getShaderInfoLog (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getShaderPrecisionFormat\"]($2,\n$3); })"
+        js_getShaderPrecisionFormat ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> IO WebGLShaderPrecisionFormat
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
+getShaderPrecisionFormat ::
+                         (MonadIO m, IsWebGLRenderingContextBase self) =>
+                           self -> GLenum -> GLenum -> m WebGLShaderPrecisionFormat
+getShaderPrecisionFormat self shadertype precisiontype
+  = liftIO
+      (js_getShaderPrecisionFormat (toWebGLRenderingContextBase self)
+         shadertype
+         precisiontype)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderPrecisionFormat Mozilla WebGLRenderingContextBase.getShaderPrecisionFormat documentation> 
+getShaderPrecisionFormat_ ::
+                          (MonadIO m, IsWebGLRenderingContextBase self) =>
+                            self -> GLenum -> GLenum -> m ()
+getShaderPrecisionFormat_ self shadertype precisiontype
+  = liftIO
+      (void
+         (js_getShaderPrecisionFormat (toWebGLRenderingContextBase self)
+            shadertype
+            precisiontype))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getShaderSource\"]($2); })"
+        js_getShaderSource ::
+        WebGLRenderingContextBase ->
+          Optional WebGLShader -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSource ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 FromJSString result) =>
+                  self -> Maybe WebGLShader -> m (Maybe result)
+getShaderSource self shader
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getShaderSource (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSource_ ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> Maybe WebGLShader -> m ()
+getShaderSource_ self shader
+  = liftIO
+      (void
+         (js_getShaderSource (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSourceUnsafe ::
+                      (MonadIO m, IsWebGLRenderingContextBase self, HasCallStack,
+                       FromJSString result) =>
+                        self -> Maybe WebGLShader -> m result
+getShaderSourceUnsafe self shader
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getShaderSource (toWebGLRenderingContextBase self)
+             (maybeToOptional shader)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getShaderSource Mozilla WebGLRenderingContextBase.getShaderSource documentation> 
+getShaderSourceUnchecked ::
+                         (MonadIO m, IsWebGLRenderingContextBase self,
+                          FromJSString result) =>
+                           self -> Maybe WebGLShader -> m result
+getShaderSourceUnchecked self shader
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getShaderSource (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getTexParameter\"]($2, $3); })"
+        js_getTexParameter ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
+getTexParameter ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> GLenum -> GLenum -> m JSVal
+getTexParameter self target pname
+  = liftIO
+      (js_getTexParameter (toWebGLRenderingContextBase self) target
+         pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getTexParameter Mozilla WebGLRenderingContextBase.getTexParameter documentation> 
+getTexParameter_ ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> GLenum -> GLenum -> m ()
+getTexParameter_ self target pname
+  = liftIO
+      (void
+         (js_getTexParameter (toWebGLRenderingContextBase self) target
+            pname))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getUniform\"]($2, $3); })"
+        js_getUniform ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> Optional WebGLUniformLocation -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
+getUniform ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m JSVal
+getUniform self program location
+  = liftIO
+      (js_getUniform (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         (maybeToOptional location))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniform Mozilla WebGLRenderingContextBase.getUniform documentation> 
+getUniform_ ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> Maybe WebGLProgram -> Maybe WebGLUniformLocation -> m ()
+getUniform_ self program location
+  = liftIO
+      (void
+         (js_getUniform (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            (maybeToOptional location)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getUniformLocation\"]($2, $3); })" js_getUniformLocation ::
+        WebGLRenderingContextBase ->
+          Optional WebGLProgram -> JSString -> IO WebGLUniformLocation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
+getUniformLocation ::
+                   (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                     self -> Maybe WebGLProgram -> name -> m WebGLUniformLocation
+getUniformLocation self program name
+  = liftIO
+      (js_getUniformLocation (toWebGLRenderingContextBase self)
+         (maybeToOptional program)
+         (toJSString name))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getUniformLocation Mozilla WebGLRenderingContextBase.getUniformLocation documentation> 
+getUniformLocation_ ::
+                    (MonadIO m, IsWebGLRenderingContextBase self, ToJSString name) =>
+                      self -> Maybe WebGLProgram -> name -> m ()
+getUniformLocation_ self program name
+  = liftIO
+      (void
+         (js_getUniformLocation (toWebGLRenderingContextBase self)
+            (maybeToOptional program)
+            (toJSString name)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getVertexAttrib\"]($2, $3); })"
+        js_getVertexAttrib ::
+        WebGLRenderingContextBase -> GLuint -> GLenum -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
+getVertexAttrib ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> GLuint -> GLenum -> m JSVal
+getVertexAttrib self index pname
+  = liftIO
+      (js_getVertexAttrib (toWebGLRenderingContextBase self) index pname)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttrib Mozilla WebGLRenderingContextBase.getVertexAttrib documentation> 
+getVertexAttrib_ ::
+                 (MonadIO m, IsWebGLRenderingContextBase self) =>
+                   self -> GLuint -> GLenum -> m ()
+getVertexAttrib_ self index pname
+  = liftIO
+      (void
+         (js_getVertexAttrib (toWebGLRenderingContextBase self) index
+            pname))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getVertexAttribOffset\"]($2,\n$3); })" js_getVertexAttribOffset
+        :: WebGLRenderingContextBase -> GLuint -> GLenum -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
+getVertexAttribOffset ::
+                      (MonadIO m, IsWebGLRenderingContextBase self) =>
+                        self -> GLuint -> GLenum -> m GLsizeiptr
+getVertexAttribOffset self index pname
+  = liftIO
+      (round <$>
+         (js_getVertexAttribOffset (toWebGLRenderingContextBase self) index
+            pname))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.getVertexAttribOffset Mozilla WebGLRenderingContextBase.getVertexAttribOffset documentation> 
+getVertexAttribOffset_ ::
+                       (MonadIO m, IsWebGLRenderingContextBase self) =>
+                         self -> GLuint -> GLenum -> m ()
+getVertexAttribOffset_ self index pname
+  = liftIO
+      (void
+         (js_getVertexAttribOffset (toWebGLRenderingContextBase self) index
+            pname))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"hint\"]($2, $3); })" js_hint ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.hint Mozilla WebGLRenderingContextBase.hint documentation> 
+hint ::
+     (MonadIO m, IsWebGLRenderingContextBase self) =>
+       self -> GLenum -> GLenum -> m ()
+hint self target mode
+  = liftIO (js_hint (toWebGLRenderingContextBase self) target mode)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isBuffer\"]($2); })" js_isBuffer
+        ::
+        WebGLRenderingContextBase -> Optional WebGLBuffer -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
+isBuffer ::
+         (MonadIO m, IsWebGLRenderingContextBase self) =>
+           self -> Maybe WebGLBuffer -> m GLboolean
+isBuffer self buffer
+  = liftIO
+      (js_isBuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional buffer))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isBuffer Mozilla WebGLRenderingContextBase.isBuffer documentation> 
+isBuffer_ ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLBuffer -> m ()
+isBuffer_ self buffer
+  = liftIO
+      (void
+         (js_isBuffer (toWebGLRenderingContextBase self)
+            (maybeToOptional buffer)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"isContextLost\"](); })"
+        js_isContextLost :: WebGLRenderingContextBase -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
+isContextLost ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> m GLboolean
+isContextLost self
+  = liftIO (js_isContextLost (toWebGLRenderingContextBase self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isContextLost Mozilla WebGLRenderingContextBase.isContextLost documentation> 
+isContextLost_ ::
+               (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+isContextLost_ self
+  = liftIO
+      (void (js_isContextLost (toWebGLRenderingContextBase self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isEnabled\"]($2); })"
+        js_isEnabled :: WebGLRenderingContextBase -> GLenum -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
+isEnabled ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> m GLboolean
+isEnabled self cap
+  = liftIO (js_isEnabled (toWebGLRenderingContextBase self) cap)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isEnabled Mozilla WebGLRenderingContextBase.isEnabled documentation> 
+isEnabled_ ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> GLenum -> m ()
+isEnabled_ self cap
+  = liftIO
+      (void (js_isEnabled (toWebGLRenderingContextBase self) cap))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isFramebuffer\"]($2); })"
+        js_isFramebuffer ::
+        WebGLRenderingContextBase ->
+          Optional WebGLFramebuffer -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
+isFramebuffer ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> Maybe WebGLFramebuffer -> m GLboolean
+isFramebuffer self framebuffer
+  = liftIO
+      (js_isFramebuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional framebuffer))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isFramebuffer Mozilla WebGLRenderingContextBase.isFramebuffer documentation> 
+isFramebuffer_ ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> Maybe WebGLFramebuffer -> m ()
+isFramebuffer_ self framebuffer
+  = liftIO
+      (void
+         (js_isFramebuffer (toWebGLRenderingContextBase self)
+            (maybeToOptional framebuffer)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isProgram\"]($2); })"
+        js_isProgram ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
+isProgram ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLProgram -> m GLboolean
+isProgram self program
+  = liftIO
+      (js_isProgram (toWebGLRenderingContextBase self)
+         (maybeToOptional program))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isProgram Mozilla WebGLRenderingContextBase.isProgram documentation> 
+isProgram_ ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLProgram -> m ()
+isProgram_ self program
+  = liftIO
+      (void
+         (js_isProgram (toWebGLRenderingContextBase self)
+            (maybeToOptional program)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isRenderbuffer\"]($2); })"
+        js_isRenderbuffer ::
+        WebGLRenderingContextBase ->
+          Optional WebGLRenderbuffer -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
+isRenderbuffer ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> Maybe WebGLRenderbuffer -> m GLboolean
+isRenderbuffer self renderbuffer
+  = liftIO
+      (js_isRenderbuffer (toWebGLRenderingContextBase self)
+         (maybeToOptional renderbuffer))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isRenderbuffer Mozilla WebGLRenderingContextBase.isRenderbuffer documentation> 
+isRenderbuffer_ ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> Maybe WebGLRenderbuffer -> m ()
+isRenderbuffer_ self renderbuffer
+  = liftIO
+      (void
+         (js_isRenderbuffer (toWebGLRenderingContextBase self)
+            (maybeToOptional renderbuffer)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isShader\"]($2); })" js_isShader
+        ::
+        WebGLRenderingContextBase -> Optional WebGLShader -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
+isShader ::
+         (MonadIO m, IsWebGLRenderingContextBase self) =>
+           self -> Maybe WebGLShader -> m GLboolean
+isShader self shader
+  = liftIO
+      (js_isShader (toWebGLRenderingContextBase self)
+         (maybeToOptional shader))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isShader Mozilla WebGLRenderingContextBase.isShader documentation> 
+isShader_ ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLShader -> m ()
+isShader_ self shader
+  = liftIO
+      (void
+         (js_isShader (toWebGLRenderingContextBase self)
+            (maybeToOptional shader)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"isTexture\"]($2); })"
+        js_isTexture ::
+        WebGLRenderingContextBase -> Optional WebGLTexture -> IO GLboolean
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
+isTexture ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLTexture -> m GLboolean
+isTexture self texture
+  = liftIO
+      (js_isTexture (toWebGLRenderingContextBase self)
+         (maybeToOptional texture))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.isTexture Mozilla WebGLRenderingContextBase.isTexture documentation> 
+isTexture_ ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLTexture -> m ()
+isTexture_ self texture
+  = liftIO
+      (void
+         (js_isTexture (toWebGLRenderingContextBase self)
+            (maybeToOptional texture)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"lineWidth\"]($2); })"
+        js_lineWidth :: WebGLRenderingContextBase -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.lineWidth Mozilla WebGLRenderingContextBase.lineWidth documentation> 
+lineWidth ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLfloat -> m ()
+lineWidth self width
+  = liftIO (js_lineWidth (toWebGLRenderingContextBase self) width)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"linkProgram\"]($2); })"
+        js_linkProgram ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.linkProgram Mozilla WebGLRenderingContextBase.linkProgram documentation> 
+linkProgram ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> Maybe WebGLProgram -> m ()
+linkProgram self program
+  = liftIO
+      (js_linkProgram (toWebGLRenderingContextBase self)
+         (maybeToOptional program))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"pixelStorei\"]($2, $3); })"
+        js_pixelStorei ::
+        WebGLRenderingContextBase -> GLenum -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.pixelStorei Mozilla WebGLRenderingContextBase.pixelStorei documentation> 
+pixelStorei ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> GLint -> m ()
+pixelStorei self pname param
+  = liftIO
+      (js_pixelStorei (toWebGLRenderingContextBase self) pname param)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"polygonOffset\"]($2, $3); })"
+        js_polygonOffset ::
+        WebGLRenderingContextBase -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.polygonOffset Mozilla WebGLRenderingContextBase.polygonOffset documentation> 
+polygonOffset ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLfloat -> GLfloat -> m ()
+polygonOffset self factor units
+  = liftIO
+      (js_polygonOffset (toWebGLRenderingContextBase self) factor units)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"readPixels\"]($2, $3, $4, $5,\n$6, $7, $8); })" js_readPixels ::
+        WebGLRenderingContextBase ->
+          GLint ->
+            GLint ->
+              GLsizei -> GLsizei -> GLenum -> GLenum -> ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.readPixels Mozilla WebGLRenderingContextBase.readPixels documentation> 
+readPixels ::
+           (MonadIO m, IsWebGLRenderingContextBase self,
+            IsArrayBufferView pixels) =>
+             self ->
+               GLint ->
+                 GLint -> GLsizei -> GLsizei -> GLenum -> GLenum -> pixels -> m ()
+readPixels self x y width height format type' pixels
+  = liftIO
+      (js_readPixels (toWebGLRenderingContextBase self) x y width height
+         format
+         type'
+         (toArrayBufferView pixels))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"releaseShaderCompiler\"](); })"
+        js_releaseShaderCompiler :: WebGLRenderingContextBase -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.releaseShaderCompiler Mozilla WebGLRenderingContextBase.releaseShaderCompiler documentation> 
+releaseShaderCompiler ::
+                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m ()
+releaseShaderCompiler self
+  = liftIO
+      (js_releaseShaderCompiler (toWebGLRenderingContextBase self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"renderbufferStorage\"]($2,\n$3, $4, $5); })"
+        js_renderbufferStorage ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.renderbufferStorage Mozilla WebGLRenderingContextBase.renderbufferStorage documentation> 
+renderbufferStorage ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLenum -> GLsizei -> GLsizei -> m ()
+renderbufferStorage self target internalformat width height
+  = liftIO
+      (js_renderbufferStorage (toWebGLRenderingContextBase self) target
+         internalformat
+         width
+         height)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"sampleCoverage\"]($2, $3); })"
+        js_sampleCoverage ::
+        WebGLRenderingContextBase -> GLclampf -> GLboolean -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.sampleCoverage Mozilla WebGLRenderingContextBase.sampleCoverage documentation> 
+sampleCoverage ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLclampf -> GLboolean -> m ()
+sampleCoverage self value invert
+  = liftIO
+      (js_sampleCoverage (toWebGLRenderingContextBase self) value invert)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"scissor\"]($2, $3, $4, $5); })"
+        js_scissor ::
+        WebGLRenderingContextBase ->
+          GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.scissor Mozilla WebGLRenderingContextBase.scissor documentation> 
+scissor ::
+        (MonadIO m, IsWebGLRenderingContextBase self) =>
+          self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+scissor self x y width height
+  = liftIO
+      (js_scissor (toWebGLRenderingContextBase self) x y width height)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"shaderSource\"]($2, $3); })"
+        js_shaderSource ::
+        WebGLRenderingContextBase ->
+          Optional WebGLShader -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.shaderSource Mozilla WebGLRenderingContextBase.shaderSource documentation> 
+shaderSource ::
+             (MonadIO m, IsWebGLRenderingContextBase self, ToJSString string) =>
+               self -> Maybe WebGLShader -> string -> m ()
+shaderSource self shader string
+  = liftIO
+      (js_shaderSource (toWebGLRenderingContextBase self)
+         (maybeToOptional shader)
+         (toJSString string))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"stencilFunc\"]($2, $3, $4); })"
+        js_stencilFunc ::
+        WebGLRenderingContextBase -> GLenum -> GLint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFunc Mozilla WebGLRenderingContextBase.stencilFunc documentation> 
+stencilFunc ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> GLenum -> GLint -> GLuint -> m ()
+stencilFunc self func ref mask
+  = liftIO
+      (js_stencilFunc (toWebGLRenderingContextBase self) func ref mask)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"stencilFuncSeparate\"]($2,\n$3, $4, $5); })"
+        js_stencilFuncSeparate ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLint -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilFuncSeparate Mozilla WebGLRenderingContextBase.stencilFuncSeparate documentation> 
+stencilFuncSeparate ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLenum -> GLint -> GLuint -> m ()
+stencilFuncSeparate self face func ref mask
+  = liftIO
+      (js_stencilFuncSeparate (toWebGLRenderingContextBase self) face
+         func
+         ref
+         mask)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"stencilMask\"]($2); })"
+        js_stencilMask :: WebGLRenderingContextBase -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMask Mozilla WebGLRenderingContextBase.stencilMask documentation> 
+stencilMask ::
+            (MonadIO m, IsWebGLRenderingContextBase self) =>
+              self -> GLuint -> m ()
+stencilMask self mask
+  = liftIO (js_stencilMask (toWebGLRenderingContextBase self) mask)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"stencilMaskSeparate\"]($2,\n$3); })" js_stencilMaskSeparate ::
+        WebGLRenderingContextBase -> GLenum -> GLuint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilMaskSeparate Mozilla WebGLRenderingContextBase.stencilMaskSeparate documentation> 
+stencilMaskSeparate ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self -> GLenum -> GLuint -> m ()
+stencilMaskSeparate self face mask
+  = liftIO
+      (js_stencilMaskSeparate (toWebGLRenderingContextBase self) face
+         mask)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"stencilOp\"]($2, $3, $4); })"
+        js_stencilOp ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOp Mozilla WebGLRenderingContextBase.stencilOp documentation> 
+stencilOp ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> GLenum -> GLenum -> GLenum -> m ()
+stencilOp self fail zfail zpass
+  = liftIO
+      (js_stencilOp (toWebGLRenderingContextBase self) fail zfail zpass)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"stencilOpSeparate\"]($2, $3,\n$4, $5); })" js_stencilOpSeparate
+        ::
+        WebGLRenderingContextBase ->
+          GLenum -> GLenum -> GLenum -> GLenum -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.stencilOpSeparate Mozilla WebGLRenderingContextBase.stencilOpSeparate documentation> 
+stencilOpSeparate ::
+                  (MonadIO m, IsWebGLRenderingContextBase self) =>
+                    self -> GLenum -> GLenum -> GLenum -> GLenum -> m ()
+stencilOpSeparate self face fail zfail zpass
+  = liftIO
+      (js_stencilOpSeparate (toWebGLRenderingContextBase self) face fail
+         zfail
+         zpass)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"texParameterf\"]($2, $3, $4); })" js_texParameterf ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameterf Mozilla WebGLRenderingContextBase.texParameterf documentation> 
+texParameterf ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLenum -> GLfloat -> m ()
+texParameterf self target pname param
+  = liftIO
+      (js_texParameterf (toWebGLRenderingContextBase self) target pname
+         param)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"texParameteri\"]($2, $3, $4); })" js_texParameteri ::
+        WebGLRenderingContextBase -> GLenum -> GLenum -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texParameteri Mozilla WebGLRenderingContextBase.texParameteri documentation> 
+texParameteri ::
+              (MonadIO m, IsWebGLRenderingContextBase self) =>
+                self -> GLenum -> GLenum -> GLint -> m ()
+texParameteri self target pname param
+  = liftIO
+      (js_texParameteri (toWebGLRenderingContextBase self) target pname
+         param)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7, $8, $9, $10); })"
+        js_texImage2DView ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum ->
+                GLsizei ->
+                  GLsizei ->
+                    GLint -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2DView ::
+               (MonadIO m, IsWebGLRenderingContextBase self,
+                IsArrayBufferView pixels) =>
+                 self ->
+                   GLenum ->
+                     GLint ->
+                       GLenum ->
+                         GLsizei ->
+                           GLsizei -> GLint -> GLenum -> GLenum -> Maybe pixels -> m ()
+texImage2DView self target level internalformat width height border
+  format type' pixels
+  = liftIO
+      (js_texImage2DView (toWebGLRenderingContextBase self) target level
+         internalformat
+         width
+         height
+         border
+         format
+         type'
+         (maybeToOptional (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"texImage2D\"]($2, $3, $4, $5,\n$6, $7); })" js_texImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLenum -> GLenum -> GLenum -> Optional TexImageSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texImage2D Mozilla WebGLRenderingContextBase.texImage2D documentation> 
+texImage2D ::
+           (MonadIO m, IsWebGLRenderingContextBase self,
+            IsTexImageSource source) =>
+             self ->
+               GLenum ->
+                 GLint -> GLenum -> GLenum -> GLenum -> Maybe source -> m ()
+texImage2D self target level internalformat format type' source
+  = liftIO
+      (js_texImage2D (toWebGLRenderingContextBase self) target level
+         internalformat
+         format
+         type'
+         (maybeToOptional (fmap toTexImageSource source)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10) => { return $1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8, $9, $10); })"
+        js_texSubImage2DView ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint ->
+                  GLsizei ->
+                    GLsizei -> GLenum -> GLenum -> Optional ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2DView ::
+                  (MonadIO m, IsWebGLRenderingContextBase self,
+                   IsArrayBufferView pixels) =>
+                    self ->
+                      GLenum ->
+                        GLint ->
+                          GLint ->
+                            GLint ->
+                              GLsizei -> GLsizei -> GLenum -> GLenum -> Maybe pixels -> m ()
+texSubImage2DView self target level xoffset yoffset width height
+  format type' pixels
+  = liftIO
+      (js_texSubImage2DView (toWebGLRenderingContextBase self) target
+         level
+         xoffset
+         yoffset
+         width
+         height
+         format
+         type'
+         (maybeToOptional (fmap toArrayBufferView pixels)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return $1[\"texSubImage2D\"]($2, $3, $4,\n$5, $6, $7, $8); })"
+        js_texSubImage2D ::
+        WebGLRenderingContextBase ->
+          GLenum ->
+            GLint ->
+              GLint ->
+                GLint -> GLenum -> GLenum -> Optional TexImageSource -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.texSubImage2D Mozilla WebGLRenderingContextBase.texSubImage2D documentation> 
+texSubImage2D ::
+              (MonadIO m, IsWebGLRenderingContextBase self,
+               IsTexImageSource source) =>
+                self ->
+                  GLenum ->
+                    GLint -> GLint -> GLint -> GLenum -> GLenum -> Maybe source -> m ()
+texSubImage2D self target level xoffset yoffset format type' source
+  = liftIO
+      (js_texSubImage2D (toWebGLRenderingContextBase self) target level
+         xoffset
+         yoffset
+         format
+         type'
+         (maybeToOptional (fmap toTexImageSource source)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1f\"]($2, $3); })"
+        js_uniform1f ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1f Mozilla WebGLRenderingContextBase.uniform1f documentation> 
+uniform1f ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLfloat -> m ()
+uniform1f self location x
+  = liftIO
+      (js_uniform1f (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2f\"]($2, $3, $4); })"
+        js_uniform2f ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2f Mozilla WebGLRenderingContextBase.uniform2f documentation> 
+uniform2f ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> m ()
+uniform2f self location x y
+  = liftIO
+      (js_uniform2f (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3f\"]($2, $3, $4, $5); })" js_uniform3f ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation ->
+            GLfloat -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3f Mozilla WebGLRenderingContextBase.uniform3f documentation> 
+uniform3f ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation -> GLfloat -> GLfloat -> GLfloat -> m ()
+uniform3f self location x y z
+  = liftIO
+      (js_uniform3f (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4f\"]($2, $3, $4, $5,\n$6); })" js_uniform4f ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation ->
+            GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4f Mozilla WebGLRenderingContextBase.uniform4f documentation> 
+uniform4f ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation ->
+                GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+uniform4f self location x y z w
+  = liftIO
+      (js_uniform4f (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1i\"]($2, $3); })"
+        js_uniform1i ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1i Mozilla WebGLRenderingContextBase.uniform1i documentation> 
+uniform1i ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLint -> m ()
+uniform1i self location x
+  = liftIO
+      (js_uniform1i (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"uniform2i\"]($2, $3, $4); })"
+        js_uniform2i ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLint -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2i Mozilla WebGLRenderingContextBase.uniform2i documentation> 
+uniform2i ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> Maybe WebGLUniformLocation -> GLint -> GLint -> m ()
+uniform2i self location x y
+  = liftIO
+      (js_uniform2i (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"uniform3i\"]($2, $3, $4, $5); })" js_uniform3i ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLint -> GLint -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3i Mozilla WebGLRenderingContextBase.uniform3i documentation> 
+uniform3i ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation -> GLint -> GLint -> GLint -> m ()
+uniform3i self location x y z
+  = liftIO
+      (js_uniform3i (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y
+         z)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"uniform4i\"]($2, $3, $4, $5,\n$6); })" js_uniform4i ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation ->
+            GLint -> GLint -> GLint -> GLint -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4i Mozilla WebGLRenderingContextBase.uniform4i documentation> 
+uniform4i ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self ->
+              Maybe WebGLUniformLocation ->
+                GLint -> GLint -> GLint -> GLint -> m ()
+uniform4i self location x y z w
+  = liftIO
+      (js_uniform4i (toWebGLRenderingContextBase self)
+         (maybeToOptional location)
+         x
+         y
+         z
+         w)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1fv\"]($2, $3); })"
+        js_uniform1fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1fv Mozilla WebGLRenderingContextBase.uniform1fv documentation> 
+uniform1fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform1fv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform1fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Float32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2fv\"]($2, $3); })"
+        js_uniform2fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2fv Mozilla WebGLRenderingContextBase.uniform2fv documentation> 
+uniform2fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform2fv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform2fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Float32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3fv\"]($2, $3); })"
+        js_uniform3fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3fv Mozilla WebGLRenderingContextBase.uniform3fv documentation> 
+uniform3fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform3fv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform3fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Float32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4fv\"]($2, $3); })"
+        js_uniform4fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4fv Mozilla WebGLRenderingContextBase.uniform4fv documentation> 
+uniform4fv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsFloat32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform4fv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform4fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Float32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform1iv\"]($2, $3); })"
+        js_uniform1iv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Int32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform1iv Mozilla WebGLRenderingContextBase.uniform1iv documentation> 
+uniform1iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform1iv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform1iv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Int32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform2iv\"]($2, $3); })"
+        js_uniform2iv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Int32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform2iv Mozilla WebGLRenderingContextBase.uniform2iv documentation> 
+uniform2iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform2iv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform2iv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Int32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform3iv\"]($2, $3); })"
+        js_uniform3iv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Int32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform3iv Mozilla WebGLRenderingContextBase.uniform3iv documentation> 
+uniform3iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform3iv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform3iv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Int32List v'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"uniform4iv\"]($2, $3); })"
+        js_uniform4iv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> Int32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniform4iv Mozilla WebGLRenderingContextBase.uniform4iv documentation> 
+uniform4iv ::
+           (MonadIO m, IsWebGLRenderingContextBase self, IsInt32List v) =>
+             self -> Maybe WebGLUniformLocation -> v -> m ()
+uniform4iv self location v
+  = liftIO
+      (toJSVal v >>=
+         \ v' ->
+           js_uniform4iv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             (Int32List v'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix2fv\"]($2, $3,\n$4); })" js_uniformMatrix2fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix2fv Mozilla WebGLRenderingContextBase.uniformMatrix2fv documentation> 
+uniformMatrix2fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32List array) =>
+                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
+uniformMatrix2fv self location transpose array
+  = liftIO
+      (toJSVal array >>=
+         \ array' ->
+           js_uniformMatrix2fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             transpose
+             (Float32List array'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix3fv\"]($2, $3,\n$4); })" js_uniformMatrix3fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix3fv Mozilla WebGLRenderingContextBase.uniformMatrix3fv documentation> 
+uniformMatrix3fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32List array) =>
+                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
+uniformMatrix3fv self location transpose array
+  = liftIO
+      (toJSVal array >>=
+         \ array' ->
+           js_uniformMatrix3fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             transpose
+             (Float32List array'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"uniformMatrix4fv\"]($2, $3,\n$4); })" js_uniformMatrix4fv ::
+        WebGLRenderingContextBase ->
+          Optional WebGLUniformLocation -> GLboolean -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.uniformMatrix4fv Mozilla WebGLRenderingContextBase.uniformMatrix4fv documentation> 
+uniformMatrix4fv ::
+                 (MonadIO m, IsWebGLRenderingContextBase self,
+                  IsFloat32List array) =>
+                   self -> Maybe WebGLUniformLocation -> GLboolean -> array -> m ()
+uniformMatrix4fv self location transpose array
+  = liftIO
+      (toJSVal array >>=
+         \ array' ->
+           js_uniformMatrix4fv (toWebGLRenderingContextBase self)
+             (maybeToOptional location)
+             transpose
+             (Float32List array'))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"useProgram\"]($2); })"
+        js_useProgram ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.useProgram Mozilla WebGLRenderingContextBase.useProgram documentation> 
+useProgram ::
+           (MonadIO m, IsWebGLRenderingContextBase self) =>
+             self -> Maybe WebGLProgram -> m ()
+useProgram self program
+  = liftIO
+      (js_useProgram (toWebGLRenderingContextBase self)
+         (maybeToOptional program))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"validateProgram\"]($2); })"
+        js_validateProgram ::
+        WebGLRenderingContextBase -> Optional WebGLProgram -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.validateProgram Mozilla WebGLRenderingContextBase.validateProgram documentation> 
+validateProgram ::
+                (MonadIO m, IsWebGLRenderingContextBase self) =>
+                  self -> Maybe WebGLProgram -> m ()
+validateProgram self program
+  = liftIO
+      (js_validateProgram (toWebGLRenderingContextBase self)
+         (maybeToOptional program))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib1f\"]($2, $3); })"
+        js_vertexAttrib1f ::
+        WebGLRenderingContextBase -> GLuint -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1f Mozilla WebGLRenderingContextBase.vertexAttrib1f documentation> 
+vertexAttrib1f ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> m ()
+vertexAttrib1f self index x
+  = liftIO
+      (js_vertexAttrib1f (toWebGLRenderingContextBase self) index x)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"vertexAttrib2f\"]($2, $3, $4); })" js_vertexAttrib2f ::
+        WebGLRenderingContextBase -> GLuint -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2f Mozilla WebGLRenderingContextBase.vertexAttrib2f documentation> 
+vertexAttrib2f ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> m ()
+vertexAttrib2f self index x y
+  = liftIO
+      (js_vertexAttrib2f (toWebGLRenderingContextBase self) index x y)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"vertexAttrib3f\"]($2, $3, $4,\n$5); })" js_vertexAttrib3f ::
+        WebGLRenderingContextBase ->
+          GLuint -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3f Mozilla WebGLRenderingContextBase.vertexAttrib3f documentation> 
+vertexAttrib3f ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> m ()
+vertexAttrib3f self index x y z
+  = liftIO
+      (js_vertexAttrib3f (toWebGLRenderingContextBase self) index x y z)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"vertexAttrib4f\"]($2, $3, $4,\n$5, $6); })" js_vertexAttrib4f ::
+        WebGLRenderingContextBase ->
+          GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4f Mozilla WebGLRenderingContextBase.vertexAttrib4f documentation> 
+vertexAttrib4f ::
+               (MonadIO m, IsWebGLRenderingContextBase self) =>
+                 self -> GLuint -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> m ()
+vertexAttrib4f self index x y z w
+  = liftIO
+      (js_vertexAttrib4f (toWebGLRenderingContextBase self) index x y z
+         w)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib1fv\"]($2, $3); })"
+        js_vertexAttrib1fv ::
+        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib1fv Mozilla WebGLRenderingContextBase.vertexAttrib1fv documentation> 
+vertexAttrib1fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32List values) =>
+                  self -> GLuint -> values -> m ()
+vertexAttrib1fv self index values
+  = liftIO
+      (toJSVal values >>=
+         \ values' ->
+           js_vertexAttrib1fv (toWebGLRenderingContextBase self) index
+             (Float32List values'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib2fv\"]($2, $3); })"
+        js_vertexAttrib2fv ::
+        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib2fv Mozilla WebGLRenderingContextBase.vertexAttrib2fv documentation> 
+vertexAttrib2fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32List values) =>
+                  self -> GLuint -> values -> m ()
+vertexAttrib2fv self index values
+  = liftIO
+      (toJSVal values >>=
+         \ values' ->
+           js_vertexAttrib2fv (toWebGLRenderingContextBase self) index
+             (Float32List values'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib3fv\"]($2, $3); })"
+        js_vertexAttrib3fv ::
+        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib3fv Mozilla WebGLRenderingContextBase.vertexAttrib3fv documentation> 
+vertexAttrib3fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32List values) =>
+                  self -> GLuint -> values -> m ()
+vertexAttrib3fv self index values
+  = liftIO
+      (toJSVal values >>=
+         \ values' ->
+           js_vertexAttrib3fv (toWebGLRenderingContextBase self) index
+             (Float32List values'))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"vertexAttrib4fv\"]($2, $3); })"
+        js_vertexAttrib4fv ::
+        WebGLRenderingContextBase -> GLuint -> Float32List -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttrib4fv Mozilla WebGLRenderingContextBase.vertexAttrib4fv documentation> 
+vertexAttrib4fv ::
+                (MonadIO m, IsWebGLRenderingContextBase self,
+                 IsFloat32List values) =>
+                  self -> GLuint -> values -> m ()
+vertexAttrib4fv self index values
+  = liftIO
+      (toJSVal values >>=
+         \ values' ->
+           js_vertexAttrib4fv (toWebGLRenderingContextBase self) index
+             (Float32List values'))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7) => { return $1[\"vertexAttribPointer\"]($2,\n$3, $4, $5, $6, $7); })"
+        js_vertexAttribPointer ::
+        WebGLRenderingContextBase ->
+          GLuint ->
+            GLint -> GLenum -> GLboolean -> GLsizei -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.vertexAttribPointer Mozilla WebGLRenderingContextBase.vertexAttribPointer documentation> 
+vertexAttribPointer ::
+                    (MonadIO m, IsWebGLRenderingContextBase self) =>
+                      self ->
+                        GLuint ->
+                          GLint -> GLenum -> GLboolean -> GLsizei -> GLintptr -> m ()
+vertexAttribPointer self indx size type' normalized stride offset
+  = liftIO
+      (js_vertexAttribPointer (toWebGLRenderingContextBase self) indx
+         size
+         type'
+         normalized
+         stride
+         (fromIntegral offset))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4, $5) => { return $1[\"viewport\"]($2, $3, $4, $5); })"
+        js_viewport ::
+        WebGLRenderingContextBase ->
+          GLint -> GLint -> GLsizei -> GLsizei -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.viewport Mozilla WebGLRenderingContextBase.viewport documentation> 
+viewport ::
+         (MonadIO m, IsWebGLRenderingContextBase self) =>
+           self -> GLint -> GLint -> GLsizei -> GLsizei -> m ()
+viewport self x y width height
+  = liftIO
+      (js_viewport (toWebGLRenderingContextBase self) x y width height)
+pattern DEPTH_BUFFER_BIT = 256
+pattern STENCIL_BUFFER_BIT = 1024
+pattern COLOR_BUFFER_BIT = 16384
+pattern POINTS = 0
+pattern LINES = 1
+pattern LINE_LOOP = 2
+pattern LINE_STRIP = 3
+pattern TRIANGLES = 4
+pattern TRIANGLE_STRIP = 5
+pattern TRIANGLE_FAN = 6
+pattern ZERO = 0
+pattern ONE = 1
+pattern SRC_COLOR = 768
+pattern ONE_MINUS_SRC_COLOR = 769
+pattern SRC_ALPHA = 770
+pattern ONE_MINUS_SRC_ALPHA = 771
+pattern DST_ALPHA = 772
+pattern ONE_MINUS_DST_ALPHA = 773
+pattern DST_COLOR = 774
+pattern ONE_MINUS_DST_COLOR = 775
+pattern SRC_ALPHA_SATURATE = 776
+pattern FUNC_ADD = 32774
+pattern BLEND_EQUATION = 32777
+pattern BLEND_EQUATION_RGB = 32777
+pattern BLEND_EQUATION_ALPHA = 34877
+pattern FUNC_SUBTRACT = 32778
+pattern FUNC_REVERSE_SUBTRACT = 32779
+pattern BLEND_DST_RGB = 32968
+pattern BLEND_SRC_RGB = 32969
+pattern BLEND_DST_ALPHA = 32970
+pattern BLEND_SRC_ALPHA = 32971
+pattern CONSTANT_COLOR = 32769
+pattern ONE_MINUS_CONSTANT_COLOR = 32770
+pattern CONSTANT_ALPHA = 32771
+pattern ONE_MINUS_CONSTANT_ALPHA = 32772
+pattern BLEND_COLOR = 32773
+pattern ARRAY_BUFFER = 34962
+pattern ELEMENT_ARRAY_BUFFER = 34963
+pattern ARRAY_BUFFER_BINDING = 34964
+pattern ELEMENT_ARRAY_BUFFER_BINDING = 34965
+pattern STREAM_DRAW = 35040
+pattern STATIC_DRAW = 35044
+pattern DYNAMIC_DRAW = 35048
+pattern BUFFER_SIZE = 34660
+pattern BUFFER_USAGE = 34661
+pattern CURRENT_VERTEX_ATTRIB = 34342
+pattern FRONT = 1028
+pattern BACK = 1029
+pattern FRONT_AND_BACK = 1032
+pattern TEXTURE_2D = 3553
+pattern CULL_FACE = 2884
+pattern BLEND = 3042
+pattern DITHER = 3024
+pattern STENCIL_TEST = 2960
+pattern DEPTH_TEST = 2929
+pattern SCISSOR_TEST = 3089
+pattern POLYGON_OFFSET_FILL = 32823
+pattern SAMPLE_ALPHA_TO_COVERAGE = 32926
+pattern SAMPLE_COVERAGE = 32928
+pattern NO_ERROR = 0
+pattern INVALID_ENUM = 1280
+pattern INVALID_VALUE = 1281
+pattern INVALID_OPERATION = 1282
+pattern OUT_OF_MEMORY = 1285
+pattern CW = 2304
+pattern CCW = 2305
+pattern LINE_WIDTH = 2849
+pattern ALIASED_POINT_SIZE_RANGE = 33901
+pattern ALIASED_LINE_WIDTH_RANGE = 33902
+pattern CULL_FACE_MODE = 2885
+pattern FRONT_FACE = 2886
+pattern DEPTH_RANGE = 2928
+pattern DEPTH_WRITEMASK = 2930
+pattern DEPTH_CLEAR_VALUE = 2931
+pattern DEPTH_FUNC = 2932
+pattern STENCIL_CLEAR_VALUE = 2961
+pattern STENCIL_FUNC = 2962
+pattern STENCIL_FAIL = 2964
+pattern STENCIL_PASS_DEPTH_FAIL = 2965
+pattern STENCIL_PASS_DEPTH_PASS = 2966
+pattern STENCIL_REF = 2967
+pattern STENCIL_VALUE_MASK = 2963
+pattern STENCIL_WRITEMASK = 2968
+pattern STENCIL_BACK_FUNC = 34816
+pattern STENCIL_BACK_FAIL = 34817
+pattern STENCIL_BACK_PASS_DEPTH_FAIL = 34818
+pattern STENCIL_BACK_PASS_DEPTH_PASS = 34819
+pattern STENCIL_BACK_REF = 36003
+pattern STENCIL_BACK_VALUE_MASK = 36004
+pattern STENCIL_BACK_WRITEMASK = 36005
+pattern VIEWPORT = 2978
+pattern SCISSOR_BOX = 3088
+pattern COLOR_CLEAR_VALUE = 3106
+pattern COLOR_WRITEMASK = 3107
+pattern UNPACK_ALIGNMENT = 3317
+pattern PACK_ALIGNMENT = 3333
+pattern MAX_TEXTURE_SIZE = 3379
+pattern MAX_VIEWPORT_DIMS = 3386
+pattern SUBPIXEL_BITS = 3408
+pattern RED_BITS = 3410
+pattern GREEN_BITS = 3411
+pattern BLUE_BITS = 3412
+pattern ALPHA_BITS = 3413
+pattern DEPTH_BITS = 3414
+pattern STENCIL_BITS = 3415
+pattern POLYGON_OFFSET_UNITS = 10752
+pattern POLYGON_OFFSET_FACTOR = 32824
+pattern TEXTURE_BINDING_2D = 32873
+pattern SAMPLE_BUFFERS = 32936
+pattern SAMPLES = 32937
+pattern SAMPLE_COVERAGE_VALUE = 32938
+pattern SAMPLE_COVERAGE_INVERT = 32939
+pattern COMPRESSED_TEXTURE_FORMATS = 34467
+pattern DONT_CARE = 4352
+pattern FASTEST = 4353
+pattern NICEST = 4354
+pattern GENERATE_MIPMAP_HINT = 33170
+pattern BYTE = 5120
+pattern UNSIGNED_BYTE = 5121
+pattern SHORT = 5122
+pattern UNSIGNED_SHORT = 5123
+pattern INT = 5124
+pattern UNSIGNED_INT = 5125
+pattern FLOAT = 5126
+pattern DEPTH_COMPONENT = 6402
+pattern ALPHA = 6406
+pattern RGB = 6407
+pattern RGBA = 6408
+pattern LUMINANCE = 6409
+pattern LUMINANCE_ALPHA = 6410
+pattern UNSIGNED_SHORT_4_4_4_4 = 32819
+pattern UNSIGNED_SHORT_5_5_5_1 = 32820
+pattern UNSIGNED_SHORT_5_6_5 = 33635
+pattern FRAGMENT_SHADER = 35632
+pattern VERTEX_SHADER = 35633
+pattern MAX_VERTEX_ATTRIBS = 34921
+pattern MAX_VERTEX_UNIFORM_VECTORS = 36347
+pattern MAX_VARYING_VECTORS = 36348
+pattern MAX_COMBINED_TEXTURE_IMAGE_UNITS = 35661
+pattern MAX_VERTEX_TEXTURE_IMAGE_UNITS = 35660
+pattern MAX_TEXTURE_IMAGE_UNITS = 34930
+pattern MAX_FRAGMENT_UNIFORM_VECTORS = 36349
+pattern SHADER_TYPE = 35663
+pattern DELETE_STATUS = 35712
+pattern LINK_STATUS = 35714
+pattern VALIDATE_STATUS = 35715
+pattern ATTACHED_SHADERS = 35717
+pattern ACTIVE_UNIFORMS = 35718
+pattern ACTIVE_ATTRIBUTES = 35721
+pattern SHADING_LANGUAGE_VERSION = 35724
+pattern CURRENT_PROGRAM = 35725
+pattern NEVER = 512
+pattern LESS = 513
+pattern EQUAL = 514
+pattern LEQUAL = 515
+pattern GREATER = 516
+pattern NOTEQUAL = 517
+pattern GEQUAL = 518
+pattern ALWAYS = 519
+pattern KEEP = 7680
+pattern REPLACE = 7681
+pattern INCR = 7682
+pattern DECR = 7683
+pattern INVERT = 5386
+pattern INCR_WRAP = 34055
+pattern DECR_WRAP = 34056
+pattern VENDOR = 7936
+pattern RENDERER = 7937
+pattern VERSION = 7938
+pattern NEAREST = 9728
+pattern LINEAR = 9729
+pattern NEAREST_MIPMAP_NEAREST = 9984
+pattern LINEAR_MIPMAP_NEAREST = 9985
+pattern NEAREST_MIPMAP_LINEAR = 9986
+pattern LINEAR_MIPMAP_LINEAR = 9987
+pattern TEXTURE_MAG_FILTER = 10240
+pattern TEXTURE_MIN_FILTER = 10241
+pattern TEXTURE_WRAP_S = 10242
+pattern TEXTURE_WRAP_T = 10243
+pattern TEXTURE = 5890
+pattern TEXTURE_CUBE_MAP = 34067
+pattern TEXTURE_BINDING_CUBE_MAP = 34068
+pattern TEXTURE_CUBE_MAP_POSITIVE_X = 34069
+pattern TEXTURE_CUBE_MAP_NEGATIVE_X = 34070
+pattern TEXTURE_CUBE_MAP_POSITIVE_Y = 34071
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Y = 34072
+pattern TEXTURE_CUBE_MAP_POSITIVE_Z = 34073
+pattern TEXTURE_CUBE_MAP_NEGATIVE_Z = 34074
+pattern MAX_CUBE_MAP_TEXTURE_SIZE = 34076
+pattern TEXTURE0 = 33984
+pattern TEXTURE1 = 33985
+pattern TEXTURE2 = 33986
+pattern TEXTURE3 = 33987
+pattern TEXTURE4 = 33988
+pattern TEXTURE5 = 33989
+pattern TEXTURE6 = 33990
+pattern TEXTURE7 = 33991
+pattern TEXTURE8 = 33992
+pattern TEXTURE9 = 33993
+pattern TEXTURE10 = 33994
+pattern TEXTURE11 = 33995
+pattern TEXTURE12 = 33996
+pattern TEXTURE13 = 33997
+pattern TEXTURE14 = 33998
+pattern TEXTURE15 = 33999
+pattern TEXTURE16 = 34000
+pattern TEXTURE17 = 34001
+pattern TEXTURE18 = 34002
+pattern TEXTURE19 = 34003
+pattern TEXTURE20 = 34004
+pattern TEXTURE21 = 34005
+pattern TEXTURE22 = 34006
+pattern TEXTURE23 = 34007
+pattern TEXTURE24 = 34008
+pattern TEXTURE25 = 34009
+pattern TEXTURE26 = 34010
+pattern TEXTURE27 = 34011
+pattern TEXTURE28 = 34012
+pattern TEXTURE29 = 34013
+pattern TEXTURE30 = 34014
+pattern TEXTURE31 = 34015
+pattern ACTIVE_TEXTURE = 34016
+pattern REPEAT = 10497
+pattern CLAMP_TO_EDGE = 33071
+pattern MIRRORED_REPEAT = 33648
+pattern FLOAT_VEC2 = 35664
+pattern FLOAT_VEC3 = 35665
+pattern FLOAT_VEC4 = 35666
+pattern INT_VEC2 = 35667
+pattern INT_VEC3 = 35668
+pattern INT_VEC4 = 35669
+pattern BOOL = 35670
+pattern BOOL_VEC2 = 35671
+pattern BOOL_VEC3 = 35672
+pattern BOOL_VEC4 = 35673
+pattern FLOAT_MAT2 = 35674
+pattern FLOAT_MAT3 = 35675
+pattern FLOAT_MAT4 = 35676
+pattern SAMPLER_2D = 35678
+pattern SAMPLER_CUBE = 35680
+pattern VERTEX_ATTRIB_ARRAY_ENABLED = 34338
+pattern VERTEX_ATTRIB_ARRAY_SIZE = 34339
+pattern VERTEX_ATTRIB_ARRAY_STRIDE = 34340
+pattern VERTEX_ATTRIB_ARRAY_TYPE = 34341
+pattern VERTEX_ATTRIB_ARRAY_NORMALIZED = 34922
+pattern VERTEX_ATTRIB_ARRAY_POINTER = 34373
+pattern VERTEX_ATTRIB_ARRAY_BUFFER_BINDING = 34975
+pattern IMPLEMENTATION_COLOR_READ_TYPE = 35738
+pattern IMPLEMENTATION_COLOR_READ_FORMAT = 35739
+pattern COMPILE_STATUS = 35713
+pattern LOW_FLOAT = 36336
+pattern MEDIUM_FLOAT = 36337
+pattern HIGH_FLOAT = 36338
+pattern LOW_INT = 36339
+pattern MEDIUM_INT = 36340
+pattern HIGH_INT = 36341
+pattern FRAMEBUFFER = 36160
+pattern RENDERBUFFER = 36161
+pattern RGBA4 = 32854
+pattern RGB5_A1 = 32855
+pattern RGB565 = 36194
+pattern DEPTH_COMPONENT16 = 33189
+pattern STENCIL_INDEX = 6401
+pattern STENCIL_INDEX8 = 36168
+pattern DEPTH_STENCIL = 34041
+pattern RENDERBUFFER_WIDTH = 36162
+pattern RENDERBUFFER_HEIGHT = 36163
+pattern RENDERBUFFER_INTERNAL_FORMAT = 36164
+pattern RENDERBUFFER_RED_SIZE = 36176
+pattern RENDERBUFFER_GREEN_SIZE = 36177
+pattern RENDERBUFFER_BLUE_SIZE = 36178
+pattern RENDERBUFFER_ALPHA_SIZE = 36179
+pattern RENDERBUFFER_DEPTH_SIZE = 36180
+pattern RENDERBUFFER_STENCIL_SIZE = 36181
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = 36048
+pattern FRAMEBUFFER_ATTACHMENT_OBJECT_NAME = 36049
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL = 36050
+pattern FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE = 36051
+pattern COLOR_ATTACHMENT0 = 36064
+pattern DEPTH_ATTACHMENT = 36096
+pattern STENCIL_ATTACHMENT = 36128
+pattern DEPTH_STENCIL_ATTACHMENT = 33306
+pattern NONE = 0
+pattern FRAMEBUFFER_COMPLETE = 36053
+pattern FRAMEBUFFER_INCOMPLETE_ATTACHMENT = 36054
+pattern FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT = 36055
+pattern FRAMEBUFFER_INCOMPLETE_DIMENSIONS = 36057
+pattern FRAMEBUFFER_UNSUPPORTED = 36061
+pattern FRAMEBUFFER_BINDING = 36006
+pattern RENDERBUFFER_BINDING = 36007
+pattern MAX_RENDERBUFFER_SIZE = 34024
+pattern INVALID_FRAMEBUFFER_OPERATION = 1286
+pattern UNPACK_FLIP_Y_WEBGL = 37440
+pattern UNPACK_PREMULTIPLY_ALPHA_WEBGL = 37441
+pattern CONTEXT_LOST_WEBGL = 37442
+pattern UNPACK_COLORSPACE_CONVERSION_WEBGL = 37443
+pattern BROWSER_DEFAULT_WEBGL = 37444
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"canvas\"]; })" js_getCanvas ::
+        WebGLRenderingContextBase -> IO HTMLCanvasElement
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.canvas Mozilla WebGLRenderingContextBase.canvas documentation> 
+getCanvas ::
+          (MonadIO m, IsWebGLRenderingContextBase self) =>
+            self -> m HTMLCanvasElement
+getCanvas self
+  = liftIO (js_getCanvas (toWebGLRenderingContextBase self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferWidth\"]; })"
+        js_getDrawingBufferWidth :: WebGLRenderingContextBase -> IO GLsizei
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferWidth Mozilla WebGLRenderingContextBase.drawingBufferWidth documentation> 
+getDrawingBufferWidth ::
+                      (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLsizei
+getDrawingBufferWidth self
+  = liftIO
+      (js_getDrawingBufferWidth (toWebGLRenderingContextBase self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"drawingBufferHeight\"]; })"
+        js_getDrawingBufferHeight ::
+        WebGLRenderingContextBase -> IO GLsizei
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase.drawingBufferHeight Mozilla WebGLRenderingContextBase.drawingBufferHeight documentation> 
+getDrawingBufferHeight ::
+                       (MonadIO m, IsWebGLRenderingContextBase self) => self -> m GLsizei
+getDrawingBufferHeight self
+  = liftIO
+      (js_getDrawingBufferHeight (toWebGLRenderingContextBase self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGLShaderPrecisionFormat.hs
@@ -0,0 +1,49 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGLShaderPrecisionFormat
+       (js_getRangeMin, getRangeMin, js_getRangeMax, getRangeMax,
+        js_getPrecision, getPrecision, WebGLShaderPrecisionFormat(..),
+        gTypeWebGLShaderPrecisionFormat)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rangeMin\"]; })" js_getRangeMin
+        :: WebGLShaderPrecisionFormat -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMin Mozilla WebGLShaderPrecisionFormat.rangeMin documentation> 
+getRangeMin :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMin self = liftIO (js_getRangeMin self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"rangeMax\"]; })" js_getRangeMax
+        :: WebGLShaderPrecisionFormat -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.rangeMax Mozilla WebGLShaderPrecisionFormat.rangeMax documentation> 
+getRangeMax :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
+getRangeMax self = liftIO (js_getRangeMax self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"precision\"]; })"
+        js_getPrecision :: WebGLShaderPrecisionFormat -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat.precision Mozilla WebGLShaderPrecisionFormat.precision documentation> 
+getPrecision :: (MonadIO m) => WebGLShaderPrecisionFormat -> m Int
+getPrecision self = liftIO (js_getPrecision self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUBuffer.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUBuffer
+       (js_getLength, getLength, js_getContents, getContents,
+        WebGPUBuffer(..), gTypeWebGPUBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        WebGPUBuffer -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.length Mozilla WebGPUBuffer.length documentation> 
+getLength :: (MonadIO m) => WebGPUBuffer -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"contents\"]; })" js_getContents
+        :: WebGPUBuffer -> IO ArrayBufferView
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer.contents Mozilla WebGPUBuffer.contents documentation> 
+getContents :: (MonadIO m) => WebGPUBuffer -> m ArrayBufferView
+getContents self = liftIO (js_getContents self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandBuffer.hs
@@ -0,0 +1,101 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUCommandBuffer
+       (js_createRenderCommandEncoderWithDescriptor,
+        createRenderCommandEncoderWithDescriptor,
+        createRenderCommandEncoderWithDescriptor_,
+        js_createComputeCommandEncoder, createComputeCommandEncoder,
+        createComputeCommandEncoder_, js_commit, commit,
+        js_presentDrawable, presentDrawable, js_getCompleted, getCompleted,
+        WebGPUCommandBuffer(..), gTypeWebGPUCommandBuffer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createRenderCommandEncoderWithDescriptor\"]($2); })"
+        js_createRenderCommandEncoderWithDescriptor ::
+        WebGPUCommandBuffer ->
+          WebGPURenderPassDescriptor -> IO WebGPURenderCommandEncoder
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
+createRenderCommandEncoderWithDescriptor ::
+                                         (MonadIO m) =>
+                                           WebGPUCommandBuffer ->
+                                             WebGPURenderPassDescriptor ->
+                                               m WebGPURenderCommandEncoder
+createRenderCommandEncoderWithDescriptor self descriptor
+  = liftIO
+      (js_createRenderCommandEncoderWithDescriptor self descriptor)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor Mozilla WebGPUCommandBuffer.createRenderCommandEncoderWithDescriptor documentation> 
+createRenderCommandEncoderWithDescriptor_ ::
+                                          (MonadIO m) =>
+                                            WebGPUCommandBuffer ->
+                                              WebGPURenderPassDescriptor -> m ()
+createRenderCommandEncoderWithDescriptor_ self descriptor
+  = liftIO
+      (void
+         (js_createRenderCommandEncoderWithDescriptor self descriptor))
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"createComputeCommandEncoder\"](); })"
+        js_createComputeCommandEncoder ::
+        WebGPUCommandBuffer -> IO WebGPUComputeCommandEncoder
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
+createComputeCommandEncoder ::
+                            (MonadIO m) => WebGPUCommandBuffer -> m WebGPUComputeCommandEncoder
+createComputeCommandEncoder self
+  = liftIO (js_createComputeCommandEncoder self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.createComputeCommandEncoder Mozilla WebGPUCommandBuffer.createComputeCommandEncoder documentation> 
+createComputeCommandEncoder_ ::
+                             (MonadIO m) => WebGPUCommandBuffer -> m ()
+createComputeCommandEncoder_ self
+  = liftIO (void (js_createComputeCommandEncoder self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"commit\"](); })" js_commit ::
+        WebGPUCommandBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.commit Mozilla WebGPUCommandBuffer.commit documentation> 
+commit :: (MonadIO m) => WebGPUCommandBuffer -> m ()
+commit self = liftIO (js_commit self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"presentDrawable\"]($2); })"
+        js_presentDrawable ::
+        WebGPUCommandBuffer -> WebGPUDrawable -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.presentDrawable Mozilla WebGPUCommandBuffer.presentDrawable documentation> 
+presentDrawable ::
+                (MonadIO m) => WebGPUCommandBuffer -> WebGPUDrawable -> m ()
+presentDrawable self drawable
+  = liftIO (js_presentDrawable self drawable)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"completed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getCompleted :: WebGPUCommandBuffer -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer.completed Mozilla WebGPUCommandBuffer.completed documentation> 
+getCompleted :: (MonadIO m) => WebGPUCommandBuffer -> m ()
+getCompleted self
+  = liftIO ((js_getCompleted self) >>= maybeThrowPromiseRejected)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUCommandQueue.hs
@@ -0,0 +1,76 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUCommandQueue
+       (js_createCommandBuffer, createCommandBuffer, createCommandBuffer_,
+        createCommandBufferUnsafe, createCommandBufferUnchecked,
+        js_setLabel, setLabel, js_getLabel, getLabel,
+        WebGPUCommandQueue(..), gTypeWebGPUCommandQueue)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createCommandBuffer\"](); })"
+        js_createCommandBuffer ::
+        WebGPUCommandQueue -> IO (Nullable WebGPUCommandBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
+createCommandBuffer ::
+                    (MonadIO m) => WebGPUCommandQueue -> m (Maybe WebGPUCommandBuffer)
+createCommandBuffer self
+  = liftIO (nullableToMaybe <$> (js_createCommandBuffer self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
+createCommandBuffer_ :: (MonadIO m) => WebGPUCommandQueue -> m ()
+createCommandBuffer_ self
+  = liftIO (void (js_createCommandBuffer self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
+createCommandBufferUnsafe ::
+                          (MonadIO m, HasCallStack) =>
+                            WebGPUCommandQueue -> m WebGPUCommandBuffer
+createCommandBufferUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_createCommandBuffer self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.createCommandBuffer Mozilla WebGPUCommandQueue.createCommandBuffer documentation> 
+createCommandBufferUnchecked ::
+                             (MonadIO m) => WebGPUCommandQueue -> m WebGPUCommandBuffer
+createCommandBufferUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_createCommandBuffer self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: WebGPUCommandQueue -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) => WebGPUCommandQueue -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        WebGPUCommandQueue -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue.label Mozilla WebGPUCommandQueue.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => WebGPUCommandQueue -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUComputeCommandEncoder.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUComputeCommandEncoder
+       (js_setComputePipelineState, setComputePipelineState, js_setBuffer,
+        setBuffer, js_dispatch, dispatch, js_endEncoding, endEncoding,
+        WebGPUComputeCommandEncoder(..), gTypeWebGPUComputeCommandEncoder)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setComputePipelineState\"]($2); })" js_setComputePipelineState ::
+        WebGPUComputeCommandEncoder -> WebGPUComputePipelineState -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setComputePipelineState Mozilla WebGPUComputeCommandEncoder.setComputePipelineState documentation> 
+setComputePipelineState ::
+                        (MonadIO m) =>
+                          WebGPUComputeCommandEncoder -> WebGPUComputePipelineState -> m ()
+setComputePipelineState self pipelineState
+  = liftIO (js_setComputePipelineState self pipelineState)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setBuffer\"]($2, $3, $4); })"
+        js_setBuffer ::
+        WebGPUComputeCommandEncoder ->
+          WebGPUBuffer -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.setBuffer Mozilla WebGPUComputeCommandEncoder.setBuffer documentation> 
+setBuffer ::
+          (MonadIO m) =>
+            WebGPUComputeCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
+setBuffer self buffer offset index
+  = liftIO (js_setBuffer self buffer offset index)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"dispatch\"]($2, $3); })"
+        js_dispatch ::
+        WebGPUComputeCommandEncoder -> WebGPUSize -> WebGPUSize -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.dispatch Mozilla WebGPUComputeCommandEncoder.dispatch documentation> 
+dispatch ::
+         (MonadIO m) =>
+           WebGPUComputeCommandEncoder -> WebGPUSize -> WebGPUSize -> m ()
+dispatch self threadgroupsPerGrid threadsPerThreadgroup
+  = liftIO
+      (js_dispatch self threadgroupsPerGrid threadsPerThreadgroup)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endEncoding\"](); })"
+        js_endEncoding :: WebGPUComputeCommandEncoder -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder.endEncoding Mozilla WebGPUComputeCommandEncoder.endEncoding documentation> 
+endEncoding :: (MonadIO m) => WebGPUComputeCommandEncoder -> m ()
+endEncoding self = liftIO (js_endEncoding self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilDescriptor.hs
@@ -0,0 +1,84 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilDescriptor
+       (js_newWebGPUDepthStencilDescriptor,
+        newWebGPUDepthStencilDescriptor, js_setDepthCompareFunction,
+        setDepthCompareFunction, js_getDepthCompareFunction,
+        getDepthCompareFunction, js_setDepthWriteEnabled,
+        setDepthWriteEnabled, js_getDepthWriteEnabled,
+        getDepthWriteEnabled, WebGPUDepthStencilDescriptor(..),
+        gTypeWebGPUDepthStencilDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"WebGPUDepthStencilDescriptor\"](); })"
+        js_newWebGPUDepthStencilDescriptor ::
+        IO WebGPUDepthStencilDescriptor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor Mozilla WebGPUDepthStencilDescriptor documentation> 
+newWebGPUDepthStencilDescriptor ::
+                                (MonadIO m) => m WebGPUDepthStencilDescriptor
+newWebGPUDepthStencilDescriptor
+  = liftIO (js_newWebGPUDepthStencilDescriptor)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"depthCompareFunction\"] = $2; })" js_setDepthCompareFunction ::
+        WebGPUDepthStencilDescriptor -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
+setDepthCompareFunction ::
+                        (MonadIO m) =>
+                          WebGPUDepthStencilDescriptor -> WebGPUCompareFunction -> m ()
+setDepthCompareFunction self val
+  = liftIO (js_setDepthCompareFunction self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"depthCompareFunction\"]; })"
+        js_getDepthCompareFunction ::
+        WebGPUDepthStencilDescriptor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthCompareFunction Mozilla WebGPUDepthStencilDescriptor.depthCompareFunction documentation> 
+getDepthCompareFunction ::
+                        (MonadIO m) =>
+                          WebGPUDepthStencilDescriptor -> m WebGPUCompareFunction
+getDepthCompareFunction self
+  = liftIO ((js_getDepthCompareFunction self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"depthWriteEnabled\"] = $2; })"
+        js_setDepthWriteEnabled ::
+        WebGPUDepthStencilDescriptor -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
+setDepthWriteEnabled ::
+                     (MonadIO m) => WebGPUDepthStencilDescriptor -> Bool -> m ()
+setDepthWriteEnabled self val
+  = liftIO (js_setDepthWriteEnabled self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"depthWriteEnabled\"] ? 1 : 0); })" js_getDepthWriteEnabled ::
+        WebGPUDepthStencilDescriptor -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor.depthWriteEnabled Mozilla WebGPUDepthStencilDescriptor.depthWriteEnabled documentation> 
+getDepthWriteEnabled ::
+                     (MonadIO m) => WebGPUDepthStencilDescriptor -> m Bool
+getDepthWriteEnabled self = liftIO (js_getDepthWriteEnabled self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDepthStencilState.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUDepthStencilState
+       (js_setLabel, setLabel, js_getLabel, getLabel,
+        WebGPUDepthStencilState(..), gTypeWebGPUDepthStencilState)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: WebGPUDepthStencilState -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) =>
+           WebGPUDepthStencilState -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        WebGPUDepthStencilState -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState.label Mozilla WebGPUDepthStencilState.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) =>
+           WebGPUDepthStencilState -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUDrawable.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUDrawable
+       (js_getTexture, getTexture, WebGPUDrawable(..),
+        gTypeWebGPUDrawable)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })" js_getTexture ::
+        WebGPUDrawable -> IO WebGPUTexture
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDrawable.texture Mozilla WebGPUDrawable.texture documentation> 
+getTexture :: (MonadIO m) => WebGPUDrawable -> m WebGPUTexture
+getTexture self = liftIO (js_getTexture self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUFunction.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUFunction
+       (js_getName, getName, WebGPUFunction(..), gTypeWebGPUFunction)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        WebGPUFunction -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUFunction.name Mozilla WebGPUFunction.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => WebGPUFunction -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPULibrary.hs
@@ -0,0 +1,100 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPULibrary
+       (js_functionWithName, functionWithName, functionWithName_,
+        functionWithNameUnsafe, functionWithNameUnchecked,
+        js_getSourceCode, getSourceCode, js_setLabel, setLabel,
+        js_getLabel, getLabel, js_getFunctionNames, getFunctionNames,
+        WebGPULibrary(..), gTypeWebGPULibrary)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"functionWithName\"]($2); })"
+        js_functionWithName ::
+        WebGPULibrary -> JSString -> IO (Nullable WebGPUFunction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
+functionWithName ::
+                 (MonadIO m, ToJSString name) =>
+                   WebGPULibrary -> name -> m (Maybe WebGPUFunction)
+functionWithName self name
+  = liftIO
+      (nullableToMaybe <$> (js_functionWithName self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
+functionWithName_ ::
+                  (MonadIO m, ToJSString name) => WebGPULibrary -> name -> m ()
+functionWithName_ self name
+  = liftIO (void (js_functionWithName self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
+functionWithNameUnsafe ::
+                       (MonadIO m, ToJSString name, HasCallStack) =>
+                         WebGPULibrary -> name -> m WebGPUFunction
+functionWithNameUnsafe self name
+  = liftIO
+      ((nullableToMaybe <$> (js_functionWithName self (toJSString name)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionWithName Mozilla WebGPULibrary.functionWithName documentation> 
+functionWithNameUnchecked ::
+                          (MonadIO m, ToJSString name) =>
+                            WebGPULibrary -> name -> m WebGPUFunction
+functionWithNameUnchecked self name
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_functionWithName self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sourceCode\"]; })"
+        js_getSourceCode :: WebGPULibrary -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.sourceCode Mozilla WebGPULibrary.sourceCode documentation> 
+getSourceCode ::
+              (MonadIO m, FromJSString result) => WebGPULibrary -> m result
+getSourceCode self
+  = liftIO (fromJSString <$> (js_getSourceCode self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: WebGPULibrary -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) => WebGPULibrary -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        WebGPULibrary -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.label Mozilla WebGPULibrary.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) => WebGPULibrary -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"functionNames\"]; })"
+        js_getFunctionNames :: WebGPULibrary -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary.functionNames Mozilla WebGPULibrary.functionNames documentation> 
+getFunctionNames ::
+                 (MonadIO m, FromJSString result) => WebGPULibrary -> m [result]
+getFunctionNames self
+  = liftIO ((js_getFunctionNames self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderCommandEncoder.hs
@@ -0,0 +1,92 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderCommandEncoder
+       (js_setRenderPipelineState, setRenderPipelineState,
+        js_setDepthStencilState, setDepthStencilState, js_setVertexBuffer,
+        setVertexBuffer, js_setFragmentBuffer, setFragmentBuffer,
+        js_drawPrimitives, drawPrimitives, js_endEncoding, endEncoding,
+        WebGPURenderCommandEncoder(..), gTypeWebGPURenderCommandEncoder)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"setRenderPipelineState\"]($2); })" js_setRenderPipelineState ::
+        WebGPURenderCommandEncoder -> WebGPURenderPipelineState -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setRenderPipelineState Mozilla WebGPURenderCommandEncoder.setRenderPipelineState documentation> 
+setRenderPipelineState ::
+                       (MonadIO m) =>
+                         WebGPURenderCommandEncoder -> WebGPURenderPipelineState -> m ()
+setRenderPipelineState self pipelineState
+  = liftIO (js_setRenderPipelineState self pipelineState)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"setDepthStencilState\"]($2); })"
+        js_setDepthStencilState ::
+        WebGPURenderCommandEncoder -> WebGPUDepthStencilState -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setDepthStencilState Mozilla WebGPURenderCommandEncoder.setDepthStencilState documentation> 
+setDepthStencilState ::
+                     (MonadIO m) =>
+                       WebGPURenderCommandEncoder -> WebGPUDepthStencilState -> m ()
+setDepthStencilState self depthStencilState
+  = liftIO (js_setDepthStencilState self depthStencilState)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setVertexBuffer\"]($2, $3,\n$4); })" js_setVertexBuffer ::
+        WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setVertexBuffer Mozilla WebGPURenderCommandEncoder.setVertexBuffer documentation> 
+setVertexBuffer ::
+                (MonadIO m) =>
+                  WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
+setVertexBuffer self buffer offset index
+  = liftIO (js_setVertexBuffer self buffer offset index)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"setFragmentBuffer\"]($2, $3,\n$4); })" js_setFragmentBuffer ::
+        WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.setFragmentBuffer Mozilla WebGPURenderCommandEncoder.setFragmentBuffer documentation> 
+setFragmentBuffer ::
+                  (MonadIO m) =>
+                    WebGPURenderCommandEncoder -> WebGPUBuffer -> Word -> Word -> m ()
+setFragmentBuffer self buffer offset index
+  = liftIO (js_setFragmentBuffer self buffer offset index)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"drawPrimitives\"]($2, $3, $4); })" js_drawPrimitives ::
+        WebGPURenderCommandEncoder -> Word -> Word -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.drawPrimitives Mozilla WebGPURenderCommandEncoder.drawPrimitives documentation> 
+drawPrimitives ::
+               (MonadIO m) =>
+                 WebGPURenderCommandEncoder -> Word -> Word -> Word -> m ()
+drawPrimitives self type' start count
+  = liftIO (js_drawPrimitives self type' start count)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"endEncoding\"](); })"
+        js_endEncoding :: WebGPURenderCommandEncoder -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder.endEncoding Mozilla WebGPURenderCommandEncoder.endEncoding documentation> 
+endEncoding :: (MonadIO m) => WebGPURenderCommandEncoder -> m ()
+endEncoding self = liftIO (js_endEncoding self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassAttachmentDescriptor.hs
@@ -0,0 +1,128 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassAttachmentDescriptor
+       (js_setTexture, setTexture, js_getTexture, getTexture,
+        getTextureUnsafe, getTextureUnchecked, js_setLoadAction,
+        setLoadAction, js_getLoadAction, getLoadAction, js_setStoreAction,
+        setStoreAction, js_getStoreAction, getStoreAction,
+        WebGPURenderPassAttachmentDescriptor(..),
+        gTypeWebGPURenderPassAttachmentDescriptor,
+        IsWebGPURenderPassAttachmentDescriptor,
+        toWebGPURenderPassAttachmentDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"texture\"] = $2; })"
+        js_setTexture ::
+        WebGPURenderPassAttachmentDescriptor ->
+          Optional WebGPUTexture -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
+setTexture ::
+           (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+             self -> Maybe WebGPUTexture -> m ()
+setTexture self val
+  = liftIO
+      (js_setTexture (toWebGPURenderPassAttachmentDescriptor self)
+         (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"texture\"]; })" js_getTexture ::
+        WebGPURenderPassAttachmentDescriptor -> IO (Nullable WebGPUTexture)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
+getTexture ::
+           (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+             self -> m (Maybe WebGPUTexture)
+getTexture self
+  = liftIO
+      (nullableToMaybe <$>
+         (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
+getTextureUnsafe ::
+                 (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self,
+                  HasCallStack) =>
+                   self -> m WebGPUTexture
+getTextureUnsafe self
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.texture Mozilla WebGPURenderPassAttachmentDescriptor.texture documentation> 
+getTextureUnchecked ::
+                    (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+                      self -> m WebGPUTexture
+getTextureUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_getTexture (toWebGPURenderPassAttachmentDescriptor self)))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"loadAction\"] = $2; })"
+        js_setLoadAction ::
+        WebGPURenderPassAttachmentDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
+setLoadAction ::
+              (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+                self -> Word -> m ()
+setLoadAction self val
+  = liftIO
+      (js_setLoadAction (toWebGPURenderPassAttachmentDescriptor self)
+         val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"loadAction\"]; })"
+        js_getLoadAction :: WebGPURenderPassAttachmentDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.loadAction Mozilla WebGPURenderPassAttachmentDescriptor.loadAction documentation> 
+getLoadAction ::
+              (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+                self -> m Word
+getLoadAction self
+  = liftIO
+      (js_getLoadAction (toWebGPURenderPassAttachmentDescriptor self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"storeAction\"] = $2; })"
+        js_setStoreAction ::
+        WebGPURenderPassAttachmentDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
+setStoreAction ::
+               (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+                 self -> Word -> m ()
+setStoreAction self val
+  = liftIO
+      (js_setStoreAction (toWebGPURenderPassAttachmentDescriptor self)
+         val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"storeAction\"]; })"
+        js_getStoreAction ::
+        WebGPURenderPassAttachmentDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor.storeAction Mozilla WebGPURenderPassAttachmentDescriptor.storeAction documentation> 
+getStoreAction ::
+               (MonadIO m, IsWebGPURenderPassAttachmentDescriptor self) =>
+                 self -> m Word
+getStoreAction self
+  = liftIO
+      (js_getStoreAction (toWebGPURenderPassAttachmentDescriptor self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassColorAttachmentDescriptor.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassColorAttachmentDescriptor
+       (js_setClearColor, setClearColor, js_getClearColor, getClearColor,
+        WebGPURenderPassColorAttachmentDescriptor(..),
+        gTypeWebGPURenderPassColorAttachmentDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"clearColor\"] = $2; })"
+        js_setClearColor ::
+        WebGPURenderPassColorAttachmentDescriptor -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
+setClearColor ::
+              (MonadIO m) =>
+                WebGPURenderPassColorAttachmentDescriptor -> [Float] -> m ()
+setClearColor self val
+  = liftIO (toJSVal val >>= \ val' -> js_setClearColor self val')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearColor\"]; })"
+        js_getClearColor ::
+        WebGPURenderPassColorAttachmentDescriptor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor.clearColor Mozilla WebGPURenderPassColorAttachmentDescriptor.clearColor documentation> 
+getClearColor ::
+              (MonadIO m) =>
+                WebGPURenderPassColorAttachmentDescriptor -> m [Float]
+getClearColor self
+  = liftIO ((js_getClearColor self) >>= fromJSValUnchecked)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDepthAttachmentDescriptor.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDepthAttachmentDescriptor
+       (js_setClearDepth, setClearDepth, js_getClearDepth, getClearDepth,
+        WebGPURenderPassDepthAttachmentDescriptor(..),
+        gTypeWebGPURenderPassDepthAttachmentDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"clearDepth\"] = $2; })"
+        js_setClearDepth ::
+        WebGPURenderPassDepthAttachmentDescriptor -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
+setClearDepth ::
+              (MonadIO m) =>
+                WebGPURenderPassDepthAttachmentDescriptor -> Double -> m ()
+setClearDepth self val = liftIO (js_setClearDepth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearDepth\"]; })"
+        js_getClearDepth ::
+        WebGPURenderPassDepthAttachmentDescriptor -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor.clearDepth Mozilla WebGPURenderPassDepthAttachmentDescriptor.clearDepth documentation> 
+getClearDepth ::
+              (MonadIO m) =>
+                WebGPURenderPassDepthAttachmentDescriptor -> m Double
+getClearDepth self = liftIO (js_getClearDepth self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPassDescriptor.hs
@@ -0,0 +1,62 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPassDescriptor
+       (js_newWebGPURenderPassDescriptor, newWebGPURenderPassDescriptor,
+        js_getColorAttachments, getColorAttachments, js_getDepthAttachment,
+        getDepthAttachment, WebGPURenderPassDescriptor(..),
+        gTypeWebGPURenderPassDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"WebGPURenderPassDescriptor\"](); })"
+        js_newWebGPURenderPassDescriptor :: IO WebGPURenderPassDescriptor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor Mozilla WebGPURenderPassDescriptor documentation> 
+newWebGPURenderPassDescriptor ::
+                              (MonadIO m) => m WebGPURenderPassDescriptor
+newWebGPURenderPassDescriptor
+  = liftIO (js_newWebGPURenderPassDescriptor)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"colorAttachments\"]; })"
+        js_getColorAttachments :: WebGPURenderPassDescriptor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.colorAttachments Mozilla WebGPURenderPassDescriptor.colorAttachments documentation> 
+getColorAttachments ::
+                    (MonadIO m) =>
+                      WebGPURenderPassDescriptor ->
+                        m [WebGPURenderPassColorAttachmentDescriptor]
+getColorAttachments self
+  = liftIO ((js_getColorAttachments self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"depthAttachment\"]; })"
+        js_getDepthAttachment ::
+        WebGPURenderPassDescriptor ->
+          IO WebGPURenderPassDepthAttachmentDescriptor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor.depthAttachment Mozilla WebGPURenderPassDescriptor.depthAttachment documentation> 
+getDepthAttachment ::
+                   (MonadIO m) =>
+                     WebGPURenderPassDescriptor ->
+                       m WebGPURenderPassDepthAttachmentDescriptor
+getDepthAttachment self = liftIO (js_getDepthAttachment self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineColorAttachmentDescriptor.hs
@@ -0,0 +1,48 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineColorAttachmentDescriptor
+       (js_setPixelFormat, setPixelFormat, js_getPixelFormat,
+        getPixelFormat, WebGPURenderPipelineColorAttachmentDescriptor(..),
+        gTypeWebGPURenderPipelineColorAttachmentDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"pixelFormat\"] = $2; })"
+        js_setPixelFormat ::
+        WebGPURenderPipelineColorAttachmentDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
+setPixelFormat ::
+               (MonadIO m) =>
+                 WebGPURenderPipelineColorAttachmentDescriptor -> Word -> m ()
+setPixelFormat self val = liftIO (js_setPixelFormat self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pixelFormat\"]; })"
+        js_getPixelFormat ::
+        WebGPURenderPipelineColorAttachmentDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat Mozilla WebGPURenderPipelineColorAttachmentDescriptor.pixelFormat documentation> 
+getPixelFormat ::
+               (MonadIO m) =>
+                 WebGPURenderPipelineColorAttachmentDescriptor -> m Word
+getPixelFormat self = liftIO (js_getPixelFormat self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineDescriptor.hs
@@ -0,0 +1,165 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineDescriptor
+       (js_newWebGPURenderPipelineDescriptor,
+        newWebGPURenderPipelineDescriptor, js_reset, reset,
+        js_setVertexFunction, setVertexFunction, js_getVertexFunction,
+        getVertexFunction, getVertexFunctionUnsafe,
+        getVertexFunctionUnchecked, js_setFragmentFunction,
+        setFragmentFunction, js_getFragmentFunction, getFragmentFunction,
+        getFragmentFunctionUnsafe, getFragmentFunctionUnchecked,
+        js_getColorAttachments, getColorAttachments,
+        js_setDepthAttachmentPixelFormat, setDepthAttachmentPixelFormat,
+        js_getDepthAttachmentPixelFormat, getDepthAttachmentPixelFormat,
+        WebGPURenderPipelineDescriptor(..),
+        gTypeWebGPURenderPipelineDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(() => { return new window[\"WebGPURenderPipelineDescriptor\"](); })"
+        js_newWebGPURenderPipelineDescriptor ::
+        IO WebGPURenderPipelineDescriptor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor Mozilla WebGPURenderPipelineDescriptor documentation> 
+newWebGPURenderPipelineDescriptor ::
+                                  (MonadIO m) => m WebGPURenderPipelineDescriptor
+newWebGPURenderPipelineDescriptor
+  = liftIO (js_newWebGPURenderPipelineDescriptor)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
+        WebGPURenderPipelineDescriptor -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.reset Mozilla WebGPURenderPipelineDescriptor.reset documentation> 
+reset :: (MonadIO m) => WebGPURenderPipelineDescriptor -> m ()
+reset self = liftIO (js_reset self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"vertexFunction\"] = $2; })"
+        js_setVertexFunction ::
+        WebGPURenderPipelineDescriptor -> Optional WebGPUFunction -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
+setVertexFunction ::
+                  (MonadIO m) =>
+                    WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
+setVertexFunction self val
+  = liftIO (js_setVertexFunction self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"vertexFunction\"]; })"
+        js_getVertexFunction ::
+        WebGPURenderPipelineDescriptor -> IO (Nullable WebGPUFunction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
+getVertexFunction ::
+                  (MonadIO m) =>
+                    WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
+getVertexFunction self
+  = liftIO (nullableToMaybe <$> (js_getVertexFunction self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
+getVertexFunctionUnsafe ::
+                        (MonadIO m, HasCallStack) =>
+                          WebGPURenderPipelineDescriptor -> m WebGPUFunction
+getVertexFunctionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getVertexFunction self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.vertexFunction Mozilla WebGPURenderPipelineDescriptor.vertexFunction documentation> 
+getVertexFunctionUnchecked ::
+                           (MonadIO m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
+getVertexFunctionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getVertexFunction self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"fragmentFunction\"] = $2; })"
+        js_setFragmentFunction ::
+        WebGPURenderPipelineDescriptor -> Optional WebGPUFunction -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
+setFragmentFunction ::
+                    (MonadIO m) =>
+                      WebGPURenderPipelineDescriptor -> Maybe WebGPUFunction -> m ()
+setFragmentFunction self val
+  = liftIO (js_setFragmentFunction self (maybeToOptional val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"fragmentFunction\"]; })"
+        js_getFragmentFunction ::
+        WebGPURenderPipelineDescriptor -> IO (Nullable WebGPUFunction)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
+getFragmentFunction ::
+                    (MonadIO m) =>
+                      WebGPURenderPipelineDescriptor -> m (Maybe WebGPUFunction)
+getFragmentFunction self
+  = liftIO (nullableToMaybe <$> (js_getFragmentFunction self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
+getFragmentFunctionUnsafe ::
+                          (MonadIO m, HasCallStack) =>
+                            WebGPURenderPipelineDescriptor -> m WebGPUFunction
+getFragmentFunctionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFragmentFunction self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.fragmentFunction Mozilla WebGPURenderPipelineDescriptor.fragmentFunction documentation> 
+getFragmentFunctionUnchecked ::
+                             (MonadIO m) => WebGPURenderPipelineDescriptor -> m WebGPUFunction
+getFragmentFunctionUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_getFragmentFunction self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"colorAttachments\"]; })"
+        js_getColorAttachments ::
+        WebGPURenderPipelineDescriptor -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.colorAttachments Mozilla WebGPURenderPipelineDescriptor.colorAttachments documentation> 
+getColorAttachments ::
+                    (MonadIO m) =>
+                      WebGPURenderPipelineDescriptor ->
+                        m [WebGPURenderPipelineColorAttachmentDescriptor]
+getColorAttachments self
+  = liftIO ((js_getColorAttachments self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { $1[\"depthAttachmentPixelFormat\"] = $2; })"
+        js_setDepthAttachmentPixelFormat ::
+        WebGPURenderPipelineDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
+setDepthAttachmentPixelFormat ::
+                              (MonadIO m) => WebGPURenderPipelineDescriptor -> Word -> m ()
+setDepthAttachmentPixelFormat self val
+  = liftIO (js_setDepthAttachmentPixelFormat self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return $1[\"depthAttachmentPixelFormat\"]; })"
+        js_getDepthAttachmentPixelFormat ::
+        WebGPURenderPipelineDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat Mozilla WebGPURenderPipelineDescriptor.depthAttachmentPixelFormat documentation> 
+getDepthAttachmentPixelFormat ::
+                              (MonadIO m) => WebGPURenderPipelineDescriptor -> m Word
+getDepthAttachmentPixelFormat self
+  = liftIO (js_getDepthAttachmentPixelFormat self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderPipelineState.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderPipelineState
+       (js_setLabel, setLabel, js_getLabel, getLabel,
+        WebGPURenderPipelineState(..), gTypeWebGPURenderPipelineState)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"label\"] = $2; })" js_setLabel
+        :: WebGPURenderPipelineState -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
+setLabel ::
+         (MonadIO m, ToJSString val) =>
+           WebGPURenderPipelineState -> val -> m ()
+setLabel self val = liftIO (js_setLabel self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"label\"]; })" js_getLabel ::
+        WebGPURenderPipelineState -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState.label Mozilla WebGPURenderPipelineState.label documentation> 
+getLabel ::
+         (MonadIO m, FromJSString result) =>
+           WebGPURenderPipelineState -> m result
+getLabel self = liftIO (fromJSString <$> (js_getLabel self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPURenderingContext.hs
@@ -0,0 +1,390 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPURenderingContext
+       (js_createLibrary, createLibrary, createLibrary_,
+        js_createRenderPipelineState, createRenderPipelineState,
+        createRenderPipelineState_, createRenderPipelineStateUnsafe,
+        createRenderPipelineStateUnchecked, js_createDepthStencilState,
+        createDepthStencilState, createDepthStencilState_,
+        createDepthStencilStateUnsafe, createDepthStencilStateUnchecked,
+        js_createComputePipelineState, createComputePipelineState,
+        createComputePipelineState_, createComputePipelineStateUnsafe,
+        createComputePipelineStateUnchecked, js_createCommandQueue,
+        createCommandQueue, createCommandQueue_, createCommandQueueUnsafe,
+        createCommandQueueUnchecked, js_nextDrawable, nextDrawable,
+        nextDrawable_, nextDrawableUnsafe, nextDrawableUnchecked,
+        js_createBuffer, createBuffer, createBuffer_, createBufferUnsafe,
+        createBufferUnchecked, js_createTexture, createTexture,
+        createTexture_, createTextureUnsafe, createTextureUnchecked,
+        pattern PixelFormatBGRA8Unorm, pattern PixelFormatDepth32Float,
+        pattern PixelFormatStencil8, pattern PixelFormatInvalid,
+        pattern LoadActionDontCare, pattern LoadActionLoad,
+        pattern LoadActionClear, pattern StoreActionDontCare,
+        pattern StoreActionStore, pattern StoreActionMultisampleResolve,
+        pattern PrimitiveTypePoint, pattern PrimitiveTypeLine,
+        pattern PrimitiveTypeLineStrip, pattern PrimitiveTypeTriangle,
+        pattern PrimitiveTypeTriangleStrip, pattern CompareFunctionNever,
+        pattern CompareFunctionLess, pattern CompareFunctionEqual,
+        pattern CompareFunctionLessEqual, pattern CompareFunctionGreater,
+        pattern CompareFunctionNotEqual,
+        pattern CompareFunctionGreaterEqual, pattern CompareFunctionAlways,
+        pattern TextureType1D, pattern TextureType1DArray,
+        pattern TextureType2D, pattern TextureType2DArray,
+        pattern TextureType2DMultisample, pattern TextureTypeCube,
+        pattern TextureTypeCubeArray, pattern TextureType3D,
+        pattern StorageModeShared, pattern StorageModeManaged,
+        pattern StorageModePrivate, pattern TextureUsageUnknown,
+        pattern TextureUsageShaderRead, pattern TextureUsageShaderWrite,
+        pattern TextureUsageRenderTarget,
+        pattern TextureUsagePixelFormatView, WebGPURenderingContext(..),
+        gTypeWebGPURenderingContext)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createLibrary\"]($2); })"
+        js_createLibrary ::
+        WebGPURenderingContext -> JSString -> IO WebGPULibrary
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
+createLibrary ::
+              (MonadIO m, ToJSString sourceCode) =>
+                WebGPURenderingContext -> sourceCode -> m WebGPULibrary
+createLibrary self sourceCode
+  = liftIO (js_createLibrary self (toJSString sourceCode))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createLibrary Mozilla WebGPURenderingContext.createLibrary documentation> 
+createLibrary_ ::
+               (MonadIO m, ToJSString sourceCode) =>
+                 WebGPURenderingContext -> sourceCode -> m ()
+createLibrary_ self sourceCode
+  = liftIO (void (js_createLibrary self (toJSString sourceCode)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createRenderPipelineState\"]($2); })"
+        js_createRenderPipelineState ::
+        WebGPURenderingContext ->
+          WebGPURenderPipelineDescriptor ->
+            IO (Nullable WebGPURenderPipelineState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
+createRenderPipelineState ::
+                          (MonadIO m) =>
+                            WebGPURenderingContext ->
+                              WebGPURenderPipelineDescriptor ->
+                                m (Maybe WebGPURenderPipelineState)
+createRenderPipelineState self descriptor
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createRenderPipelineState self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
+createRenderPipelineState_ ::
+                           (MonadIO m) =>
+                             WebGPURenderingContext -> WebGPURenderPipelineDescriptor -> m ()
+createRenderPipelineState_ self descriptor
+  = liftIO (void (js_createRenderPipelineState self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
+createRenderPipelineStateUnsafe ::
+                                (MonadIO m, HasCallStack) =>
+                                  WebGPURenderingContext ->
+                                    WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
+createRenderPipelineStateUnsafe self descriptor
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_createRenderPipelineState self descriptor))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createRenderPipelineState Mozilla WebGPURenderingContext.createRenderPipelineState documentation> 
+createRenderPipelineStateUnchecked ::
+                                   (MonadIO m) =>
+                                     WebGPURenderingContext ->
+                                       WebGPURenderPipelineDescriptor -> m WebGPURenderPipelineState
+createRenderPipelineStateUnchecked self descriptor
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_createRenderPipelineState self descriptor))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createDepthStencilState\"]($2); })" js_createDepthStencilState ::
+        WebGPURenderingContext ->
+          WebGPUDepthStencilDescriptor ->
+            IO (Nullable WebGPUDepthStencilState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
+createDepthStencilState ::
+                        (MonadIO m) =>
+                          WebGPURenderingContext ->
+                            WebGPUDepthStencilDescriptor -> m (Maybe WebGPUDepthStencilState)
+createDepthStencilState self descriptor
+  = liftIO
+      (nullableToMaybe <$> (js_createDepthStencilState self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
+createDepthStencilState_ ::
+                         (MonadIO m) =>
+                           WebGPURenderingContext -> WebGPUDepthStencilDescriptor -> m ()
+createDepthStencilState_ self descriptor
+  = liftIO (void (js_createDepthStencilState self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
+createDepthStencilStateUnsafe ::
+                              (MonadIO m, HasCallStack) =>
+                                WebGPURenderingContext ->
+                                  WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
+createDepthStencilStateUnsafe self descriptor
+  = liftIO
+      ((nullableToMaybe <$> (js_createDepthStencilState self descriptor))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createDepthStencilState Mozilla WebGPURenderingContext.createDepthStencilState documentation> 
+createDepthStencilStateUnchecked ::
+                                 (MonadIO m) =>
+                                   WebGPURenderingContext ->
+                                     WebGPUDepthStencilDescriptor -> m WebGPUDepthStencilState
+createDepthStencilStateUnchecked self descriptor
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_createDepthStencilState self descriptor))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"createComputePipelineState\"]($2); })"
+        js_createComputePipelineState ::
+        WebGPURenderingContext ->
+          WebGPUFunction -> IO (Nullable WebGPUComputePipelineState)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
+createComputePipelineState ::
+                           (MonadIO m) =>
+                             WebGPURenderingContext ->
+                               WebGPUFunction -> m (Maybe WebGPUComputePipelineState)
+createComputePipelineState self function
+  = liftIO
+      (nullableToMaybe <$> (js_createComputePipelineState self function))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
+createComputePipelineState_ ::
+                            (MonadIO m) => WebGPURenderingContext -> WebGPUFunction -> m ()
+createComputePipelineState_ self function
+  = liftIO (void (js_createComputePipelineState self function))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
+createComputePipelineStateUnsafe ::
+                                 (MonadIO m, HasCallStack) =>
+                                   WebGPURenderingContext ->
+                                     WebGPUFunction -> m WebGPUComputePipelineState
+createComputePipelineStateUnsafe self function
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_createComputePipelineState self function))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createComputePipelineState Mozilla WebGPURenderingContext.createComputePipelineState documentation> 
+createComputePipelineStateUnchecked ::
+                                    (MonadIO m) =>
+                                      WebGPURenderingContext ->
+                                        WebGPUFunction -> m WebGPUComputePipelineState
+createComputePipelineStateUnchecked self function
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_createComputePipelineState self function))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"createCommandQueue\"](); })"
+        js_createCommandQueue ::
+        WebGPURenderingContext -> IO (Nullable WebGPUCommandQueue)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
+createCommandQueue ::
+                   (MonadIO m) =>
+                     WebGPURenderingContext -> m (Maybe WebGPUCommandQueue)
+createCommandQueue self
+  = liftIO (nullableToMaybe <$> (js_createCommandQueue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
+createCommandQueue_ ::
+                    (MonadIO m) => WebGPURenderingContext -> m ()
+createCommandQueue_ self
+  = liftIO (void (js_createCommandQueue self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
+createCommandQueueUnsafe ::
+                         (MonadIO m, HasCallStack) =>
+                           WebGPURenderingContext -> m WebGPUCommandQueue
+createCommandQueueUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_createCommandQueue self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createCommandQueue Mozilla WebGPURenderingContext.createCommandQueue documentation> 
+createCommandQueueUnchecked ::
+                            (MonadIO m) => WebGPURenderingContext -> m WebGPUCommandQueue
+createCommandQueueUnchecked self
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_createCommandQueue self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"nextDrawable\"](); })"
+        js_nextDrawable ::
+        WebGPURenderingContext -> IO (Nullable WebGPUDrawable)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
+nextDrawable ::
+             (MonadIO m) => WebGPURenderingContext -> m (Maybe WebGPUDrawable)
+nextDrawable self
+  = liftIO (nullableToMaybe <$> (js_nextDrawable self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
+nextDrawable_ :: (MonadIO m) => WebGPURenderingContext -> m ()
+nextDrawable_ self = liftIO (void (js_nextDrawable self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
+nextDrawableUnsafe ::
+                   (MonadIO m, HasCallStack) =>
+                     WebGPURenderingContext -> m WebGPUDrawable
+nextDrawableUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_nextDrawable self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.nextDrawable Mozilla WebGPURenderingContext.nextDrawable documentation> 
+nextDrawableUnchecked ::
+                      (MonadIO m) => WebGPURenderingContext -> m WebGPUDrawable
+nextDrawableUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_nextDrawable self))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createBuffer\"]($2); })"
+        js_createBuffer ::
+        WebGPURenderingContext ->
+          ArrayBufferView -> IO (Nullable WebGPUBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
+createBuffer ::
+             (MonadIO m, IsArrayBufferView data') =>
+               WebGPURenderingContext -> data' -> m (Maybe WebGPUBuffer)
+createBuffer self data'
+  = liftIO
+      (nullableToMaybe <$>
+         (js_createBuffer self (toArrayBufferView data')))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
+createBuffer_ ::
+              (MonadIO m, IsArrayBufferView data') =>
+                WebGPURenderingContext -> data' -> m ()
+createBuffer_ self data'
+  = liftIO (void (js_createBuffer self (toArrayBufferView data')))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
+createBufferUnsafe ::
+                   (MonadIO m, IsArrayBufferView data', HasCallStack) =>
+                     WebGPURenderingContext -> data' -> m WebGPUBuffer
+createBufferUnsafe self data'
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_createBuffer self (toArrayBufferView data')))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createBuffer Mozilla WebGPURenderingContext.createBuffer documentation> 
+createBufferUnchecked ::
+                      (MonadIO m, IsArrayBufferView data') =>
+                        WebGPURenderingContext -> data' -> m WebGPUBuffer
+createBufferUnchecked self data'
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_createBuffer self (toArrayBufferView data')))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createTexture\"]($2); })"
+        js_createTexture ::
+        WebGPURenderingContext ->
+          WebGPUTextureDescriptor -> IO (Nullable WebGPUTexture)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
+createTexture ::
+              (MonadIO m) =>
+                WebGPURenderingContext ->
+                  WebGPUTextureDescriptor -> m (Maybe WebGPUTexture)
+createTexture self descriptor
+  = liftIO (nullableToMaybe <$> (js_createTexture self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
+createTexture_ ::
+               (MonadIO m) =>
+                 WebGPURenderingContext -> WebGPUTextureDescriptor -> m ()
+createTexture_ self descriptor
+  = liftIO (void (js_createTexture self descriptor))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
+createTextureUnsafe ::
+                    (MonadIO m, HasCallStack) =>
+                      WebGPURenderingContext ->
+                        WebGPUTextureDescriptor -> m WebGPUTexture
+createTextureUnsafe self descriptor
+  = liftIO
+      ((nullableToMaybe <$> (js_createTexture self descriptor)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext.createTexture Mozilla WebGPURenderingContext.createTexture documentation> 
+createTextureUnchecked ::
+                       (MonadIO m) =>
+                         WebGPURenderingContext ->
+                           WebGPUTextureDescriptor -> m WebGPUTexture
+createTextureUnchecked self descriptor
+  = liftIO
+      (fromJust . nullableToMaybe <$> (js_createTexture self descriptor))
+pattern PixelFormatBGRA8Unorm = 80
+pattern PixelFormatDepth32Float = 252
+pattern PixelFormatStencil8 = 253
+pattern PixelFormatInvalid = 0
+pattern LoadActionDontCare = 0
+pattern LoadActionLoad = 1
+pattern LoadActionClear = 2
+pattern StoreActionDontCare = 0
+pattern StoreActionStore = 1
+pattern StoreActionMultisampleResolve = 2
+pattern PrimitiveTypePoint = 0
+pattern PrimitiveTypeLine = 1
+pattern PrimitiveTypeLineStrip = 2
+pattern PrimitiveTypeTriangle = 3
+pattern PrimitiveTypeTriangleStrip = 4
+pattern CompareFunctionNever = 0
+pattern CompareFunctionLess = 1
+pattern CompareFunctionEqual = 2
+pattern CompareFunctionLessEqual = 3
+pattern CompareFunctionGreater = 4
+pattern CompareFunctionNotEqual = 5
+pattern CompareFunctionGreaterEqual = 6
+pattern CompareFunctionAlways = 7
+pattern TextureType1D = 0
+pattern TextureType1DArray = 1
+pattern TextureType2D = 2
+pattern TextureType2DArray = 3
+pattern TextureType2DMultisample = 4
+pattern TextureTypeCube = 5
+pattern TextureTypeCubeArray = 6
+pattern TextureType3D = 7
+pattern StorageModeShared = 0
+pattern StorageModeManaged = 1
+pattern StorageModePrivate = 2
+pattern TextureUsageUnknown = 0
+pattern TextureUsageShaderRead = 1
+pattern TextureUsageShaderWrite = 2
+pattern TextureUsageRenderTarget = 4
+pattern TextureUsagePixelFormatView = 16
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTexture.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUTexture
+       (js_getWidth, getWidth, js_getHeight, getHeight, WebGPUTexture(..),
+        gTypeWebGPUTexture)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        WebGPUTexture -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.width Mozilla WebGPUTexture.width documentation> 
+getWidth :: (MonadIO m) => WebGPUTexture -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        WebGPUTexture -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture.height Mozilla WebGPUTexture.height documentation> 
+getHeight :: (MonadIO m) => WebGPUTexture -> m Word
+getHeight self = liftIO (js_getHeight self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebGPUTextureDescriptor.hs
@@ -0,0 +1,134 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebGPUTextureDescriptor
+       (js_newWebGPUTextureDescriptor, newWebGPUTextureDescriptor,
+        js_setTextureType, setTextureType, js_getTextureType,
+        getTextureType, js_setWidth, setWidth, js_getWidth, getWidth,
+        js_setHeight, setHeight, js_getHeight, getHeight,
+        js_setSampleCount, setSampleCount, js_getSampleCount,
+        getSampleCount, js_setStorageMode, setStorageMode,
+        js_getStorageMode, getStorageMode, js_setUsage, setUsage,
+        js_getUsage, getUsage, WebGPUTextureDescriptor(..),
+        gTypeWebGPUTextureDescriptor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return new window[\"WebGPUTextureDescriptor\"]($1,\n$2, $3, $4); })"
+        js_newWebGPUTextureDescriptor ::
+        Word -> Word -> Word -> Bool -> IO WebGPUTextureDescriptor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation> 
+newWebGPUTextureDescriptor ::
+                           (MonadIO m) =>
+                             Word -> Word -> Word -> Bool -> m WebGPUTextureDescriptor
+newWebGPUTextureDescriptor pixelFormat width height mipmapped
+  = liftIO
+      (js_newWebGPUTextureDescriptor pixelFormat width height mipmapped)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"textureType\"] = $2; })"
+        js_setTextureType :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
+setTextureType ::
+               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setTextureType self val = liftIO (js_setTextureType self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"textureType\"]; })"
+        js_getTextureType :: WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.textureType Mozilla WebGPUTextureDescriptor.textureType documentation> 
+getTextureType :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getTextureType self = liftIO (js_getTextureType self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"width\"] = $2; })" js_setWidth
+        :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
+setWidth :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setWidth self val = liftIO (js_setWidth self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"width\"]; })" js_getWidth ::
+        WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.width Mozilla WebGPUTextureDescriptor.width documentation> 
+getWidth :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getWidth self = liftIO (js_getWidth self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"height\"] = $2; })"
+        js_setHeight :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
+setHeight :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setHeight self val = liftIO (js_setHeight self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"height\"]; })" js_getHeight ::
+        WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.height Mozilla WebGPUTextureDescriptor.height documentation> 
+getHeight :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getHeight self = liftIO (js_getHeight self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"sampleCount\"] = $2; })"
+        js_setSampleCount :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
+setSampleCount ::
+               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setSampleCount self val = liftIO (js_setSampleCount self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sampleCount\"]; })"
+        js_getSampleCount :: WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.sampleCount Mozilla WebGPUTextureDescriptor.sampleCount documentation> 
+getSampleCount :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getSampleCount self = liftIO (js_getSampleCount self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"storageMode\"] = $2; })"
+        js_setStorageMode :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
+setStorageMode ::
+               (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setStorageMode self val = liftIO (js_setStorageMode self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"storageMode\"]; })"
+        js_getStorageMode :: WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.storageMode Mozilla WebGPUTextureDescriptor.storageMode documentation> 
+getStorageMode :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getStorageMode self = liftIO (js_getStorageMode self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"usage\"] = $2; })" js_setUsage
+        :: WebGPUTextureDescriptor -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
+setUsage :: (MonadIO m) => WebGPUTextureDescriptor -> Word -> m ()
+setUsage self val = liftIO (js_setUsage self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"usage\"]; })" js_getUsage ::
+        WebGPUTextureDescriptor -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor.usage Mozilla WebGPUTextureDescriptor.usage documentation> 
+getUsage :: (MonadIO m) => WebGPUTextureDescriptor -> m Word
+getUsage self = liftIO (js_getUsage self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitAnimationEvent.hs
@@ -0,0 +1,61 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitAnimationEvent
+       (js_newWebKitAnimationEvent, newWebKitAnimationEvent,
+        js_getAnimationName, getAnimationName, js_getElapsedTime,
+        getElapsedTime, WebKitAnimationEvent(..),
+        gTypeWebKitAnimationEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitAnimationEvent\"]($1,\n$2); })"
+        js_newWebKitAnimationEvent ::
+        JSString ->
+          Optional WebKitAnimationEventInit -> IO WebKitAnimationEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation> 
+newWebKitAnimationEvent ::
+                        (MonadIO m, ToJSString type') =>
+                          type' -> Maybe WebKitAnimationEventInit -> m WebKitAnimationEvent
+newWebKitAnimationEvent type' eventInitDict
+  = liftIO
+      (js_newWebKitAnimationEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"animationName\"]; })"
+        js_getAnimationName :: WebKitAnimationEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.animationName Mozilla WebKitAnimationEvent.animationName documentation> 
+getAnimationName ::
+                 (MonadIO m, FromJSString result) =>
+                   WebKitAnimationEvent -> m result
+getAnimationName self
+  = liftIO (fromJSString <$> (js_getAnimationName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: WebKitAnimationEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent.elapsedTime Mozilla WebKitAnimationEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadIO m) => WebKitAnimationEvent -> m Double
+getElapsedTime self = liftIO (js_getElapsedTime self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSMatrix.hs
@@ -0,0 +1,552 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSMatrix
+       (js_newWebKitCSSMatrix, newWebKitCSSMatrix, js_setMatrixValue,
+        setMatrixValue, js_multiply, multiply, multiply_, js_inverse,
+        inverse, inverse_, js_translate, translate, translate_, js_scale,
+        scale, scale_, js_rotate, rotate, rotate_, js_rotateAxisAngle,
+        rotateAxisAngle, rotateAxisAngle_, js_skewX, skewX, skewX_,
+        js_skewY, skewY, skewY_, js_toString, toString, toString_, js_setA,
+        setA, js_getA, getA, js_setB, setB, js_getB, getB, js_setC, setC,
+        js_getC, getC, js_setD, setD, js_getD, getD, js_setE, setE,
+        js_getE, getE, js_setF, setF, js_getF, getF, js_setM11, setM11,
+        js_getM11, getM11, js_setM12, setM12, js_getM12, getM12, js_setM13,
+        setM13, js_getM13, getM13, js_setM14, setM14, js_getM14, getM14,
+        js_setM21, setM21, js_getM21, getM21, js_setM22, setM22, js_getM22,
+        getM22, js_setM23, setM23, js_getM23, getM23, js_setM24, setM24,
+        js_getM24, getM24, js_setM31, setM31, js_getM31, getM31, js_setM32,
+        setM32, js_getM32, getM32, js_setM33, setM33, js_getM33, getM33,
+        js_setM34, setM34, js_getM34, getM34, js_setM41, setM41, js_getM41,
+        getM41, js_setM42, setM42, js_getM42, getM42, js_setM43, setM43,
+        js_getM43, getM43, js_setM44, setM44, js_getM44, getM44,
+        WebKitCSSMatrix(..), gTypeWebKitCSSMatrix)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1) => { return new window[\"WebKitCSSMatrix\"]($1); })" js_newWebKitCSSMatrix ::
+        Optional JSString -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation> 
+newWebKitCSSMatrix ::
+                   (MonadIO m, ToJSString cssValue) =>
+                     Maybe cssValue -> m WebKitCSSMatrix
+newWebKitCSSMatrix cssValue
+  = liftIO (js_newWebKitCSSMatrix (toOptionalJSString cssValue))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"setMatrixValue\"]($2); })"
+        js_setMatrixValue :: WebKitCSSMatrix -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.setMatrixValue Mozilla WebKitCSSMatrix.setMatrixValue documentation> 
+setMatrixValue ::
+               (MonadIO m, ToJSString string) =>
+                 WebKitCSSMatrix -> Maybe string -> m ()
+setMatrixValue self string
+  = liftIO (js_setMatrixValue self (toOptionalJSString string))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"multiply\"]($2); })" js_multiply
+        ::
+        WebKitCSSMatrix -> Optional WebKitCSSMatrix -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
+multiply ::
+         (MonadIO m) =>
+           WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m WebKitCSSMatrix
+multiply self secondMatrix
+  = liftIO (js_multiply self (maybeToOptional secondMatrix))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.multiply Mozilla WebKitCSSMatrix.multiply documentation> 
+multiply_ ::
+          (MonadIO m) => WebKitCSSMatrix -> Maybe WebKitCSSMatrix -> m ()
+multiply_ self secondMatrix
+  = liftIO (void (js_multiply self (maybeToOptional secondMatrix)))
+ 
+foreign import javascript safe "(($1) => { return $1[\"inverse\"](); })" js_inverse ::
+        WebKitCSSMatrix -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
+inverse :: (MonadIO m) => WebKitCSSMatrix -> m WebKitCSSMatrix
+inverse self = liftIO (js_inverse self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.inverse Mozilla WebKitCSSMatrix.inverse documentation> 
+inverse_ :: (MonadIO m) => WebKitCSSMatrix -> m ()
+inverse_ self = liftIO (void (js_inverse self))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"translate\"]($2, $3, $4); })"
+        js_translate ::
+        WebKitCSSMatrix ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
+translate ::
+          (MonadIO m) =>
+            WebKitCSSMatrix ->
+              Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
+translate self x y z
+  = liftIO
+      (js_translate self (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional z))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.translate Mozilla WebKitCSSMatrix.translate documentation> 
+translate_ ::
+           (MonadIO m) =>
+             WebKitCSSMatrix ->
+               Maybe Double -> Maybe Double -> Maybe Double -> m ()
+translate_ self x y z
+  = liftIO
+      (void
+         (js_translate self (maybeToOptional x) (maybeToOptional y)
+            (maybeToOptional z)))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"scale\"]($2, $3, $4); })"
+        js_scale ::
+        WebKitCSSMatrix ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
+scale ::
+      (MonadIO m) =>
+        WebKitCSSMatrix ->
+          Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
+scale self scaleX scaleY scaleZ
+  = liftIO
+      (js_scale self (maybeToOptional scaleX) (maybeToOptional scaleY)
+         (maybeToOptional scaleZ))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.scale Mozilla WebKitCSSMatrix.scale documentation> 
+scale_ ::
+       (MonadIO m) =>
+         WebKitCSSMatrix ->
+           Maybe Double -> Maybe Double -> Maybe Double -> m ()
+scale_ self scaleX scaleY scaleZ
+  = liftIO
+      (void
+         (js_scale self (maybeToOptional scaleX) (maybeToOptional scaleY)
+            (maybeToOptional scaleZ)))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"rotate\"]($2, $3, $4); })"
+        js_rotate ::
+        WebKitCSSMatrix ->
+          Optional Double ->
+            Optional Double -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
+rotate ::
+       (MonadIO m) =>
+         WebKitCSSMatrix ->
+           Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
+rotate self rotX rotY rotZ
+  = liftIO
+      (js_rotate self (maybeToOptional rotX) (maybeToOptional rotY)
+         (maybeToOptional rotZ))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotate Mozilla WebKitCSSMatrix.rotate documentation> 
+rotate_ ::
+        (MonadIO m) =>
+          WebKitCSSMatrix ->
+            Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotate_ self rotX rotY rotZ
+  = liftIO
+      (void
+         (js_rotate self (maybeToOptional rotX) (maybeToOptional rotY)
+            (maybeToOptional rotZ)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5) => { return $1[\"rotateAxisAngle\"]($2, $3,\n$4, $5); })" js_rotateAxisAngle ::
+        WebKitCSSMatrix ->
+          Optional Double ->
+            Optional Double ->
+              Optional Double -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
+rotateAxisAngle ::
+                (MonadIO m) =>
+                  WebKitCSSMatrix ->
+                    Maybe Double ->
+                      Maybe Double -> Maybe Double -> Maybe Double -> m WebKitCSSMatrix
+rotateAxisAngle self x y z angle
+  = liftIO
+      (js_rotateAxisAngle self (maybeToOptional x) (maybeToOptional y)
+         (maybeToOptional z)
+         (maybeToOptional angle))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.rotateAxisAngle Mozilla WebKitCSSMatrix.rotateAxisAngle documentation> 
+rotateAxisAngle_ ::
+                 (MonadIO m) =>
+                   WebKitCSSMatrix ->
+                     Maybe Double ->
+                       Maybe Double -> Maybe Double -> Maybe Double -> m ()
+rotateAxisAngle_ self x y z angle
+  = liftIO
+      (void
+         (js_rotateAxisAngle self (maybeToOptional x) (maybeToOptional y)
+            (maybeToOptional z)
+            (maybeToOptional angle)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"skewX\"]($2); })" js_skewX ::
+        WebKitCSSMatrix -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
+skewX ::
+      (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
+skewX self angle = liftIO (js_skewX self (maybeToOptional angle))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewX Mozilla WebKitCSSMatrix.skewX documentation> 
+skewX_ :: (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m ()
+skewX_ self angle
+  = liftIO (void (js_skewX self (maybeToOptional angle)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"skewY\"]($2); })" js_skewY ::
+        WebKitCSSMatrix -> Optional Double -> IO WebKitCSSMatrix
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
+skewY ::
+      (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m WebKitCSSMatrix
+skewY self angle = liftIO (js_skewY self (maybeToOptional angle))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.skewY Mozilla WebKitCSSMatrix.skewY documentation> 
+skewY_ :: (MonadIO m) => WebKitCSSMatrix -> Maybe Double -> m ()
+skewY_ self angle
+  = liftIO (void (js_skewY self (maybeToOptional angle)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: WebKitCSSMatrix -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => WebKitCSSMatrix -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.toString Mozilla WebKitCSSMatrix.toString documentation> 
+toString_ :: (MonadIO m) => WebKitCSSMatrix -> m ()
+toString_ self = liftIO (void (js_toString self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"a\"] = $2; })" js_setA ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
+setA :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setA self val = liftIO (js_setA self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"a\"]; })" js_getA ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.a Mozilla WebKitCSSMatrix.a documentation> 
+getA :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getA self = liftIO (js_getA self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"b\"] = $2; })" js_setB ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
+setB :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setB self val = liftIO (js_setB self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"b\"]; })" js_getB ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.b Mozilla WebKitCSSMatrix.b documentation> 
+getB :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getB self = liftIO (js_getB self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"c\"] = $2; })" js_setC ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
+setC :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setC self val = liftIO (js_setC self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"c\"]; })" js_getC ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.c Mozilla WebKitCSSMatrix.c documentation> 
+getC :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getC self = liftIO (js_getC self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"d\"] = $2; })" js_setD ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
+setD :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setD self val = liftIO (js_setD self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"d\"]; })" js_getD ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.d Mozilla WebKitCSSMatrix.d documentation> 
+getD :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getD self = liftIO (js_getD self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"e\"] = $2; })" js_setE ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
+setE :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setE self val = liftIO (js_setE self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"e\"]; })" js_getE ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.e Mozilla WebKitCSSMatrix.e documentation> 
+getE :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getE self = liftIO (js_getE self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"f\"] = $2; })" js_setF ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
+setF :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setF self val = liftIO (js_setF self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"f\"]; })" js_getF ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.f Mozilla WebKitCSSMatrix.f documentation> 
+getF :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getF self = liftIO (js_getF self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m11\"] = $2; })" js_setM11 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
+setM11 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM11 self val = liftIO (js_setM11 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m11\"]; })" js_getM11 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m11 Mozilla WebKitCSSMatrix.m11 documentation> 
+getM11 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM11 self = liftIO (js_getM11 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m12\"] = $2; })" js_setM12 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
+setM12 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM12 self val = liftIO (js_setM12 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m12\"]; })" js_getM12 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m12 Mozilla WebKitCSSMatrix.m12 documentation> 
+getM12 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM12 self = liftIO (js_getM12 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m13\"] = $2; })" js_setM13 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
+setM13 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM13 self val = liftIO (js_setM13 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m13\"]; })" js_getM13 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m13 Mozilla WebKitCSSMatrix.m13 documentation> 
+getM13 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM13 self = liftIO (js_getM13 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m14\"] = $2; })" js_setM14 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
+setM14 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM14 self val = liftIO (js_setM14 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m14\"]; })" js_getM14 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m14 Mozilla WebKitCSSMatrix.m14 documentation> 
+getM14 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM14 self = liftIO (js_getM14 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m21\"] = $2; })" js_setM21 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
+setM21 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM21 self val = liftIO (js_setM21 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m21\"]; })" js_getM21 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m21 Mozilla WebKitCSSMatrix.m21 documentation> 
+getM21 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM21 self = liftIO (js_getM21 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m22\"] = $2; })" js_setM22 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
+setM22 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM22 self val = liftIO (js_setM22 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m22\"]; })" js_getM22 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m22 Mozilla WebKitCSSMatrix.m22 documentation> 
+getM22 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM22 self = liftIO (js_getM22 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m23\"] = $2; })" js_setM23 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
+setM23 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM23 self val = liftIO (js_setM23 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m23\"]; })" js_getM23 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m23 Mozilla WebKitCSSMatrix.m23 documentation> 
+getM23 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM23 self = liftIO (js_getM23 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m24\"] = $2; })" js_setM24 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
+setM24 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM24 self val = liftIO (js_setM24 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m24\"]; })" js_getM24 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m24 Mozilla WebKitCSSMatrix.m24 documentation> 
+getM24 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM24 self = liftIO (js_getM24 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m31\"] = $2; })" js_setM31 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
+setM31 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM31 self val = liftIO (js_setM31 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m31\"]; })" js_getM31 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m31 Mozilla WebKitCSSMatrix.m31 documentation> 
+getM31 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM31 self = liftIO (js_getM31 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m32\"] = $2; })" js_setM32 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
+setM32 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM32 self val = liftIO (js_setM32 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m32\"]; })" js_getM32 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m32 Mozilla WebKitCSSMatrix.m32 documentation> 
+getM32 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM32 self = liftIO (js_getM32 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m33\"] = $2; })" js_setM33 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
+setM33 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM33 self val = liftIO (js_setM33 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m33\"]; })" js_getM33 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m33 Mozilla WebKitCSSMatrix.m33 documentation> 
+getM33 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM33 self = liftIO (js_getM33 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m34\"] = $2; })" js_setM34 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
+setM34 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM34 self val = liftIO (js_setM34 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m34\"]; })" js_getM34 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m34 Mozilla WebKitCSSMatrix.m34 documentation> 
+getM34 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM34 self = liftIO (js_getM34 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m41\"] = $2; })" js_setM41 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
+setM41 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM41 self val = liftIO (js_setM41 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m41\"]; })" js_getM41 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m41 Mozilla WebKitCSSMatrix.m41 documentation> 
+getM41 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM41 self = liftIO (js_getM41 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m42\"] = $2; })" js_setM42 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
+setM42 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM42 self val = liftIO (js_setM42 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m42\"]; })" js_getM42 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m42 Mozilla WebKitCSSMatrix.m42 documentation> 
+getM42 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM42 self = liftIO (js_getM42 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m43\"] = $2; })" js_setM43 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
+setM43 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM43 self val = liftIO (js_setM43 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m43\"]; })" js_getM43 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m43 Mozilla WebKitCSSMatrix.m43 documentation> 
+getM43 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM43 self = liftIO (js_getM43 self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"m44\"] = $2; })" js_setM44 ::
+        WebKitCSSMatrix -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
+setM44 :: (MonadIO m) => WebKitCSSMatrix -> Double -> m ()
+setM44 self val = liftIO (js_setM44 self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"m44\"]; })" js_getM44 ::
+        WebKitCSSMatrix -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix.m44 Mozilla WebKitCSSMatrix.m44 documentation> 
+getM44 :: (MonadIO m) => WebKitCSSMatrix -> m Double
+getM44 self = liftIO (js_getM44 self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSRegionRule.hs
@@ -0,0 +1,34 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSRegionRule
+       (js_getCssRules, getCssRules, WebKitCSSRegionRule(..),
+        gTypeWebKitCSSRegionRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"cssRules\"]; })" js_getCssRules
+        :: WebKitCSSRegionRule -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule.cssRules Mozilla WebKitCSSRegionRule.cssRules documentation> 
+getCssRules :: (MonadIO m) => WebKitCSSRegionRule -> m CSSRuleList
+getCssRules self = liftIO (js_getCssRules self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitCSSViewportRule.hs
@@ -0,0 +1,35 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitCSSViewportRule
+       (js_getStyle, getStyle, WebKitCSSViewportRule(..),
+        gTypeWebKitCSSViewportRule)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"style\"]; })" js_getStyle ::
+        WebKitCSSViewportRule -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule.style Mozilla WebKitCSSViewportRule.style documentation> 
+getStyle ::
+         (MonadIO m) => WebKitCSSViewportRule -> m CSSStyleDeclaration
+getStyle self = liftIO (js_getStyle self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyError.hs
@@ -0,0 +1,50 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyError
+       (pattern MEDIA_KEYERR_UNKNOWN, pattern MEDIA_KEYERR_CLIENT,
+        pattern MEDIA_KEYERR_SERVICE, pattern MEDIA_KEYERR_OUTPUT,
+        pattern MEDIA_KEYERR_HARDWARECHANGE, pattern MEDIA_KEYERR_DOMAIN,
+        js_getCode, getCode, js_getSystemCode, getSystemCode,
+        WebKitMediaKeyError(..), gTypeWebKitMediaKeyError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+pattern MEDIA_KEYERR_UNKNOWN = 1
+pattern MEDIA_KEYERR_CLIENT = 2
+pattern MEDIA_KEYERR_SERVICE = 3
+pattern MEDIA_KEYERR_OUTPUT = 4
+pattern MEDIA_KEYERR_HARDWARECHANGE = 5
+pattern MEDIA_KEYERR_DOMAIN = 6
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        WebKitMediaKeyError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.code Mozilla WebKitMediaKeyError.code documentation> 
+getCode :: (MonadIO m) => WebKitMediaKeyError -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"systemCode\"]; })"
+        js_getSystemCode :: WebKitMediaKeyError -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError.systemCode Mozilla WebKitMediaKeyError.systemCode documentation> 
+getSystemCode :: (MonadIO m) => WebKitMediaKeyError -> m Word
+getSystemCode self = liftIO (js_getSystemCode self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyMessageEvent.hs
@@ -0,0 +1,64 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyMessageEvent
+       (js_newWebKitMediaKeyMessageEvent, newWebKitMediaKeyMessageEvent,
+        js_getMessage, getMessage, js_getDestinationURL, getDestinationURL,
+        WebKitMediaKeyMessageEvent(..), gTypeWebKitMediaKeyMessageEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitMediaKeyMessageEvent\"]($1,\n$2); })"
+        js_newWebKitMediaKeyMessageEvent ::
+        JSString ->
+          Optional WebKitMediaKeyMessageEventInit ->
+            IO WebKitMediaKeyMessageEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation> 
+newWebKitMediaKeyMessageEvent ::
+                              (MonadIO m, ToJSString type') =>
+                                type' ->
+                                  Maybe WebKitMediaKeyMessageEventInit ->
+                                    m WebKitMediaKeyMessageEvent
+newWebKitMediaKeyMessageEvent type' eventInitDict
+  = liftIO
+      (js_newWebKitMediaKeyMessageEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        WebKitMediaKeyMessageEvent -> IO Uint8Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.message Mozilla WebKitMediaKeyMessageEvent.message documentation> 
+getMessage ::
+           (MonadIO m) => WebKitMediaKeyMessageEvent -> m Uint8Array
+getMessage self = liftIO (js_getMessage self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"destinationURL\"]; })"
+        js_getDestinationURL :: WebKitMediaKeyMessageEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent.destinationURL Mozilla WebKitMediaKeyMessageEvent.destinationURL documentation> 
+getDestinationURL ::
+                  (MonadIO m, FromJSString result) =>
+                    WebKitMediaKeyMessageEvent -> m result
+getDestinationURL self
+  = liftIO (fromJSString <$> (js_getDestinationURL self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeyNeededEvent.hs
@@ -0,0 +1,53 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeyNeededEvent
+       (js_newWebKitMediaKeyNeededEvent, newWebKitMediaKeyNeededEvent,
+        js_getInitData, getInitData, WebKitMediaKeyNeededEvent(..),
+        gTypeWebKitMediaKeyNeededEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitMediaKeyNeededEvent\"]($1,\n$2); })"
+        js_newWebKitMediaKeyNeededEvent ::
+        JSString ->
+          Optional WebKitMediaKeyNeededEventInit ->
+            IO WebKitMediaKeyNeededEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent Mozilla WebKitMediaKeyNeededEvent documentation> 
+newWebKitMediaKeyNeededEvent ::
+                             (MonadIO m, ToJSString type') =>
+                               type' ->
+                                 Maybe WebKitMediaKeyNeededEventInit -> m WebKitMediaKeyNeededEvent
+newWebKitMediaKeyNeededEvent type' eventInitDict
+  = liftIO
+      (js_newWebKitMediaKeyNeededEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"initData\"]; })" js_getInitData
+        :: WebKitMediaKeyNeededEvent -> IO Uint8Array
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent.initData Mozilla WebKitMediaKeyNeededEvent.initData documentation> 
+getInitData ::
+            (MonadIO m) => WebKitMediaKeyNeededEvent -> m Uint8Array
+getInitData self = liftIO (js_getInitData self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeySession.hs
@@ -0,0 +1,85 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeySession
+       (js_update, update, js_close, close, js_getError, getError,
+        js_getKeySystem, getKeySystem, js_getSessionId, getSessionId,
+        webKitKeyAdded, webKitKeyError, webKitKeyMessage,
+        WebKitMediaKeySession(..), gTypeWebKitMediaKeySession)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"update\"]($2); })" js_update ::
+        WebKitMediaKeySession -> Uint8Array -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.update Mozilla WebKitMediaKeySession.update documentation> 
+update ::
+       (MonadIO m, IsUint8Array key) =>
+         WebKitMediaKeySession -> key -> m ()
+update self key = liftIO (js_update self (toUint8Array key))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        WebKitMediaKeySession -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.close Mozilla WebKitMediaKeySession.close documentation> 
+close :: (MonadIO m) => WebKitMediaKeySession -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"error\"]; })" js_getError ::
+        WebKitMediaKeySession -> IO WebKitMediaKeyError
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.error Mozilla WebKitMediaKeySession.error documentation> 
+getError ::
+         (MonadIO m) => WebKitMediaKeySession -> m WebKitMediaKeyError
+getError self = liftIO (js_getError self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
+        js_getKeySystem :: WebKitMediaKeySession -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.keySystem Mozilla WebKitMediaKeySession.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) =>
+               WebKitMediaKeySession -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"sessionId\"]; })"
+        js_getSessionId :: WebKitMediaKeySession -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.sessionId Mozilla WebKitMediaKeySession.sessionId documentation> 
+getSessionId ::
+             (MonadIO m, FromJSString result) =>
+               WebKitMediaKeySession -> m result
+getSessionId self
+  = liftIO (fromJSString <$> (js_getSessionId self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyadded Mozilla WebKitMediaKeySession.onwebkitkeyadded documentation> 
+webKitKeyAdded :: EventName WebKitMediaKeySession Event
+webKitKeyAdded = unsafeEventName (toJSString "webkitkeyadded")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeyerror Mozilla WebKitMediaKeySession.onwebkitkeyerror documentation> 
+webKitKeyError :: EventName WebKitMediaKeySession Event
+webKitKeyError = unsafeEventName (toJSString "webkitkeyerror")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession.onwebkitkeymessage Mozilla WebKitMediaKeySession.onwebkitkeymessage documentation> 
+webKitKeyMessage :: EventName WebKitMediaKeySession Event
+webKitKeyMessage = unsafeEventName (toJSString "webkitkeymessage")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitMediaKeys.hs
@@ -0,0 +1,93 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitMediaKeys
+       (js_newWebKitMediaKeys, newWebKitMediaKeys, js_createSession,
+        createSession, createSession_, js_isTypeSupported, isTypeSupported,
+        isTypeSupported_, js_getKeySystem, getKeySystem,
+        WebKitMediaKeys(..), gTypeWebKitMediaKeys)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe
+        "(($1) => { return new window[\"WebKitMediaKeys\"]($1); })" js_newWebKitMediaKeys ::
+        JSString -> IO WebKitMediaKeys
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation> 
+newWebKitMediaKeys ::
+                   (MonadIO m, ToJSString keySystem) => keySystem -> m WebKitMediaKeys
+newWebKitMediaKeys keySystem
+  = liftIO (js_newWebKitMediaKeys (toJSString keySystem))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createSession\"]($2, $3); })"
+        js_createSession ::
+        WebKitMediaKeys ->
+          JSString -> Uint8Array -> IO WebKitMediaKeySession
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession ::
+              (MonadIO m, ToJSString type', IsUint8Array initData) =>
+                WebKitMediaKeys -> type' -> initData -> m WebKitMediaKeySession
+createSession self type' initData
+  = liftIO
+      (js_createSession self (toJSString type') (toUint8Array initData))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.createSession Mozilla WebKitMediaKeys.createSession documentation> 
+createSession_ ::
+               (MonadIO m, ToJSString type', IsUint8Array initData) =>
+                 WebKitMediaKeys -> type' -> initData -> m ()
+createSession_ self type' initData
+  = liftIO
+      (void
+         (js_createSession self (toJSString type') (toUint8Array initData)))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return (window[\"WebKitMediaKeys\"][\"isTypeSupported\"]($1,\n$2) ? 1 : 0); })"
+        js_isTypeSupported :: JSString -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
+isTypeSupported ::
+                (MonadIO m, ToJSString keySystem, ToJSString type') =>
+                  keySystem -> Maybe type' -> m Bool
+isTypeSupported keySystem type'
+  = liftIO
+      (js_isTypeSupported (toJSString keySystem)
+         (toOptionalJSString type'))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.isTypeSupported Mozilla WebKitMediaKeys.isTypeSupported documentation> 
+isTypeSupported_ ::
+                 (MonadIO m, ToJSString keySystem, ToJSString type') =>
+                   keySystem -> Maybe type' -> m ()
+isTypeSupported_ keySystem type'
+  = liftIO
+      (void
+         (js_isTypeSupported (toJSString keySystem)
+            (toOptionalJSString type')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"keySystem\"]; })"
+        js_getKeySystem :: WebKitMediaKeys -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys.keySystem Mozilla WebKitMediaKeys.keySystem documentation> 
+getKeySystem ::
+             (MonadIO m, FromJSString result) => WebKitMediaKeys -> m result
+getKeySystem self
+  = liftIO (fromJSString <$> (js_getKeySystem self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamedFlow.hs
@@ -0,0 +1,98 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitNamedFlow
+       (js_getRegionsByContent, getRegionsByContent, getRegionsByContent_,
+        js_getRegions, getRegions, getRegions_, js_getContent, getContent,
+        getContent_, js_getName, getName, js_getOverset, getOverset,
+        js_getFirstEmptyRegionIndex, getFirstEmptyRegionIndex,
+        WebKitNamedFlow(..), gTypeWebKitNamedFlow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getRegionsByContent\"]($2); })"
+        js_getRegionsByContent ::
+        WebKitNamedFlow -> Optional Node -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
+getRegionsByContent ::
+                    (MonadIO m, IsNode contentNode) =>
+                      WebKitNamedFlow -> Maybe contentNode -> m NodeList
+getRegionsByContent self contentNode
+  = liftIO
+      (js_getRegionsByContent self
+         (maybeToOptional (fmap toNode contentNode)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegionsByContent Mozilla WebKitNamedFlow.getRegionsByContent documentation> 
+getRegionsByContent_ ::
+                     (MonadIO m, IsNode contentNode) =>
+                       WebKitNamedFlow -> Maybe contentNode -> m ()
+getRegionsByContent_ self contentNode
+  = liftIO
+      (void
+         (js_getRegionsByContent self
+            (maybeToOptional (fmap toNode contentNode))))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getRegions\"](); })"
+        js_getRegions :: WebKitNamedFlow -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
+getRegions :: (MonadIO m) => WebKitNamedFlow -> m NodeList
+getRegions self = liftIO (js_getRegions self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getRegions Mozilla WebKitNamedFlow.getRegions documentation> 
+getRegions_ :: (MonadIO m) => WebKitNamedFlow -> m ()
+getRegions_ self = liftIO (void (js_getRegions self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getContent\"](); })"
+        js_getContent :: WebKitNamedFlow -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
+getContent :: (MonadIO m) => WebKitNamedFlow -> m NodeList
+getContent self = liftIO (js_getContent self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.getContent Mozilla WebKitNamedFlow.getContent documentation> 
+getContent_ :: (MonadIO m) => WebKitNamedFlow -> m ()
+getContent_ self = liftIO (void (js_getContent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        WebKitNamedFlow -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.name Mozilla WebKitNamedFlow.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => WebKitNamedFlow -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"overset\"] ? 1 : 0); })"
+        js_getOverset :: WebKitNamedFlow -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.overset Mozilla WebKitNamedFlow.overset documentation> 
+getOverset :: (MonadIO m) => WebKitNamedFlow -> m Bool
+getOverset self = liftIO (js_getOverset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"firstEmptyRegionIndex\"]; })"
+        js_getFirstEmptyRegionIndex :: WebKitNamedFlow -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow.firstEmptyRegionIndex Mozilla WebKitNamedFlow.firstEmptyRegionIndex documentation> 
+getFirstEmptyRegionIndex :: (MonadIO m) => WebKitNamedFlow -> m Int
+getFirstEmptyRegionIndex self
+  = liftIO (js_getFirstEmptyRegionIndex self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitNamespace.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitNamespace
+       (js_getMessageHandlers, getMessageHandlers, WebKitNamespace(..),
+        gTypeWebKitNamespace)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"messageHandlers\"]; })"
+        js_getMessageHandlers ::
+        WebKitNamespace -> IO UserMessageHandlersNamespace
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace.messageHandlers Mozilla WebKitNamespace.messageHandlers documentation> 
+getMessageHandlers ::
+                   (MonadIO m) => WebKitNamespace -> m UserMessageHandlersNamespace
+getMessageHandlers self = liftIO (js_getMessageHandlers self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitPlaybackTargetAvailabilityEvent.hs
@@ -0,0 +1,58 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitPlaybackTargetAvailabilityEvent
+       (js_newWebKitPlaybackTargetAvailabilityEvent,
+        newWebKitPlaybackTargetAvailabilityEvent, js_getAvailability,
+        getAvailability, WebKitPlaybackTargetAvailabilityEvent(..),
+        gTypeWebKitPlaybackTargetAvailabilityEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitPlaybackTargetAvailabilityEvent\"]($1,\n$2); })"
+        js_newWebKitPlaybackTargetAvailabilityEvent ::
+        JSString ->
+          Optional WebKitPlaybackTargetAvailabilityEventInit ->
+            IO WebKitPlaybackTargetAvailabilityEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation> 
+newWebKitPlaybackTargetAvailabilityEvent ::
+                                         (MonadIO m, ToJSString type') =>
+                                           type' ->
+                                             Maybe WebKitPlaybackTargetAvailabilityEventInit ->
+                                               m WebKitPlaybackTargetAvailabilityEvent
+newWebKitPlaybackTargetAvailabilityEvent type' eventInitDict
+  = liftIO
+      (js_newWebKitPlaybackTargetAvailabilityEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"availability\"]; })"
+        js_getAvailability ::
+        WebKitPlaybackTargetAvailabilityEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent.availability Mozilla WebKitPlaybackTargetAvailabilityEvent.availability documentation> 
+getAvailability ::
+                (MonadIO m, FromJSString result) =>
+                  WebKitPlaybackTargetAvailabilityEvent -> m result
+getAvailability self
+  = liftIO (fromJSString <$> (js_getAvailability self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitPoint.hs
@@ -0,0 +1,66 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitPoint
+       (js_newWebKitPoint, newWebKitPoint, js_setX, setX, js_getX, getX,
+        js_setY, setY, js_getY, getY, WebKitPoint(..), gTypeWebKitPoint)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitPoint\"]($1,\n$2); })" js_newWebKitPoint ::
+        Optional Float -> Optional Float -> IO WebKitPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation> 
+newWebKitPoint ::
+               (MonadIO m) => Maybe Float -> Maybe Float -> m WebKitPoint
+newWebKitPoint x y
+  = liftIO
+      (js_newWebKitPoint (maybeToOptional x) (maybeToOptional y))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"x\"] = $2; })" js_setX ::
+        WebKitPoint -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
+setX :: (MonadIO m) => WebKitPoint -> Float -> m ()
+setX self val = liftIO (js_setX self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"x\"]; })" js_getX ::
+        WebKitPoint -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.x Mozilla WebKitPoint.x documentation> 
+getX :: (MonadIO m) => WebKitPoint -> m Float
+getX self = liftIO (js_getX self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"y\"] = $2; })" js_setY ::
+        WebKitPoint -> Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
+setY :: (MonadIO m) => WebKitPoint -> Float -> m ()
+setY self val = liftIO (js_setY self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"y\"]; })" js_getY ::
+        WebKitPoint -> IO Float
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint.y Mozilla WebKitPoint.y documentation> 
+getY :: (MonadIO m) => WebKitPoint -> m Float
+getY self = liftIO (js_getY self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitSubtleCrypto.hs
@@ -0,0 +1,358 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitSubtleCrypto
+       (js_encrypt, encrypt, encrypt_, js_decrypt, decrypt, decrypt_,
+        js_sign, sign, sign_, js_verify, verify, verify_, js_digest,
+        digest, digest_, js_generateKey, generateKey, generateKey_,
+        js_importKey, importKey, importKey_, js_exportKey, exportKey,
+        exportKey_, js_wrapKey, wrapKey, wrapKey_, js_unwrapKey, unwrapKey,
+        unwrapKey_, WebKitSubtleCrypto(..), gTypeWebKitSubtleCrypto)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"encrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_encrypt ::
+        WebKitSubtleCrypto ->
+          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+          WebKitSubtleCrypto ->
+            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
+encrypt self algorithm key data'
+  = liftIO
+      ((toJSVal data' >>=
+          \ data'' -> js_encrypt self (toJSString algorithm) key data'')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.encrypt Mozilla WebKitSubtleCrypto.encrypt documentation> 
+encrypt_ ::
+         (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
+encrypt_ self algorithm key data'
+  = liftIO
+      (void
+         (toJSVal data' >>=
+            \ data'' -> js_encrypt self (toJSString algorithm) key data''))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"decrypt\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_decrypt ::
+        WebKitSubtleCrypto ->
+          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+          WebKitSubtleCrypto ->
+            algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
+decrypt self algorithm key data'
+  = liftIO
+      ((toJSVal data' >>=
+          \ data'' -> js_decrypt self (toJSString algorithm) key data'')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.decrypt Mozilla WebKitSubtleCrypto.decrypt documentation> 
+decrypt_ ::
+         (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+           WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
+decrypt_ self algorithm key data'
+  = liftIO
+      (void
+         (toJSVal data' >>=
+            \ data'' -> js_decrypt self (toJSString algorithm) key data''))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"sign\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_sign ::
+        WebKitSubtleCrypto ->
+          JSString -> CryptoKey -> JSVal -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign ::
+     (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+       WebKitSubtleCrypto ->
+         algorithm -> CryptoKey -> [data'] -> m ArrayBuffer
+sign self algorithm key data'
+  = liftIO
+      ((toJSVal data' >>=
+          \ data'' -> js_sign self (toJSString algorithm) key data'')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.sign Mozilla WebKitSubtleCrypto.sign documentation> 
+sign_ ::
+      (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+        WebKitSubtleCrypto -> algorithm -> CryptoKey -> [data'] -> m ()
+sign_ self algorithm key data'
+  = liftIO
+      (void
+         (toJSVal data' >>=
+            \ data'' -> js_sign self (toJSString algorithm) key data''))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $c) => { return $1[\"verify\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_verify ::
+        WebKitSubtleCrypto ->
+          JSString ->
+            CryptoKey -> CryptoOperationData -> JSVal -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify ::
+       (MonadIO m, ToJSString algorithm, IsCryptoOperationData signature,
+        IsCryptoOperationData data') =>
+         WebKitSubtleCrypto ->
+           algorithm -> CryptoKey -> signature -> [data'] -> m Bool
+verify self algorithm key signature data'
+  = liftIO
+      ((toJSVal data' >>=
+          \ data'' ->
+            js_verify self (toJSString algorithm) key
+              (toCryptoOperationData signature)
+              data'')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.verify Mozilla WebKitSubtleCrypto.verify documentation> 
+verify_ ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData signature,
+         IsCryptoOperationData data') =>
+          WebKitSubtleCrypto ->
+            algorithm -> CryptoKey -> signature -> [data'] -> m ()
+verify_ self algorithm key signature data'
+  = liftIO
+      (void
+         (toJSVal data' >>=
+            \ data'' ->
+              js_verify self (toJSString algorithm) key
+                (toCryptoOperationData signature)
+                data''))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"digest\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_digest ::
+        WebKitSubtleCrypto -> JSString -> JSVal -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest ::
+       (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+         WebKitSubtleCrypto -> algorithm -> [data'] -> m ArrayBuffer
+digest self algorithm data'
+  = liftIO
+      ((toJSVal data' >>=
+          \ data'' -> js_digest self (toJSString algorithm) data'')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.digest Mozilla WebKitSubtleCrypto.digest documentation> 
+digest_ ::
+        (MonadIO m, ToJSString algorithm, IsCryptoOperationData data') =>
+          WebKitSubtleCrypto -> algorithm -> [data'] -> m ()
+digest_ self algorithm data'
+  = liftIO
+      (void
+         (toJSVal data' >>=
+            \ data'' -> js_digest self (toJSString algorithm) data''))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $c) => { return $1[\"generateKey\"]($2, $3, $4).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_generateKey ::
+        WebKitSubtleCrypto ->
+          JSString -> Bool -> JSVal -> IO (JSVal, CryptoKeyOrKeyPair)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey ::
+            (MonadIO m, ToJSString algorithm) =>
+              WebKitSubtleCrypto ->
+                algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKeyOrKeyPair
+generateKey self algorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_generateKey self (toJSString algorithm) extractable keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.generateKey Mozilla WebKitSubtleCrypto.generateKey documentation> 
+generateKey_ ::
+             (MonadIO m, ToJSString algorithm) =>
+               WebKitSubtleCrypto -> algorithm -> Bool -> [CryptoKeyUsage] -> m ()
+generateKey_ self algorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_generateKey self (toJSString algorithm) extractable keyUsages'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $6, $c) => { return $1[\"importKey\"]($2, $3, $4, $5,\n$6).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_importKey ::
+        WebKitSubtleCrypto ->
+          JSString ->
+            CryptoOperationData ->
+              Optional JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey ::
+          (MonadIO m, ToJSString format, IsCryptoOperationData keyData,
+           ToJSString algorithm) =>
+            WebKitSubtleCrypto ->
+              format ->
+                keyData ->
+                  Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m CryptoKey
+importKey self format keyData algorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_importKey self (toJSString format)
+              (toCryptoOperationData keyData)
+              (toOptionalJSString algorithm)
+              extractable
+              keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.importKey Mozilla WebKitSubtleCrypto.importKey documentation> 
+importKey_ ::
+           (MonadIO m, ToJSString format, IsCryptoOperationData keyData,
+            ToJSString algorithm) =>
+             WebKitSubtleCrypto ->
+               format ->
+                 keyData -> Maybe algorithm -> Bool -> [CryptoKeyUsage] -> m ()
+importKey_ self format keyData algorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_importKey self (toJSString format)
+                (toCryptoOperationData keyData)
+                (toOptionalJSString algorithm)
+                extractable
+                keyUsages'))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"exportKey\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_exportKey ::
+        WebKitSubtleCrypto ->
+          JSString -> CryptoKey -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey ::
+          (MonadIO m, ToJSString format) =>
+            WebKitSubtleCrypto -> format -> CryptoKey -> m ArrayBuffer
+exportKey self format key
+  = liftIO
+      ((js_exportKey self (toJSString format) key) >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.exportKey Mozilla WebKitSubtleCrypto.exportKey documentation> 
+exportKey_ ::
+           (MonadIO m, ToJSString format) =>
+             WebKitSubtleCrypto -> format -> CryptoKey -> m ()
+exportKey_ self format key
+  = liftIO (void (js_exportKey self (toJSString format) key))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $c) => { return $1[\"wrapKey\"]($2, $3, $4, $5).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_wrapKey ::
+        WebKitSubtleCrypto ->
+          JSString ->
+            CryptoKey -> CryptoKey -> JSString -> IO (JSVal, ArrayBuffer)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey ::
+        (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
+          WebKitSubtleCrypto ->
+            format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ArrayBuffer
+wrapKey self format key wrappingKey wrapAlgorithm
+  = liftIO
+      ((js_wrapKey self (toJSString format) key wrappingKey
+          (toJSString wrapAlgorithm))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.wrapKey Mozilla WebKitSubtleCrypto.wrapKey documentation> 
+wrapKey_ ::
+         (MonadIO m, ToJSString format, ToJSString wrapAlgorithm) =>
+           WebKitSubtleCrypto ->
+             format -> CryptoKey -> CryptoKey -> wrapAlgorithm -> m ()
+wrapKey_ self format key wrappingKey wrapAlgorithm
+  = liftIO
+      (void
+         (js_wrapKey self (toJSString format) key wrappingKey
+            (toJSString wrapAlgorithm)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $c) => { return $1[\"unwrapKey\"]($2, $3, $4, $5,\n$6, $7, $8).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_unwrapKey ::
+        WebKitSubtleCrypto ->
+          JSString ->
+            CryptoOperationData ->
+              CryptoKey ->
+                JSString ->
+                  Optional JSString -> Bool -> JSVal -> IO (JSVal, CryptoKey)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKey ::
+          (MonadIO m, ToJSString format, IsCryptoOperationData wrappedKey,
+           ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
+            WebKitSubtleCrypto ->
+              format ->
+                wrappedKey ->
+                  CryptoKey ->
+                    unwrapAlgorithm ->
+                      Maybe unwrappedKeyAlgorithm ->
+                        Bool -> [CryptoKeyUsage] -> m CryptoKey
+unwrapKey self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftIO
+      ((toJSVal keyUsages >>=
+          \ keyUsages' ->
+            js_unwrapKey self (toJSString format)
+              (toCryptoOperationData wrappedKey)
+              unwrappingKey
+              (toJSString unwrapAlgorithm)
+              (toOptionalJSString unwrappedKeyAlgorithm)
+              extractable
+              keyUsages')
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto.unwrapKey Mozilla WebKitSubtleCrypto.unwrapKey documentation> 
+unwrapKey_ ::
+           (MonadIO m, ToJSString format, IsCryptoOperationData wrappedKey,
+            ToJSString unwrapAlgorithm, ToJSString unwrappedKeyAlgorithm) =>
+             WebKitSubtleCrypto ->
+               format ->
+                 wrappedKey ->
+                   CryptoKey ->
+                     unwrapAlgorithm ->
+                       Maybe unwrappedKeyAlgorithm -> Bool -> [CryptoKeyUsage] -> m ()
+unwrapKey_ self format wrappedKey unwrappingKey unwrapAlgorithm
+  unwrappedKeyAlgorithm extractable keyUsages
+  = liftIO
+      (void
+         (toJSVal keyUsages >>=
+            \ keyUsages' ->
+              js_unwrapKey self (toJSString format)
+                (toCryptoOperationData wrappedKey)
+                unwrappingKey
+                (toJSString unwrapAlgorithm)
+                (toOptionalJSString unwrappedKeyAlgorithm)
+                extractable
+                keyUsages'))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebKitTransitionEvent.hs
@@ -0,0 +1,71 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebKitTransitionEvent
+       (js_newWebKitTransitionEvent, newWebKitTransitionEvent,
+        js_getPropertyName, getPropertyName, js_getElapsedTime,
+        getElapsedTime, js_getPseudoElement, getPseudoElement,
+        WebKitTransitionEvent(..), gTypeWebKitTransitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WebKitTransitionEvent\"]($1,\n$2); })"
+        js_newWebKitTransitionEvent ::
+        JSString ->
+          Optional WebKitTransitionEventInit -> IO WebKitTransitionEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation> 
+newWebKitTransitionEvent ::
+                         (MonadIO m, ToJSString type') =>
+                           type' -> Maybe WebKitTransitionEventInit -> m WebKitTransitionEvent
+newWebKitTransitionEvent type' eventInitDict
+  = liftIO
+      (js_newWebKitTransitionEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"propertyName\"]; })"
+        js_getPropertyName :: WebKitTransitionEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.propertyName Mozilla WebKitTransitionEvent.propertyName documentation> 
+getPropertyName ::
+                (MonadIO m, FromJSString result) =>
+                  WebKitTransitionEvent -> m result
+getPropertyName self
+  = liftIO (fromJSString <$> (js_getPropertyName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"elapsedTime\"]; })"
+        js_getElapsedTime :: WebKitTransitionEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.elapsedTime Mozilla WebKitTransitionEvent.elapsedTime documentation> 
+getElapsedTime :: (MonadIO m) => WebKitTransitionEvent -> m Double
+getElapsedTime self = liftIO (js_getElapsedTime self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pseudoElement\"]; })"
+        js_getPseudoElement :: WebKitTransitionEvent -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent.pseudoElement Mozilla WebKitTransitionEvent.pseudoElement documentation> 
+getPseudoElement ::
+                 (MonadIO m, FromJSString result) =>
+                   WebKitTransitionEvent -> m result
+getPseudoElement self
+  = liftIO (fromJSString <$> (js_getPseudoElement self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WebSocket.hs
@@ -0,0 +1,209 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WebSocket
+       (js_newWebSocket, newWebSocket, js_newWebSocket', newWebSocket',
+        js_send, send, js_sendView, sendView, js_sendBlob, sendBlob,
+        js_sendString, sendString, js_close, close, pattern CONNECTING,
+        pattern OPEN, pattern CLOSING, pattern CLOSED, js_getUrl, getUrl,
+        js_getReadyState, getReadyState, js_getBufferedAmount,
+        getBufferedAmount, open, message, error, closeEvent,
+        js_getProtocol, getProtocol, getProtocolUnsafe,
+        getProtocolUnchecked, js_getExtensions, getExtensions,
+        getExtensionsUnsafe, getExtensionsUnchecked, js_setBinaryType,
+        setBinaryType, js_getBinaryType, getBinaryType, WebSocket(..),
+        gTypeWebSocket)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2) => { return new window[\"WebSocket\"]($1, $2); })"
+        js_newWebSocket :: JSString -> JSVal -> IO WebSocket
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
+newWebSocket ::
+             (MonadIO m, ToJSString url, ToJSString protocols) =>
+               url -> [protocols] -> m WebSocket
+newWebSocket url protocols
+  = liftIO
+      (toJSVal protocols >>=
+         \ protocols' -> js_newWebSocket (toJSString url) protocols')
+ 
+foreign import javascript safe "(($1, $2) => { return new window[\"WebSocket\"]($1, $2); })"
+        js_newWebSocket' :: JSString -> JSString -> IO WebSocket
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation> 
+newWebSocket' ::
+              (MonadIO m, ToJSString url, ToJSString protocol) =>
+                url -> protocol -> m WebSocket
+newWebSocket' url protocol
+  = liftIO (js_newWebSocket' (toJSString url) (toJSString protocol))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
+        WebSocket -> ArrayBuffer -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+send ::
+     (MonadIO m, IsArrayBuffer data') => WebSocket -> data' -> m ()
+send self data' = liftIO (js_send self (toArrayBuffer data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendView ::
+        WebSocket -> ArrayBufferView -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendView ::
+         (MonadIO m, IsArrayBufferView data') => WebSocket -> data' -> m ()
+sendView self data'
+  = liftIO (js_sendView self (toArrayBufferView data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendBlob ::
+        WebSocket -> Blob -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendBlob :: (MonadIO m, IsBlob data') => WebSocket -> data' -> m ()
+sendBlob self data' = liftIO (js_sendBlob self (toBlob data'))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_sendString ::
+        WebSocket -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.send Mozilla WebSocket.send documentation> 
+sendString ::
+           (MonadIO m, ToJSString data') => WebSocket -> data' -> m ()
+sendString self data'
+  = liftIO (js_sendString self (toJSString data'))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"close\"]($2, $3); })" js_close ::
+        WebSocket -> Optional Word -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.close Mozilla WebSocket.close documentation> 
+close ::
+      (MonadIO m, ToJSString reason) =>
+        WebSocket -> Maybe Word -> Maybe reason -> m ()
+close self code reason
+  = liftIO
+      (js_close self (maybeToOptional code) (toOptionalJSString reason))
+pattern CONNECTING = 0
+pattern OPEN = 1
+pattern CLOSING = 2
+pattern CLOSED = 3
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"url\"]; })" js_getUrl ::
+        WebSocket -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.url Mozilla WebSocket.url documentation> 
+getUrl :: (MonadIO m, FromJSString result) => WebSocket -> m result
+getUrl self = liftIO (fromJSString <$> (js_getUrl self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: WebSocket -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.readyState Mozilla WebSocket.readyState documentation> 
+getReadyState :: (MonadIO m) => WebSocket -> m Word
+getReadyState self = liftIO (js_getReadyState self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"bufferedAmount\"]; })"
+        js_getBufferedAmount :: WebSocket -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.bufferedAmount Mozilla WebSocket.bufferedAmount documentation> 
+getBufferedAmount :: (MonadIO m) => WebSocket -> m Word
+getBufferedAmount self = liftIO (js_getBufferedAmount self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onopen Mozilla WebSocket.onopen documentation> 
+open :: EventName WebSocket Event
+open = unsafeEventNameAsync (toJSString "open")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onmessage Mozilla WebSocket.onmessage documentation> 
+message :: EventName WebSocket MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onerror Mozilla WebSocket.onerror documentation> 
+error :: EventName WebSocket UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.onclose Mozilla WebSocket.onclose documentation> 
+closeEvent :: EventName WebSocket CloseEvent
+closeEvent = unsafeEventNameAsync (toJSString "close")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: WebSocket -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result)
+getProtocol self
+  = liftIO (fromMaybeJSString <$> (js_getProtocol self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
+getProtocolUnsafe ::
+                  (MonadIO m, HasCallStack, FromJSString result) =>
+                    WebSocket -> m result
+getProtocolUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getProtocol self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.protocol Mozilla WebSocket.protocol documentation> 
+getProtocolUnchecked ::
+                     (MonadIO m, FromJSString result) => WebSocket -> m result
+getProtocolUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getProtocol self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"extensions\"]; })"
+        js_getExtensions :: WebSocket -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
+getExtensions ::
+              (MonadIO m, FromJSString result) => WebSocket -> m (Maybe result)
+getExtensions self
+  = liftIO (fromMaybeJSString <$> (js_getExtensions self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
+getExtensionsUnsafe ::
+                    (MonadIO m, HasCallStack, FromJSString result) =>
+                      WebSocket -> m result
+getExtensionsUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getExtensions self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.extensions Mozilla WebSocket.extensions documentation> 
+getExtensionsUnchecked ::
+                       (MonadIO m, FromJSString result) => WebSocket -> m result
+getExtensionsUnchecked self
+  = liftIO (fromJust . fromMaybeJSString <$> (js_getExtensions self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"binaryType\"] = $2; })"
+        js_setBinaryType :: WebSocket -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
+setBinaryType ::
+              (MonadIO m, ToJSString val) => WebSocket -> val -> m ()
+setBinaryType self val
+  = liftIO (js_setBinaryType self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"binaryType\"]; })"
+        js_getBinaryType :: WebSocket -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket.binaryType Mozilla WebSocket.binaryType documentation> 
+getBinaryType ::
+              (MonadIO m, FromJSString result) => WebSocket -> m result
+getBinaryType self
+  = liftIO (fromJSString <$> (js_getBinaryType self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WheelEvent.hs
@@ -0,0 +1,146 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WheelEvent
+       (js_newWheelEvent, newWheelEvent, js_initWebKitWheelEvent,
+        initWebKitWheelEvent, pattern DOM_DELTA_PIXEL,
+        pattern DOM_DELTA_LINE, pattern DOM_DELTA_PAGE, js_getDeltaX,
+        getDeltaX, js_getDeltaY, getDeltaY, js_getDeltaZ, getDeltaZ,
+        js_getDeltaMode, getDeltaMode, js_getWheelDeltaX, getWheelDeltaX,
+        js_getWheelDeltaY, getWheelDeltaY, js_getWheelDelta, getWheelDelta,
+        js_getWebkitDirectionInvertedFromDevice,
+        getWebkitDirectionInvertedFromDevice, WheelEvent(..),
+        gTypeWheelEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return new window[\"WheelEvent\"]($1, $2); })" js_newWheelEvent ::
+        JSString -> Optional WheelEventInit -> IO WheelEvent
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation> 
+newWheelEvent ::
+              (MonadIO m, ToJSString type') =>
+                type' -> Maybe WheelEventInit -> m WheelEvent
+newWheelEvent type' eventInitDict
+  = liftIO
+      (js_newWheelEvent (toJSString type')
+         (maybeToOptional eventInitDict))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12) => { return $1[\"initWebKitWheelEvent\"]($2,\n$3, $4, $5, $6, $7, $8, $9, $10,\n$11, $12); })"
+        js_initWebKitWheelEvent ::
+        WheelEvent ->
+          Optional Int ->
+            Optional Int ->
+              Optional Window ->
+                Optional Int ->
+                  Optional Int ->
+                    Optional Int ->
+                      Optional Int -> Bool -> Bool -> Bool -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.initWebKitWheelEvent Mozilla WheelEvent.initWebKitWheelEvent documentation> 
+initWebKitWheelEvent ::
+                     (MonadIO m) =>
+                       WheelEvent ->
+                         Maybe Int ->
+                           Maybe Int ->
+                             Maybe Window ->
+                               Maybe Int ->
+                                 Maybe Int ->
+                                   Maybe Int -> Maybe Int -> Bool -> Bool -> Bool -> Bool -> m ()
+initWebKitWheelEvent self wheelDeltaX wheelDeltaY view screenX
+  screenY clientX clientY ctrlKey altKey shiftKey metaKey
+  = liftIO
+      (js_initWebKitWheelEvent self (maybeToOptional wheelDeltaX)
+         (maybeToOptional wheelDeltaY)
+         (maybeToOptional view)
+         (maybeToOptional screenX)
+         (maybeToOptional screenY)
+         (maybeToOptional clientX)
+         (maybeToOptional clientY)
+         ctrlKey
+         altKey
+         shiftKey
+         metaKey)
+pattern DOM_DELTA_PIXEL = 0
+pattern DOM_DELTA_LINE = 1
+pattern DOM_DELTA_PAGE = 2
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deltaX\"]; })" js_getDeltaX ::
+        WheelEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaX Mozilla WheelEvent.deltaX documentation> 
+getDeltaX :: (MonadIO m) => WheelEvent -> m Double
+getDeltaX self = liftIO (js_getDeltaX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deltaY\"]; })" js_getDeltaY ::
+        WheelEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaY Mozilla WheelEvent.deltaY documentation> 
+getDeltaY :: (MonadIO m) => WheelEvent -> m Double
+getDeltaY self = liftIO (js_getDeltaY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deltaZ\"]; })" js_getDeltaZ ::
+        WheelEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaZ Mozilla WheelEvent.deltaZ documentation> 
+getDeltaZ :: (MonadIO m) => WheelEvent -> m Double
+getDeltaZ self = liftIO (js_getDeltaZ self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"deltaMode\"]; })"
+        js_getDeltaMode :: WheelEvent -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.deltaMode Mozilla WheelEvent.deltaMode documentation> 
+getDeltaMode :: (MonadIO m) => WheelEvent -> m Word
+getDeltaMode self = liftIO (js_getDeltaMode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"wheelDeltaX\"]; })"
+        js_getWheelDeltaX :: WheelEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaX Mozilla WheelEvent.wheelDeltaX documentation> 
+getWheelDeltaX :: (MonadIO m) => WheelEvent -> m Int
+getWheelDeltaX self = liftIO (js_getWheelDeltaX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"wheelDeltaY\"]; })"
+        js_getWheelDeltaY :: WheelEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDeltaY Mozilla WheelEvent.wheelDeltaY documentation> 
+getWheelDeltaY :: (MonadIO m) => WheelEvent -> m Int
+getWheelDeltaY self = liftIO (js_getWheelDeltaY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"wheelDelta\"]; })"
+        js_getWheelDelta :: WheelEvent -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.wheelDelta Mozilla WheelEvent.wheelDelta documentation> 
+getWheelDelta :: (MonadIO m) => WheelEvent -> m Int
+getWheelDelta self = liftIO (js_getWheelDelta self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"webkitDirectionInvertedFromDevice\"] ? 1 : 0); })"
+        js_getWebkitDirectionInvertedFromDevice :: WheelEvent -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent.webkitDirectionInvertedFromDevice Mozilla WheelEvent.webkitDirectionInvertedFromDevice documentation> 
+getWebkitDirectionInvertedFromDevice ::
+                                     (MonadIO m) => WheelEvent -> m Bool
+getWebkitDirectionInvertedFromDevice self
+  = liftIO (js_getWebkitDirectionInvertedFromDevice self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Window.hs b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Window.hs
@@ -0,0 +1,1369 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Window
+       (js_decodeURI, decodeURI, decodeURI_, js_decodeURIComponent,
+        decodeURIComponent, decodeURIComponent_, js_encodeURI, encodeURI,
+        encodeURI_, js_encodeURIComponent, encodeURIComponent,
+        encodeURIComponent_, js_fetch, fetch, fetch_, js_openDatabase,
+        openDatabase, openDatabase_, openDatabaseUnsafe,
+        openDatabaseUnchecked, js_close, close, js_stop, stop, js_focus,
+        focus, js_blur, blur, js_open, open, open_, openUnsafe,
+        openUnchecked, js_alertNoMessage, alertNoMessage, js_alert, alert,
+        js_confirm, confirm, confirm_, js_prompt, prompt, prompt_,
+        promptUnsafe, promptUnchecked, js_print, print,
+        js_requestAnimationFrame, requestAnimationFrame,
+        requestAnimationFrame_, js_cancelAnimationFrame,
+        cancelAnimationFrame, js_postMessage, postMessage,
+        js_captureEvents, captureEvents, js_releaseEvents, releaseEvents,
+        js_getComputedStyle, getComputedStyle, getComputedStyle_,
+        js_matchMedia, matchMedia, matchMedia_, js_moveTo, moveTo,
+        js_moveBy, moveBy, js_resizeTo, resizeTo, js_resizeBy, resizeBy,
+        js_scrollOpt, scrollOpt, js_scroll, scroll, js_scrollToOpt,
+        scrollToOpt, js_scrollTo, scrollTo, js_scrollByOpt, scrollByOpt,
+        js_scrollBy, scrollBy, js_getSelection, getSelection,
+        getSelection_, getSelectionUnsafe, getSelectionUnchecked, js_find,
+        find, find_, js_webkitRequestAnimationFrame,
+        webkitRequestAnimationFrame, webkitRequestAnimationFrame_,
+        js_webkitCancelAnimationFrame, webkitCancelAnimationFrame,
+        js_webkitCancelRequestAnimationFrame,
+        webkitCancelRequestAnimationFrame, js_getMatchedCSSRules,
+        getMatchedCSSRules, getMatchedCSSRules_, js_showModalDialog,
+        showModalDialog, showModalDialog_,
+        js_webkitConvertPointFromPageToNode,
+        webkitConvertPointFromPageToNode,
+        webkitConvertPointFromPageToNode_,
+        js_webkitConvertPointFromNodeToPage,
+        webkitConvertPointFromNodeToPage,
+        webkitConvertPointFromNodeToPage_,
+        js_collectMatchingElementsInFlatTree,
+        collectMatchingElementsInFlatTree,
+        collectMatchingElementsInFlatTree_, js_matchingElementInFlatTree,
+        matchingElementInFlatTree, matchingElementInFlatTree_,
+        matchingElementInFlatTreeUnsafe,
+        matchingElementInFlatTreeUnchecked, js_getIndexedDB, getIndexedDB,
+        js_getWebkitIndexedDB, getWebkitIndexedDB, js_getWebkitStorageInfo,
+        getWebkitStorageInfo, js_getSpeechSynthesis, getSpeechSynthesis,
+        js_getWindow, getWindow, js_getSelf, getSelf, js_getDocument,
+        getDocument, js_setName, setName, js_getName, getName,
+        js_getLocation, getLocation, js_getHistory, getHistory,
+        js_getCustomElements, getCustomElements, js_getLocationbar,
+        getLocationbar, js_getMenubar, getMenubar, js_getPersonalbar,
+        getPersonalbar, js_getScrollbars, getScrollbars, js_getStatusbar,
+        getStatusbar, js_getToolbar, getToolbar, js_setStatus, setStatus,
+        js_getStatus, getStatus, js_getClosed, getClosed, js_getFrames,
+        getFrames, js_getLength, getLength, js_getTop, getTop,
+        getTopUnsafe, getTopUnchecked, js_getOpener, getOpener,
+        getOpenerUnsafe, getOpenerUnchecked, js_getParent, getParent,
+        getParentUnsafe, getParentUnchecked, js_getFrameElement,
+        getFrameElement, getFrameElementUnsafe, getFrameElementUnchecked,
+        js_getNavigator, getNavigator, js_getApplicationCache,
+        getApplicationCache, js_getSessionStorage, getSessionStorage,
+        js_getLocalStorage, getLocalStorage, js_getScreen, getScreen,
+        js_getInnerHeight, getInnerHeight, js_getInnerWidth, getInnerWidth,
+        js_getScrollX, getScrollX, js_getPageXOffset, getPageXOffset,
+        js_getScrollY, getScrollY, js_getPageYOffset, getPageYOffset,
+        js_getScreenX, getScreenX, js_getScreenY, getScreenY,
+        js_getOuterWidth, getOuterWidth, js_getOuterHeight, getOuterHeight,
+        js_getDevicePixelRatio, getDevicePixelRatio, js_getOrientation,
+        getOrientation, js_getEvent, getEvent, js_setDefaultStatus,
+        setDefaultStatus, js_getDefaultStatus, getDefaultStatus,
+        js_setDefaultstatus, setDefaultstatus, js_getDefaultstatus,
+        getDefaultstatus, js_getOffscreenBuffering, getOffscreenBuffering,
+        js_getScreenLeft, getScreenLeft, js_getScreenTop, getScreenTop,
+        js_getClientInformation, getClientInformation, js_getStyleMedia,
+        getStyleMedia, gestureChange, gestureEnd, gestureStart,
+        deviceMotion, deviceOrientation, webKitDeviceProximity,
+        webKitAnimationEnd, webKitAnimationIteration, webKitAnimationStart,
+        webKitTransitionEnd, Window(..), gTypeWindow)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"decodeURI\"]($2); })"
+        js_decodeURI :: Window -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
+decodeURI ::
+          (MonadIO m, ToJSString uri, FromJSString result) =>
+            Window -> uri -> m result
+decodeURI self uri
+  = liftIO (fromJSString <$> (js_decodeURI self (toJSString uri)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURI Mozilla Window.decodeURI documentation> 
+decodeURI_ :: (MonadIO m, ToJSString uri) => Window -> uri -> m ()
+decodeURI_ self uri
+  = liftIO (void (js_decodeURI self (toJSString uri)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"decodeURIComponent\"]($2); })"
+        js_decodeURIComponent :: Window -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
+decodeURIComponent ::
+                   (MonadIO m, ToJSString uri, FromJSString result) =>
+                     Window -> uri -> m result
+decodeURIComponent self uri
+  = liftIO
+      (fromJSString <$> (js_decodeURIComponent self (toJSString uri)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.decodeURIComponent Mozilla Window.decodeURIComponent documentation> 
+decodeURIComponent_ ::
+                    (MonadIO m, ToJSString uri) => Window -> uri -> m ()
+decodeURIComponent_ self uri
+  = liftIO (void (js_decodeURIComponent self (toJSString uri)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"encodeURI\"]($2); })"
+        js_encodeURI :: Window -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
+encodeURI ::
+          (MonadIO m, ToJSString uri, FromJSString result) =>
+            Window -> uri -> m result
+encodeURI self uri
+  = liftIO (fromJSString <$> (js_encodeURI self (toJSString uri)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURI Mozilla Window.encodeURI documentation> 
+encodeURI_ :: (MonadIO m, ToJSString uri) => Window -> uri -> m ()
+encodeURI_ self uri
+  = liftIO (void (js_encodeURI self (toJSString uri)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"encodeURIComponent\"]($2); })"
+        js_encodeURIComponent :: Window -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
+encodeURIComponent ::
+                   (MonadIO m, ToJSString uri, FromJSString result) =>
+                     Window -> uri -> m result
+encodeURIComponent self uri
+  = liftIO
+      (fromJSString <$> (js_encodeURIComponent self (toJSString uri)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.encodeURIComponent Mozilla Window.encodeURIComponent documentation> 
+encodeURIComponent_ ::
+                    (MonadIO m, ToJSString uri) => Window -> uri -> m ()
+encodeURIComponent_ self uri
+  = liftIO (void (js_encodeURIComponent self (toJSString uri)))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"fetch\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_fetch ::
+        Window -> JSVal -> Optional RequestInit -> IO (JSVal, Response)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
+fetch ::
+      (MonadIO m, ToJSVal input) =>
+        Window -> input -> Maybe RequestInit -> m Response
+fetch self input init
+  = liftIO
+      ((toJSVal input >>= \ input' -> js_fetch self input'
+          (maybeToOptional init))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.fetch Mozilla Window.fetch documentation> 
+fetch_ ::
+       (MonadIO m, ToJSVal input) =>
+         Window -> input -> Maybe RequestInit -> m ()
+fetch_ self input init
+  = liftIO
+      (void
+         (toJSVal input >>= \ input' -> js_fetch self input'
+            (maybeToOptional init)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"openDatabase\"]($2, $3, $4,\n$5, $6); })" js_openDatabase ::
+        Window ->
+          JSString ->
+            JSString ->
+              JSString ->
+                Word -> Optional DatabaseCallback -> IO (Nullable Database)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabase ::
+             (MonadIO m, ToJSString name, ToJSString version,
+              ToJSString displayName) =>
+               Window ->
+                 name ->
+                   version ->
+                     displayName -> Word -> Maybe DatabaseCallback -> m (Maybe Database)
+openDatabase self name version displayName estimatedSize
+  creationCallback
+  = liftIO
+      (nullableToMaybe <$>
+         (js_openDatabase self (toJSString name) (toJSString version)
+            (toJSString displayName)
+            estimatedSize
+            (maybeToOptional creationCallback)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabase_ ::
+              (MonadIO m, ToJSString name, ToJSString version,
+               ToJSString displayName) =>
+                Window ->
+                  name ->
+                    version -> displayName -> Word -> Maybe DatabaseCallback -> m ()
+openDatabase_ self name version displayName estimatedSize
+  creationCallback
+  = liftIO
+      (void
+         (js_openDatabase self (toJSString name) (toJSString version)
+            (toJSString displayName)
+            estimatedSize
+            (maybeToOptional creationCallback)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabaseUnsafe ::
+                   (MonadIO m, ToJSString name, ToJSString version,
+                    ToJSString displayName, HasCallStack) =>
+                     Window ->
+                       name ->
+                         version ->
+                           displayName -> Word -> Maybe DatabaseCallback -> m Database
+openDatabaseUnsafe self name version displayName estimatedSize
+  creationCallback
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_openDatabase self (toJSString name) (toJSString version)
+             (toJSString displayName)
+             estimatedSize
+             (maybeToOptional creationCallback)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation> 
+openDatabaseUnchecked ::
+                      (MonadIO m, ToJSString name, ToJSString version,
+                       ToJSString displayName) =>
+                        Window ->
+                          name ->
+                            version ->
+                              displayName -> Word -> Maybe DatabaseCallback -> m Database
+openDatabaseUnchecked self name version displayName estimatedSize
+  creationCallback
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_openDatabase self (toJSString name) (toJSString version)
+            (toJSString displayName)
+            estimatedSize
+            (maybeToOptional creationCallback)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.close Mozilla Window.close documentation> 
+close :: (MonadIO m) => Window -> m ()
+close self = liftIO (js_close self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"stop\"](); })" js_stop ::
+        Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.stop Mozilla Window.stop documentation> 
+stop :: (MonadIO m) => Window -> m ()
+stop self = liftIO (js_stop self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"focus\"](); })" js_focus ::
+        Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.focus Mozilla Window.focus documentation> 
+focus :: (MonadIO m) => Window -> m ()
+focus self = liftIO (js_focus self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"blur\"](); })" js_blur ::
+        Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.blur Mozilla Window.blur documentation> 
+blur :: (MonadIO m) => Window -> m ()
+blur self = liftIO (js_blur self)
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"open\"]($2, $3, $4); })" js_open
+        ::
+        Window ->
+          Optional JSString ->
+            Optional JSString -> Optional JSString -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+open ::
+     (MonadIO m, ToJSString url, ToJSString target,
+      ToJSString features) =>
+       Window ->
+         Maybe url -> Maybe target -> Maybe features -> m (Maybe Window)
+open self url target features
+  = liftIO
+      (nullableToMaybe <$>
+         (js_open self (toOptionalJSString url) (toOptionalJSString target)
+            (toOptionalJSString features)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+open_ ::
+      (MonadIO m, ToJSString url, ToJSString target,
+       ToJSString features) =>
+        Window -> Maybe url -> Maybe target -> Maybe features -> m ()
+open_ self url target features
+  = liftIO
+      (void
+         (js_open self (toOptionalJSString url) (toOptionalJSString target)
+            (toOptionalJSString features)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+openUnsafe ::
+           (MonadIO m, ToJSString url, ToJSString target, ToJSString features,
+            HasCallStack) =>
+             Window -> Maybe url -> Maybe target -> Maybe features -> m Window
+openUnsafe self url target features
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_open self (toOptionalJSString url) (toOptionalJSString target)
+             (toOptionalJSString features)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.open Mozilla Window.open documentation> 
+openUnchecked ::
+              (MonadIO m, ToJSString url, ToJSString target,
+               ToJSString features) =>
+                Window -> Maybe url -> Maybe target -> Maybe features -> m Window
+openUnchecked self url target features
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_open self (toOptionalJSString url) (toOptionalJSString target)
+            (toOptionalJSString features)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"alert\"](); })"
+        js_alertNoMessage :: Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
+alertNoMessage :: (MonadIO m) => Window -> m ()
+alertNoMessage self = liftIO (js_alertNoMessage self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"alert\"]($2); })" js_alert ::
+        Window -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.alert Mozilla Window.alert documentation> 
+alert ::
+      (MonadIO m, ToJSString message) => Window -> message -> m ()
+alert self message = liftIO (js_alert self (toJSString message))
+ 
+foreign import javascript unsafe "(($1, $2) => { return ($1[\"confirm\"]($2) ? 1 : 0); })"
+        js_confirm :: Window -> Optional JSString -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
+confirm ::
+        (MonadIO m, ToJSString message) =>
+          Window -> Maybe message -> m Bool
+confirm self message
+  = liftIO (js_confirm self (toOptionalJSString message))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.confirm Mozilla Window.confirm documentation> 
+confirm_ ::
+         (MonadIO m, ToJSString message) => Window -> Maybe message -> m ()
+confirm_ self message
+  = liftIO (void (js_confirm self (toOptionalJSString message)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"prompt\"]($2, $3); })" js_prompt
+        ::
+        Window ->
+          Optional JSString -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+prompt ::
+       (MonadIO m, ToJSString message, ToJSString defaultValue,
+        FromJSString result) =>
+         Window -> Maybe message -> Maybe defaultValue -> m (Maybe result)
+prompt self message defaultValue
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_prompt self (toOptionalJSString message)
+            (toOptionalJSString defaultValue)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+prompt_ ::
+        (MonadIO m, ToJSString message, ToJSString defaultValue) =>
+          Window -> Maybe message -> Maybe defaultValue -> m ()
+prompt_ self message defaultValue
+  = liftIO
+      (void
+         (js_prompt self (toOptionalJSString message)
+            (toOptionalJSString defaultValue)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+promptUnsafe ::
+             (MonadIO m, ToJSString message, ToJSString defaultValue,
+              HasCallStack, FromJSString result) =>
+               Window -> Maybe message -> Maybe defaultValue -> m result
+promptUnsafe self message defaultValue
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_prompt self (toOptionalJSString message)
+             (toOptionalJSString defaultValue)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.prompt Mozilla Window.prompt documentation> 
+promptUnchecked ::
+                (MonadIO m, ToJSString message, ToJSString defaultValue,
+                 FromJSString result) =>
+                  Window -> Maybe message -> Maybe defaultValue -> m result
+promptUnchecked self message defaultValue
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_prompt self (toOptionalJSString message)
+            (toOptionalJSString defaultValue)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"print\"](); })" js_print ::
+        Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.print Mozilla Window.print documentation> 
+print :: (MonadIO m) => Window -> m ()
+print self = liftIO (js_print self)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"requestAnimationFrame\"]($2); })" js_requestAnimationFrame ::
+        Window -> RequestAnimationFrameCallback -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
+requestAnimationFrame ::
+                      (MonadIO m) => Window -> RequestAnimationFrameCallback -> m Int
+requestAnimationFrame self callback
+  = liftIO (js_requestAnimationFrame self callback)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.requestAnimationFrame Mozilla Window.requestAnimationFrame documentation> 
+requestAnimationFrame_ ::
+                       (MonadIO m) => Window -> RequestAnimationFrameCallback -> m ()
+requestAnimationFrame_ self callback
+  = liftIO (void (js_requestAnimationFrame self callback))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"cancelAnimationFrame\"]($2); })"
+        js_cancelAnimationFrame :: Window -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.cancelAnimationFrame Mozilla Window.cancelAnimationFrame documentation> 
+cancelAnimationFrame :: (MonadIO m) => Window -> Int -> m ()
+cancelAnimationFrame self handle
+  = liftIO (js_cancelAnimationFrame self handle)
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"postMessage\"]($2, $3, $4); })"
+        js_postMessage :: Window -> JSVal -> JSString -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage Mozilla Window.postMessage documentation> 
+postMessage ::
+            (MonadIO m, ToJSVal message, ToJSString targetOrigin,
+             IsGObject transfer) =>
+              Window -> message -> targetOrigin -> [transfer] -> m ()
+postMessage self message targetOrigin transfer
+  = liftIO
+      (toJSVal transfer >>=
+         \ transfer' ->
+           toJSVal message >>= \ message' -> js_postMessage self message'
+             (toJSString targetOrigin)
+             transfer')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"captureEvents\"](); })"
+        js_captureEvents :: Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.captureEvents Mozilla Window.captureEvents documentation> 
+captureEvents :: (MonadIO m) => Window -> m ()
+captureEvents self = liftIO (js_captureEvents self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"releaseEvents\"](); })"
+        js_releaseEvents :: Window -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.releaseEvents Mozilla Window.releaseEvents documentation> 
+releaseEvents :: (MonadIO m) => Window -> m ()
+releaseEvents self = liftIO (js_releaseEvents self)
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getComputedStyle\"]($2, $3); })"
+        js_getComputedStyle ::
+        Window -> Element -> Optional JSString -> IO CSSStyleDeclaration
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
+getComputedStyle ::
+                 (MonadIO m, IsElement element, ToJSString pseudoElement) =>
+                   Window -> element -> Maybe pseudoElement -> m CSSStyleDeclaration
+getComputedStyle self element pseudoElement
+  = liftIO
+      (js_getComputedStyle self (toElement element)
+         (toOptionalJSString pseudoElement))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getComputedStyle Mozilla Window.getComputedStyle documentation> 
+getComputedStyle_ ::
+                  (MonadIO m, IsElement element, ToJSString pseudoElement) =>
+                    Window -> element -> Maybe pseudoElement -> m ()
+getComputedStyle_ self element pseudoElement
+  = liftIO
+      (void
+         (js_getComputedStyle self (toElement element)
+            (toOptionalJSString pseudoElement)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"matchMedia\"]($2); })"
+        js_matchMedia :: Window -> JSString -> IO MediaQueryList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
+matchMedia ::
+           (MonadIO m, ToJSString query) =>
+             Window -> query -> m MediaQueryList
+matchMedia self query
+  = liftIO (js_matchMedia self (toJSString query))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchMedia Mozilla Window.matchMedia documentation> 
+matchMedia_ ::
+            (MonadIO m, ToJSString query) => Window -> query -> m ()
+matchMedia_ self query
+  = liftIO (void (js_matchMedia self (toJSString query)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveTo\"]($2, $3); })" js_moveTo
+        :: Window -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveTo Mozilla Window.moveTo documentation> 
+moveTo ::
+       (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
+moveTo self x y
+  = liftIO (js_moveTo self (maybeToOptional x) (maybeToOptional y))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"moveBy\"]($2, $3); })" js_moveBy
+        :: Window -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.moveBy Mozilla Window.moveBy documentation> 
+moveBy ::
+       (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
+moveBy self x y
+  = liftIO (js_moveBy self (maybeToOptional x) (maybeToOptional y))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"resizeTo\"]($2, $3); })"
+        js_resizeTo :: Window -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeTo Mozilla Window.resizeTo documentation> 
+resizeTo ::
+         (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
+resizeTo self width height
+  = liftIO
+      (js_resizeTo self (maybeToOptional width) (maybeToOptional height))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"resizeBy\"]($2, $3); })"
+        js_resizeBy :: Window -> Optional Float -> Optional Float -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.resizeBy Mozilla Window.resizeBy documentation> 
+resizeBy ::
+         (MonadIO m) => Window -> Maybe Float -> Maybe Float -> m ()
+resizeBy self x y
+  = liftIO (js_resizeBy self (maybeToOptional x) (maybeToOptional y))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scroll\"]($2); })" js_scrollOpt
+        :: Window -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
+scrollOpt :: (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
+scrollOpt self options
+  = liftIO (js_scrollOpt self (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scroll\"]($2, $3); })" js_scroll
+        :: Window -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scroll Mozilla Window.scroll documentation> 
+scroll :: (MonadIO m) => Window -> Double -> Double -> m ()
+scroll self x y = liftIO (js_scroll self x y)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollTo\"]($2); })"
+        js_scrollToOpt :: Window -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
+scrollToOpt ::
+            (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
+scrollToOpt self options
+  = liftIO (js_scrollToOpt self (maybeToOptional options))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollTo\"]($2, $3); })"
+        js_scrollTo :: Window -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollTo Mozilla Window.scrollTo documentation> 
+scrollTo :: (MonadIO m) => Window -> Double -> Double -> m ()
+scrollTo self x y = liftIO (js_scrollTo self x y)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"scrollBy\"]($2); })"
+        js_scrollByOpt :: Window -> Optional ScrollToOptions -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
+scrollByOpt ::
+            (MonadIO m) => Window -> Maybe ScrollToOptions -> m ()
+scrollByOpt self option
+  = liftIO (js_scrollByOpt self (maybeToOptional option))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"scrollBy\"]($2, $3); })"
+        js_scrollBy :: Window -> Double -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollBy Mozilla Window.scrollBy documentation> 
+scrollBy :: (MonadIO m) => Window -> Double -> Double -> m ()
+scrollBy self x y = liftIO (js_scrollBy self x y)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getSelection\"](); })"
+        js_getSelection :: Window -> IO (Nullable Selection)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelection :: (MonadIO m) => Window -> m (Maybe Selection)
+getSelection self
+  = liftIO (nullableToMaybe <$> (js_getSelection self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelection_ :: (MonadIO m) => Window -> m ()
+getSelection_ self = liftIO (void (js_getSelection self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelectionUnsafe ::
+                   (MonadIO m, HasCallStack) => Window -> m Selection
+getSelectionUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getSelection self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getSelection Mozilla Window.getSelection documentation> 
+getSelectionUnchecked :: (MonadIO m) => Window -> m Selection
+getSelectionUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getSelection self))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4, $5, $6, $7, $8) => { return ($1[\"find\"]($2, $3, $4, $5, $6,\n$7, $8) ? 1 : 0); })" js_find ::
+        Window ->
+          Optional JSString ->
+            Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
+find ::
+     (MonadIO m, ToJSString string) =>
+       Window ->
+         Maybe string ->
+           Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m Bool
+find self string caseSensitive backwards wrap wholeWord
+  searchInFrames showDialog
+  = liftIO
+      (js_find self (toOptionalJSString string) caseSensitive backwards
+         wrap
+         wholeWord
+         searchInFrames
+         showDialog)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.find Mozilla Window.find documentation> 
+find_ ::
+      (MonadIO m, ToJSString string) =>
+        Window ->
+          Maybe string ->
+            Bool -> Bool -> Bool -> Bool -> Bool -> Bool -> m ()
+find_ self string caseSensitive backwards wrap wholeWord
+  searchInFrames showDialog
+  = liftIO
+      (void
+         (js_find self (toOptionalJSString string) caseSensitive backwards
+            wrap
+            wholeWord
+            searchInFrames
+            showDialog))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"webkitRequestAnimationFrame\"]($2); })"
+        js_webkitRequestAnimationFrame ::
+        Window -> RequestAnimationFrameCallback -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
+webkitRequestAnimationFrame ::
+                            (MonadIO m) => Window -> RequestAnimationFrameCallback -> m Int
+webkitRequestAnimationFrame self callback
+  = liftIO (js_webkitRequestAnimationFrame self callback)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitRequestAnimationFrame Mozilla Window.webkitRequestAnimationFrame documentation> 
+webkitRequestAnimationFrame_ ::
+                             (MonadIO m) => Window -> RequestAnimationFrameCallback -> m ()
+webkitRequestAnimationFrame_ self callback
+  = liftIO (void (js_webkitRequestAnimationFrame self callback))
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"webkitCancelAnimationFrame\"]($2); })"
+        js_webkitCancelAnimationFrame :: Window -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelAnimationFrame Mozilla Window.webkitCancelAnimationFrame documentation> 
+webkitCancelAnimationFrame :: (MonadIO m) => Window -> Int -> m ()
+webkitCancelAnimationFrame self id
+  = liftIO (js_webkitCancelAnimationFrame self id)
+ 
+foreign import javascript unsafe
+        "(($1, $2) => { return $1[\"webkitCancelRequestAnimationFrame\"]($2); })"
+        js_webkitCancelRequestAnimationFrame :: Window -> Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitCancelRequestAnimationFrame Mozilla Window.webkitCancelRequestAnimationFrame documentation> 
+webkitCancelRequestAnimationFrame ::
+                                  (MonadIO m) => Window -> Int -> m ()
+webkitCancelRequestAnimationFrame self id
+  = liftIO (js_webkitCancelRequestAnimationFrame self id)
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"getMatchedCSSRules\"]($2, $3); })" js_getMatchedCSSRules ::
+        Window -> Optional Element -> Optional JSString -> IO CSSRuleList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
+getMatchedCSSRules ::
+                   (MonadIO m, IsElement element, ToJSString pseudoElement) =>
+                     Window -> Maybe element -> Maybe pseudoElement -> m CSSRuleList
+getMatchedCSSRules self element pseudoElement
+  = liftIO
+      (js_getMatchedCSSRules self
+         (maybeToOptional (fmap toElement element))
+         (toOptionalJSString pseudoElement))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.getMatchedCSSRules Mozilla Window.getMatchedCSSRules documentation> 
+getMatchedCSSRules_ ::
+                    (MonadIO m, IsElement element, ToJSString pseudoElement) =>
+                      Window -> Maybe element -> Maybe pseudoElement -> m ()
+getMatchedCSSRules_ self element pseudoElement
+  = liftIO
+      (void
+         (js_getMatchedCSSRules self
+            (maybeToOptional (fmap toElement element))
+            (toOptionalJSString pseudoElement)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3, $4) => { return $1[\"showModalDialog\"]($2, $3,\n$4); })" js_showModalDialog ::
+        Window ->
+          JSString -> Optional JSVal -> Optional JSString -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
+showModalDialog ::
+                (MonadIO m, ToJSString url, ToJSVal dialogArgs,
+                 ToJSString featureArgs) =>
+                  Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m JSVal
+showModalDialog self url dialogArgs featureArgs
+  = liftIO
+      (mapM toJSVal dialogArgs >>=
+         \ dialogArgs' ->
+           js_showModalDialog self (toJSString url)
+             (maybeToOptional dialogArgs')
+         (toOptionalJSString featureArgs))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.showModalDialog Mozilla Window.showModalDialog documentation> 
+showModalDialog_ ::
+                 (MonadIO m, ToJSString url, ToJSVal dialogArgs,
+                  ToJSString featureArgs) =>
+                   Window -> url -> Maybe dialogArgs -> Maybe featureArgs -> m ()
+showModalDialog_ self url dialogArgs featureArgs
+  = liftIO
+      (void
+         (mapM toJSVal dialogArgs >>=
+            \ dialogArgs' ->
+              js_showModalDialog self (toJSString url)
+                (maybeToOptional dialogArgs')
+            (toOptionalJSString featureArgs)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"webkitConvertPointFromPageToNode\"]($2,\n$3); })"
+        js_webkitConvertPointFromPageToNode ::
+        Window -> Optional Node -> Optional WebKitPoint -> IO WebKitPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
+webkitConvertPointFromPageToNode ::
+                                 (MonadIO m, IsNode node) =>
+                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
+webkitConvertPointFromPageToNode self node p
+  = liftIO
+      (js_webkitConvertPointFromPageToNode self
+         (maybeToOptional (fmap toNode node))
+         (maybeToOptional p))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromPageToNode Mozilla Window.webkitConvertPointFromPageToNode documentation> 
+webkitConvertPointFromPageToNode_ ::
+                                  (MonadIO m, IsNode node) =>
+                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
+webkitConvertPointFromPageToNode_ self node p
+  = liftIO
+      (void
+         (js_webkitConvertPointFromPageToNode self
+            (maybeToOptional (fmap toNode node))
+            (maybeToOptional p)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"webkitConvertPointFromNodeToPage\"]($2,\n$3); })"
+        js_webkitConvertPointFromNodeToPage ::
+        Window -> Optional Node -> Optional WebKitPoint -> IO WebKitPoint
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
+webkitConvertPointFromNodeToPage ::
+                                 (MonadIO m, IsNode node) =>
+                                   Window -> Maybe node -> Maybe WebKitPoint -> m WebKitPoint
+webkitConvertPointFromNodeToPage self node p
+  = liftIO
+      (js_webkitConvertPointFromNodeToPage self
+         (maybeToOptional (fmap toNode node))
+         (maybeToOptional p))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitConvertPointFromNodeToPage Mozilla Window.webkitConvertPointFromNodeToPage documentation> 
+webkitConvertPointFromNodeToPage_ ::
+                                  (MonadIO m, IsNode node) =>
+                                    Window -> Maybe node -> Maybe WebKitPoint -> m ()
+webkitConvertPointFromNodeToPage_ self node p
+  = liftIO
+      (void
+         (js_webkitConvertPointFromNodeToPage self
+            (maybeToOptional (fmap toNode node))
+            (maybeToOptional p)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"collectMatchingElementsInFlatTree\"]($2,\n$3); })"
+        js_collectMatchingElementsInFlatTree ::
+        Window -> Node -> JSString -> IO NodeList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
+collectMatchingElementsInFlatTree ::
+                                  (MonadIO m, IsNode scope, ToJSString selectors) =>
+                                    Window -> scope -> selectors -> m NodeList
+collectMatchingElementsInFlatTree self scope selectors
+  = liftIO
+      (js_collectMatchingElementsInFlatTree self (toNode scope)
+         (toJSString selectors))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.collectMatchingElementsInFlatTree Mozilla Window.collectMatchingElementsInFlatTree documentation> 
+collectMatchingElementsInFlatTree_ ::
+                                   (MonadIO m, IsNode scope, ToJSString selectors) =>
+                                     Window -> scope -> selectors -> m ()
+collectMatchingElementsInFlatTree_ self scope selectors
+  = liftIO
+      (void
+         (js_collectMatchingElementsInFlatTree self (toNode scope)
+            (toJSString selectors)))
+ 
+foreign import javascript safe
+        "(($1, $2, $3) => { return $1[\"matchingElementInFlatTree\"]($2,\n$3); })"
+        js_matchingElementInFlatTree ::
+        Window -> Node -> JSString -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
+matchingElementInFlatTree ::
+                          (MonadIO m, IsNode scope, ToJSString selectors) =>
+                            Window -> scope -> selectors -> m (Maybe Element)
+matchingElementInFlatTree self scope selectors
+  = liftIO
+      (nullableToMaybe <$>
+         (js_matchingElementInFlatTree self (toNode scope)
+            (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
+matchingElementInFlatTree_ ::
+                           (MonadIO m, IsNode scope, ToJSString selectors) =>
+                             Window -> scope -> selectors -> m ()
+matchingElementInFlatTree_ self scope selectors
+  = liftIO
+      (void
+         (js_matchingElementInFlatTree self (toNode scope)
+            (toJSString selectors)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
+matchingElementInFlatTreeUnsafe ::
+                                (MonadIO m, IsNode scope, ToJSString selectors, HasCallStack) =>
+                                  Window -> scope -> selectors -> m Element
+matchingElementInFlatTreeUnsafe self scope selectors
+  = liftIO
+      ((nullableToMaybe <$>
+          (js_matchingElementInFlatTree self (toNode scope)
+             (toJSString selectors)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.matchingElementInFlatTree Mozilla Window.matchingElementInFlatTree documentation> 
+matchingElementInFlatTreeUnchecked ::
+                                   (MonadIO m, IsNode scope, ToJSString selectors) =>
+                                     Window -> scope -> selectors -> m Element
+matchingElementInFlatTreeUnchecked self scope selectors
+  = liftIO
+      (fromJust . nullableToMaybe <$>
+         (js_matchingElementInFlatTree self (toNode scope)
+            (toJSString selectors)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"indexedDB\"]; })"
+        js_getIndexedDB :: Window -> IO IDBFactory
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.indexedDB Mozilla Window.indexedDB documentation> 
+getIndexedDB :: (MonadIO m) => Window -> m IDBFactory
+getIndexedDB self = liftIO (js_getIndexedDB self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitIndexedDB\"]; })"
+        js_getWebkitIndexedDB :: Window -> IO IDBFactory
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitIndexedDB Mozilla Window.webkitIndexedDB documentation> 
+getWebkitIndexedDB :: (MonadIO m) => Window -> m IDBFactory
+getWebkitIndexedDB self = liftIO (js_getWebkitIndexedDB self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitStorageInfo\"]; })"
+        js_getWebkitStorageInfo :: Window -> IO StorageInfo
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.webkitStorageInfo Mozilla Window.webkitStorageInfo documentation> 
+getWebkitStorageInfo :: (MonadIO m) => Window -> m StorageInfo
+getWebkitStorageInfo self = liftIO (js_getWebkitStorageInfo self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"speechSynthesis\"]; })"
+        js_getSpeechSynthesis :: Window -> IO SpeechSynthesis
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.speechSynthesis Mozilla Window.speechSynthesis documentation> 
+getSpeechSynthesis :: (MonadIO m) => Window -> m SpeechSynthesis
+getSpeechSynthesis self = liftIO (js_getSpeechSynthesis self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"window\"]; })" js_getWindow ::
+        Window -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.window Mozilla Window.window documentation> 
+getWindow :: (MonadIO m) => Window -> m Window
+getWindow self = liftIO (js_getWindow self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })" js_getSelf ::
+        Window -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.self Mozilla Window.self documentation> 
+getSelf :: (MonadIO m) => Window -> m Window
+getSelf self = liftIO (js_getSelf self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"document\"]; })" js_getDocument
+        :: Window -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.document Mozilla Window.document documentation> 
+getDocument :: (MonadIO m) => Window -> m Document
+getDocument self = liftIO (js_getDocument self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"name\"] = $2; })" js_setName ::
+        Window -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
+setName :: (MonadIO m, ToJSString val) => Window -> val -> m ()
+setName self val = liftIO (js_setName self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        Window -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.name Mozilla Window.name documentation> 
+getName :: (MonadIO m, FromJSString result) => Window -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
+        :: Window -> IO Location
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.location Mozilla Window.location documentation> 
+getLocation :: (MonadIO m) => Window -> m Location
+getLocation self = liftIO (js_getLocation self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"history\"]; })" js_getHistory ::
+        Window -> IO History
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.history Mozilla Window.history documentation> 
+getHistory :: (MonadIO m) => Window -> m History
+getHistory self = liftIO (js_getHistory self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"customElements\"]; })"
+        js_getCustomElements :: Window -> IO CustomElementRegistry
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.customElements Mozilla Window.customElements documentation> 
+getCustomElements ::
+                  (MonadIO m) => Window -> m CustomElementRegistry
+getCustomElements self = liftIO (js_getCustomElements self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"locationbar\"]; })"
+        js_getLocationbar :: Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.locationbar Mozilla Window.locationbar documentation> 
+getLocationbar :: (MonadIO m) => Window -> m BarProp
+getLocationbar self = liftIO (js_getLocationbar self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"menubar\"]; })" js_getMenubar ::
+        Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.menubar Mozilla Window.menubar documentation> 
+getMenubar :: (MonadIO m) => Window -> m BarProp
+getMenubar self = liftIO (js_getMenubar self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"personalbar\"]; })"
+        js_getPersonalbar :: Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.personalbar Mozilla Window.personalbar documentation> 
+getPersonalbar :: (MonadIO m) => Window -> m BarProp
+getPersonalbar self = liftIO (js_getPersonalbar self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollbars\"]; })"
+        js_getScrollbars :: Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollbars Mozilla Window.scrollbars documentation> 
+getScrollbars :: (MonadIO m) => Window -> m BarProp
+getScrollbars self = liftIO (js_getScrollbars self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"statusbar\"]; })"
+        js_getStatusbar :: Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.statusbar Mozilla Window.statusbar documentation> 
+getStatusbar :: (MonadIO m) => Window -> m BarProp
+getStatusbar self = liftIO (js_getStatusbar self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toolbar\"]; })" js_getToolbar ::
+        Window -> IO BarProp
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.toolbar Mozilla Window.toolbar documentation> 
+getToolbar :: (MonadIO m) => Window -> m BarProp
+getToolbar self = liftIO (js_getToolbar self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"status\"] = $2; })"
+        js_setStatus :: Window -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
+setStatus :: (MonadIO m, ToJSString val) => Window -> val -> m ()
+setStatus self val = liftIO (js_setStatus self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        Window -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.status Mozilla Window.status documentation> 
+getStatus :: (MonadIO m, FromJSString result) => Window -> m result
+getStatus self = liftIO (fromJSString <$> (js_getStatus self))
+ 
+foreign import javascript unsafe "(($1) => { return ($1[\"closed\"] ? 1 : 0); })"
+        js_getClosed :: Window -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.closed Mozilla Window.closed documentation> 
+getClosed :: (MonadIO m) => Window -> m Bool
+getClosed self = liftIO (js_getClosed self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frames\"]; })" js_getFrames ::
+        Window -> IO Window
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frames Mozilla Window.frames documentation> 
+getFrames :: (MonadIO m) => Window -> m Window
+getFrames self = liftIO (js_getFrames self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"length\"]; })" js_getLength ::
+        Window -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.length Mozilla Window.length documentation> 
+getLength :: (MonadIO m) => Window -> m Word
+getLength self = liftIO (js_getLength self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"top\"]; })" js_getTop ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
+getTop :: (MonadIO m) => Window -> m (Maybe Window)
+getTop self = liftIO (nullableToMaybe <$> (js_getTop self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
+getTopUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
+getTopUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getTop self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.top Mozilla Window.top documentation> 
+getTopUnchecked :: (MonadIO m) => Window -> m Window
+getTopUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getTop self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"opener\"]; })" js_getOpener ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
+getOpener :: (MonadIO m) => Window -> m (Maybe Window)
+getOpener self = liftIO (nullableToMaybe <$> (js_getOpener self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
+getOpenerUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
+getOpenerUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getOpener self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.opener Mozilla Window.opener documentation> 
+getOpenerUnchecked :: (MonadIO m) => Window -> m Window
+getOpenerUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getOpener self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"parent\"]; })" js_getParent ::
+        Window -> IO (Nullable Window)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
+getParent :: (MonadIO m) => Window -> m (Maybe Window)
+getParent self = liftIO (nullableToMaybe <$> (js_getParent self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
+getParentUnsafe :: (MonadIO m, HasCallStack) => Window -> m Window
+getParentUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getParent self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.parent Mozilla Window.parent documentation> 
+getParentUnchecked :: (MonadIO m) => Window -> m Window
+getParentUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getParent self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"frameElement\"]; })"
+        js_getFrameElement :: Window -> IO (Nullable Element)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
+getFrameElement :: (MonadIO m) => Window -> m (Maybe Element)
+getFrameElement self
+  = liftIO (nullableToMaybe <$> (js_getFrameElement self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
+getFrameElementUnsafe ::
+                      (MonadIO m, HasCallStack) => Window -> m Element
+getFrameElementUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getFrameElement self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.frameElement Mozilla Window.frameElement documentation> 
+getFrameElementUnchecked :: (MonadIO m) => Window -> m Element
+getFrameElementUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getFrameElement self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
+        js_getNavigator :: Window -> IO Navigator
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.navigator Mozilla Window.navigator documentation> 
+getNavigator :: (MonadIO m) => Window -> m Navigator
+getNavigator self = liftIO (js_getNavigator self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"applicationCache\"]; })"
+        js_getApplicationCache :: Window -> IO ApplicationCache
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.applicationCache Mozilla Window.applicationCache documentation> 
+getApplicationCache :: (MonadIO m) => Window -> m ApplicationCache
+getApplicationCache self = liftIO (js_getApplicationCache self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"sessionStorage\"]; })"
+        js_getSessionStorage :: Window -> IO Storage
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.sessionStorage Mozilla Window.sessionStorage documentation> 
+getSessionStorage :: (MonadIO m) => Window -> m Storage
+getSessionStorage self = liftIO (js_getSessionStorage self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"localStorage\"]; })"
+        js_getLocalStorage :: Window -> IO Storage
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.localStorage Mozilla Window.localStorage documentation> 
+getLocalStorage :: (MonadIO m) => Window -> m Storage
+getLocalStorage self = liftIO (js_getLocalStorage self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screen\"]; })" js_getScreen ::
+        Window -> IO Screen
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screen Mozilla Window.screen documentation> 
+getScreen :: (MonadIO m) => Window -> m Screen
+getScreen self = liftIO (js_getScreen self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"innerHeight\"]; })"
+        js_getInnerHeight :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerHeight Mozilla Window.innerHeight documentation> 
+getInnerHeight :: (MonadIO m) => Window -> m Int
+getInnerHeight self = liftIO (js_getInnerHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"innerWidth\"]; })"
+        js_getInnerWidth :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.innerWidth Mozilla Window.innerWidth documentation> 
+getInnerWidth :: (MonadIO m) => Window -> m Int
+getInnerWidth self = liftIO (js_getInnerWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollX\"]; })" js_getScrollX ::
+        Window -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollX Mozilla Window.scrollX documentation> 
+getScrollX :: (MonadIO m) => Window -> m Double
+getScrollX self = liftIO (js_getScrollX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageXOffset\"]; })"
+        js_getPageXOffset :: Window -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageXOffset Mozilla Window.pageXOffset documentation> 
+getPageXOffset :: (MonadIO m) => Window -> m Double
+getPageXOffset self = liftIO (js_getPageXOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"scrollY\"]; })" js_getScrollY ::
+        Window -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.scrollY Mozilla Window.scrollY documentation> 
+getScrollY :: (MonadIO m) => Window -> m Double
+getScrollY self = liftIO (js_getScrollY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pageYOffset\"]; })"
+        js_getPageYOffset :: Window -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.pageYOffset Mozilla Window.pageYOffset documentation> 
+getPageYOffset :: (MonadIO m) => Window -> m Double
+getPageYOffset self = liftIO (js_getPageYOffset self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenX\"]; })" js_getScreenX ::
+        Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenX Mozilla Window.screenX documentation> 
+getScreenX :: (MonadIO m) => Window -> m Int
+getScreenX self = liftIO (js_getScreenX self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenY\"]; })" js_getScreenY ::
+        Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenY Mozilla Window.screenY documentation> 
+getScreenY :: (MonadIO m) => Window -> m Int
+getScreenY self = liftIO (js_getScreenY self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"outerWidth\"]; })"
+        js_getOuterWidth :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerWidth Mozilla Window.outerWidth documentation> 
+getOuterWidth :: (MonadIO m) => Window -> m Int
+getOuterWidth self = liftIO (js_getOuterWidth self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"outerHeight\"]; })"
+        js_getOuterHeight :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.outerHeight Mozilla Window.outerHeight documentation> 
+getOuterHeight :: (MonadIO m) => Window -> m Int
+getOuterHeight self = liftIO (js_getOuterHeight self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"devicePixelRatio\"]; })"
+        js_getDevicePixelRatio :: Window -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.devicePixelRatio Mozilla Window.devicePixelRatio documentation> 
+getDevicePixelRatio :: (MonadIO m) => Window -> m Double
+getDevicePixelRatio self = liftIO (js_getDevicePixelRatio self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"orientation\"]; })"
+        js_getOrientation :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.orientation Mozilla Window.orientation documentation> 
+getOrientation :: (MonadIO m) => Window -> m Int
+getOrientation self = liftIO (js_getOrientation self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"event\"]; })" js_getEvent ::
+        Window -> IO Event
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.event Mozilla Window.event documentation> 
+getEvent :: (MonadIO m) => Window -> m Event
+getEvent self = liftIO (js_getEvent self)
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultStatus\"] = $2; })"
+        js_setDefaultStatus :: Window -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
+setDefaultStatus ::
+                 (MonadIO m, ToJSString val) => Window -> val -> m ()
+setDefaultStatus self val
+  = liftIO (js_setDefaultStatus self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultStatus\"]; })"
+        js_getDefaultStatus :: Window -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultStatus Mozilla Window.defaultStatus documentation> 
+getDefaultStatus ::
+                 (MonadIO m, FromJSString result) => Window -> m result
+getDefaultStatus self
+  = liftIO (fromJSString <$> (js_getDefaultStatus self))
+ 
+foreign import javascript unsafe "(($1, $2) => { $1[\"defaultstatus\"] = $2; })"
+        js_setDefaultstatus :: Window -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
+setDefaultstatus ::
+                 (MonadIO m, ToJSString val) => Window -> val -> m ()
+setDefaultstatus self val
+  = liftIO (js_setDefaultstatus self (toJSString val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"defaultstatus\"]; })"
+        js_getDefaultstatus :: Window -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.defaultstatus Mozilla Window.defaultstatus documentation> 
+getDefaultstatus ::
+                 (MonadIO m, FromJSString result) => Window -> m result
+getDefaultstatus self
+  = liftIO (fromJSString <$> (js_getDefaultstatus self))
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"offscreenBuffering\"] ? 1 : 0); })" js_getOffscreenBuffering ::
+        Window -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.offscreenBuffering Mozilla Window.offscreenBuffering documentation> 
+getOffscreenBuffering :: (MonadIO m) => Window -> m Bool
+getOffscreenBuffering self = liftIO (js_getOffscreenBuffering self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenLeft\"]; })"
+        js_getScreenLeft :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenLeft Mozilla Window.screenLeft documentation> 
+getScreenLeft :: (MonadIO m) => Window -> m Int
+getScreenLeft self = liftIO (js_getScreenLeft self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"screenTop\"]; })"
+        js_getScreenTop :: Window -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.screenTop Mozilla Window.screenTop documentation> 
+getScreenTop :: (MonadIO m) => Window -> m Int
+getScreenTop self = liftIO (js_getScreenTop self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clientInformation\"]; })"
+        js_getClientInformation :: Window -> IO Navigator
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.clientInformation Mozilla Window.clientInformation documentation> 
+getClientInformation :: (MonadIO m) => Window -> m Navigator
+getClientInformation self = liftIO (js_getClientInformation self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"styleMedia\"]; })"
+        js_getStyleMedia :: Window -> IO StyleMedia
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.styleMedia Mozilla Window.styleMedia documentation> 
+getStyleMedia :: (MonadIO m) => Window -> m StyleMedia
+getStyleMedia self = liftIO (js_getStyleMedia self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturechange Mozilla Window.ongesturechange documentation> 
+gestureChange :: EventName Window UIEvent
+gestureChange = unsafeEventName (toJSString "gesturechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongestureend Mozilla Window.ongestureend documentation> 
+gestureEnd :: EventName Window UIEvent
+gestureEnd = unsafeEventName (toJSString "gestureend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ongesturestart Mozilla Window.ongesturestart documentation> 
+gestureStart :: EventName Window UIEvent
+gestureStart = unsafeEventName (toJSString "gesturestart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondevicemotion Mozilla Window.ondevicemotion documentation> 
+deviceMotion :: EventName Window DeviceMotionEvent
+deviceMotion = unsafeEventName (toJSString "devicemotion")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.ondeviceorientation Mozilla Window.ondeviceorientation documentation> 
+deviceOrientation :: EventName Window DeviceOrientationEvent
+deviceOrientation
+  = unsafeEventName (toJSString "deviceorientation")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitdeviceproximity Mozilla Window.onwebkitdeviceproximity documentation> 
+webKitDeviceProximity :: EventName Window DeviceProximityEvent
+webKitDeviceProximity
+  = unsafeEventName (toJSString "webkitdeviceproximity")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationend Mozilla Window.onwebkitanimationend documentation> 
+webKitAnimationEnd :: EventName Window AnimationEvent
+webKitAnimationEnd
+  = unsafeEventName (toJSString "webkitanimationend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationiteration Mozilla Window.onwebkitanimationiteration documentation> 
+webKitAnimationIteration :: EventName Window AnimationEvent
+webKitAnimationIteration
+  = unsafeEventName (toJSString "webkitanimationiteration")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkitanimationstart Mozilla Window.onwebkitanimationstart documentation> 
+webKitAnimationStart :: EventName Window AnimationEvent
+webKitAnimationStart
+  = unsafeEventName (toJSString "webkitanimationstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.onwebkittransitionend Mozilla Window.onwebkittransitionend documentation> 
+webKitTransitionEnd :: EventName Window TransitionEvent
+webKitTransitionEnd
+  = unsafeEventName (toJSString "webkittransitionend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowEventHandlers.hs
@@ -0,0 +1,103 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WindowEventHandlers
+       (beforeUnload, hashChange, languagechange, message, offline,
+        online, pageHide, pageShow, popState, storage, unload,
+        orientationChange, WindowEventHandlers(..),
+        gTypeWindowEventHandlers, IsWindowEventHandlers,
+        toWindowEventHandlers)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onbeforeunload Mozilla WindowEventHandlers.onbeforeunload documentation> 
+beforeUnload ::
+             (IsWindowEventHandlers self, IsEventTarget self) =>
+               EventName self BeforeUnloadEvent
+beforeUnload = unsafeEventName (toJSString "beforeunload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onhashchange Mozilla WindowEventHandlers.onhashchange documentation> 
+hashChange ::
+           (IsWindowEventHandlers self, IsEventTarget self) =>
+             EventName self HashChangeEvent
+hashChange = unsafeEventName (toJSString "hashchange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onlanguagechange Mozilla WindowEventHandlers.onlanguagechange documentation> 
+languagechange ::
+               (IsWindowEventHandlers self, IsEventTarget self) =>
+                 EventName self Event
+languagechange = unsafeEventName (toJSString "languagechange")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onmessage Mozilla WindowEventHandlers.onmessage documentation> 
+message ::
+        (IsWindowEventHandlers self, IsEventTarget self) =>
+          EventName self MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onoffline Mozilla WindowEventHandlers.onoffline documentation> 
+offline ::
+        (IsWindowEventHandlers self, IsEventTarget self) =>
+          EventName self Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.ononline Mozilla WindowEventHandlers.ononline documentation> 
+online ::
+       (IsWindowEventHandlers self, IsEventTarget self) =>
+         EventName self Event
+online = unsafeEventName (toJSString "online")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpagehide Mozilla WindowEventHandlers.onpagehide documentation> 
+pageHide ::
+         (IsWindowEventHandlers self, IsEventTarget self) =>
+           EventName self PageTransitionEvent
+pageHide = unsafeEventName (toJSString "pagehide")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpageshow Mozilla WindowEventHandlers.onpageshow documentation> 
+pageShow ::
+         (IsWindowEventHandlers self, IsEventTarget self) =>
+           EventName self PageTransitionEvent
+pageShow = unsafeEventName (toJSString "pageshow")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onpopstate Mozilla WindowEventHandlers.onpopstate documentation> 
+popState ::
+         (IsWindowEventHandlers self, IsEventTarget self) =>
+           EventName self PopStateEvent
+popState = unsafeEventName (toJSString "popstate")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onstorage Mozilla WindowEventHandlers.onstorage documentation> 
+storage ::
+        (IsWindowEventHandlers self, IsEventTarget self) =>
+          EventName self StorageEvent
+storage = unsafeEventName (toJSString "storage")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onunload Mozilla WindowEventHandlers.onunload documentation> 
+unload ::
+       (IsWindowEventHandlers self, IsEventTarget self) =>
+         EventName self UIEvent
+unload = unsafeEventName (toJSString "unload")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers.onorientationchange Mozilla WindowEventHandlers.onorientationchange documentation> 
+orientationChange ::
+                  (IsWindowEventHandlers self, IsEventTarget self) =>
+                    EventName self Event
+orientationChange
+  = unsafeEventName (toJSString "orientationchange")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WindowOrWorkerGlobalScope.hs
@@ -0,0 +1,168 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WindowOrWorkerGlobalScope
+       (js_setTimeout, setTimeout, setTimeout_, js_clearTimeout,
+        clearTimeout, js_setInterval, setInterval, setInterval_,
+        js_clearInterval, clearInterval, js_atob, atob, atob_, js_btoa,
+        btoa, btoa_, js_getOrigin, getOrigin,
+        WindowOrWorkerGlobalScope(..), gTypeWindowOrWorkerGlobalScope,
+        IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setTimeout\"]($2, $3); })"
+        js_setTimeout ::
+        WindowOrWorkerGlobalScope -> JSVal -> Optional Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
+setTimeout ::
+           (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
+             self -> handler -> Maybe Int -> m Int
+setTimeout self handler timeout
+  = liftIO
+      (toJSVal handler >>=
+         \ handler' ->
+           js_setTimeout (toWindowOrWorkerGlobalScope self) handler'
+         (maybeToOptional timeout))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setTimeout Mozilla WindowOrWorkerGlobalScope.setTimeout documentation> 
+setTimeout_ ::
+            (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
+              self -> handler -> Maybe Int -> m ()
+setTimeout_ self handler timeout
+  = liftIO
+      (void
+         (toJSVal handler >>=
+            \ handler' ->
+              js_setTimeout (toWindowOrWorkerGlobalScope self) handler'
+            (maybeToOptional timeout)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearTimeout\"]($2); })"
+        js_clearTimeout ::
+        WindowOrWorkerGlobalScope -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearTimeout Mozilla WindowOrWorkerGlobalScope.clearTimeout documentation> 
+clearTimeout ::
+             (MonadIO m, IsWindowOrWorkerGlobalScope self) =>
+               self -> Maybe Int -> m ()
+clearTimeout self handle
+  = liftIO
+      (js_clearTimeout (toWindowOrWorkerGlobalScope self)
+         (maybeToOptional handle))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"setInterval\"]($2, $3); })"
+        js_setInterval ::
+        WindowOrWorkerGlobalScope -> JSVal -> Optional Int -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
+setInterval ::
+            (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
+              self -> handler -> Maybe Int -> m Int
+setInterval self handler timeout
+  = liftIO
+      (toJSVal handler >>=
+         \ handler' ->
+           js_setInterval (toWindowOrWorkerGlobalScope self) handler'
+         (maybeToOptional timeout))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.setInterval Mozilla WindowOrWorkerGlobalScope.setInterval documentation> 
+setInterval_ ::
+             (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSVal handler) =>
+               self -> handler -> Maybe Int -> m ()
+setInterval_ self handler timeout
+  = liftIO
+      (void
+         (toJSVal handler >>=
+            \ handler' ->
+              js_setInterval (toWindowOrWorkerGlobalScope self) handler'
+            (maybeToOptional timeout)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"clearInterval\"]($2); })"
+        js_clearInterval ::
+        WindowOrWorkerGlobalScope -> Optional Int -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.clearInterval Mozilla WindowOrWorkerGlobalScope.clearInterval documentation> 
+clearInterval ::
+              (MonadIO m, IsWindowOrWorkerGlobalScope self) =>
+                self -> Maybe Int -> m ()
+clearInterval self handle
+  = liftIO
+      (js_clearInterval (toWindowOrWorkerGlobalScope self)
+         (maybeToOptional handle))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"atob\"]($2); })" js_atob ::
+        WindowOrWorkerGlobalScope -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
+atob ::
+     (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string,
+      FromJSString result) =>
+       self -> string -> m result
+atob self string
+  = liftIO
+      (fromJSString <$>
+         (js_atob (toWindowOrWorkerGlobalScope self) (toJSString string)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.atob Mozilla WindowOrWorkerGlobalScope.atob documentation> 
+atob_ ::
+      (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string) =>
+        self -> string -> m ()
+atob_ self string
+  = liftIO
+      (void
+         (js_atob (toWindowOrWorkerGlobalScope self) (toJSString string)))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"btoa\"]($2); })" js_btoa ::
+        WindowOrWorkerGlobalScope -> JSString -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
+btoa ::
+     (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string,
+      FromJSString result) =>
+       self -> string -> m result
+btoa self string
+  = liftIO
+      (fromJSString <$>
+         (js_btoa (toWindowOrWorkerGlobalScope self) (toJSString string)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.btoa Mozilla WindowOrWorkerGlobalScope.btoa documentation> 
+btoa_ ::
+      (MonadIO m, IsWindowOrWorkerGlobalScope self, ToJSString string) =>
+        self -> string -> m ()
+btoa_ self string
+  = liftIO
+      (void
+         (js_btoa (toWindowOrWorkerGlobalScope self) (toJSString string)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        WindowOrWorkerGlobalScope -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope.origin Mozilla WindowOrWorkerGlobalScope.origin documentation> 
+getOrigin ::
+          (MonadIO m, IsWindowOrWorkerGlobalScope self,
+           FromJSString result) =>
+            self -> m result
+getOrigin self
+  = liftIO
+      (fromJSString <$>
+         (js_getOrigin (toWindowOrWorkerGlobalScope self)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/Worker.hs b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/Worker.hs
@@ -0,0 +1,60 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.Worker
+       (js_newWorker, newWorker, js_terminate, terminate, js_postMessage,
+        postMessage, message, Worker(..), gTypeWorker)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return new window[\"Worker\"]($1); })"
+        js_newWorker :: JSString -> IO Worker
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation> 
+newWorker ::
+          (MonadIO m, ToJSString scriptUrl) => scriptUrl -> m Worker
+newWorker scriptUrl = liftIO (js_newWorker (toJSString scriptUrl))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"terminate\"](); })" js_terminate
+        :: Worker -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.terminate Mozilla Worker.terminate documentation> 
+terminate :: (MonadIO m) => Worker -> m ()
+terminate self = liftIO (js_terminate self)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"postMessage\"]($2, $3); })"
+        js_postMessage :: Worker -> JSVal -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.postMessage Mozilla Worker.postMessage documentation> 
+postMessage ::
+            (MonadIO m, ToJSVal message, IsGObject transfer) =>
+              Worker -> message -> [transfer] -> m ()
+postMessage self message transfer
+  = liftIO
+      (toJSVal transfer >>=
+         \ transfer' ->
+           toJSVal message >>= \ message' -> js_postMessage self message'
+             transfer')
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Worker.onmessage Mozilla Worker.onmessage documentation> 
+message :: EventName Worker MessageEvent
+message = unsafeEventNameAsync (toJSString "message")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerGlobalScope.hs
@@ -0,0 +1,131 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerGlobalScope
+       (js_fetch, fetch, fetch_, js_close, close, js_importScripts,
+        importScripts, js_getIndexedDB, getIndexedDB, js_getSelf, getSelf,
+        js_getLocation, getLocation, error, offline, online,
+        js_getNavigator, getNavigator, WorkerGlobalScope(..),
+        gTypeWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript interruptible
+        "(($1, $2, $3, $c) => { return $1[\"fetch\"]($2, $3).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_fetch ::
+        WorkerGlobalScope ->
+          JSVal -> Optional RequestInit -> IO (JSVal, Response)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
+fetch ::
+      (MonadIO m, IsWorkerGlobalScope self, ToJSVal input) =>
+        self -> input -> Maybe RequestInit -> m Response
+fetch self input init
+  = liftIO
+      ((toJSVal input >>=
+          \ input' -> js_fetch (toWorkerGlobalScope self) input'
+          (maybeToOptional init))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.fetch Mozilla WorkerGlobalScope.fetch documentation> 
+fetch_ ::
+       (MonadIO m, IsWorkerGlobalScope self, ToJSVal input) =>
+         self -> input -> Maybe RequestInit -> m ()
+fetch_ self input init
+  = liftIO
+      (void
+         (toJSVal input >>=
+            \ input' -> js_fetch (toWorkerGlobalScope self) input'
+            (maybeToOptional init)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"close\"](); })" js_close ::
+        WorkerGlobalScope -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.close Mozilla WorkerGlobalScope.close documentation> 
+close :: (MonadIO m, IsWorkerGlobalScope self) => self -> m ()
+close self = liftIO (js_close (toWorkerGlobalScope self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"importScripts\"]($2); })"
+        js_importScripts :: WorkerGlobalScope -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.importScripts Mozilla WorkerGlobalScope.importScripts documentation> 
+importScripts ::
+              (MonadIO m, IsWorkerGlobalScope self, ToJSString urls) =>
+                self -> [urls] -> m ()
+importScripts self urls
+  = liftIO
+      (toJSVal urls >>=
+         \ urls' -> js_importScripts (toWorkerGlobalScope self) urls')
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"indexedDB\"]; })"
+        js_getIndexedDB :: WorkerGlobalScope -> IO IDBFactory
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.indexedDB Mozilla WorkerGlobalScope.indexedDB documentation> 
+getIndexedDB ::
+             (MonadIO m, IsWorkerGlobalScope self) => self -> m IDBFactory
+getIndexedDB self
+  = liftIO (js_getIndexedDB (toWorkerGlobalScope self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"self\"]; })" js_getSelf ::
+        WorkerGlobalScope -> IO WorkerGlobalScope
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.self Mozilla WorkerGlobalScope.self documentation> 
+getSelf ::
+        (MonadIO m, IsWorkerGlobalScope self) =>
+          self -> m WorkerGlobalScope
+getSelf self = liftIO (js_getSelf (toWorkerGlobalScope self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"location\"]; })" js_getLocation
+        :: WorkerGlobalScope -> IO WorkerLocation
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.location Mozilla WorkerGlobalScope.location documentation> 
+getLocation ::
+            (MonadIO m, IsWorkerGlobalScope self) => self -> m WorkerLocation
+getLocation self
+  = liftIO (js_getLocation (toWorkerGlobalScope self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onerror Mozilla WorkerGlobalScope.onerror documentation> 
+error ::
+      (IsWorkerGlobalScope self, IsEventTarget self) =>
+        EventName self UIEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.onoffline Mozilla WorkerGlobalScope.onoffline documentation> 
+offline ::
+        (IsWorkerGlobalScope self, IsEventTarget self) =>
+          EventName self Event
+offline = unsafeEventName (toJSString "offline")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.ononline Mozilla WorkerGlobalScope.ononline documentation> 
+online ::
+       (IsWorkerGlobalScope self, IsEventTarget self) =>
+         EventName self Event
+online = unsafeEventName (toJSString "online")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"navigator\"]; })"
+        js_getNavigator :: WorkerGlobalScope -> IO WorkerNavigator
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope.navigator Mozilla WorkerGlobalScope.navigator documentation> 
+getNavigator ::
+             (MonadIO m, IsWorkerGlobalScope self) => self -> m WorkerNavigator
+getNavigator self
+  = liftIO (js_getNavigator (toWorkerGlobalScope self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerLocation.hs
@@ -0,0 +1,102 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerLocation
+       (js_getHref, getHref, js_getProtocol, getProtocol, js_getHost,
+        getHost, js_getHostname, getHostname, js_getPort, getPort,
+        js_getPathname, getPathname, js_getSearch, getSearch, js_getHash,
+        getHash, js_getOrigin, getOrigin, WorkerLocation(..),
+        gTypeWorkerLocation)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"href\"]; })" js_getHref ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.href Mozilla WorkerLocation.href documentation> 
+getHref ::
+        (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getHref self = liftIO (fromJSString <$> (js_getHref self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"protocol\"]; })" js_getProtocol
+        :: WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.protocol Mozilla WorkerLocation.protocol documentation> 
+getProtocol ::
+            (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getProtocol self = liftIO (fromJSString <$> (js_getProtocol self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"host\"]; })" js_getHost ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.host Mozilla WorkerLocation.host documentation> 
+getHost ::
+        (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getHost self = liftIO (fromJSString <$> (js_getHost self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hostname\"]; })" js_getHostname
+        :: WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hostname Mozilla WorkerLocation.hostname documentation> 
+getHostname ::
+            (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getHostname self = liftIO (fromJSString <$> (js_getHostname self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"port\"]; })" js_getPort ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.port Mozilla WorkerLocation.port documentation> 
+getPort ::
+        (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getPort self = liftIO (fromJSString <$> (js_getPort self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"pathname\"]; })" js_getPathname
+        :: WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.pathname Mozilla WorkerLocation.pathname documentation> 
+getPathname ::
+            (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getPathname self = liftIO (fromJSString <$> (js_getPathname self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"search\"]; })" js_getSearch ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.search Mozilla WorkerLocation.search documentation> 
+getSearch ::
+          (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getSearch self = liftIO (fromJSString <$> (js_getSearch self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"hash\"]; })" js_getHash ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.hash Mozilla WorkerLocation.hash documentation> 
+getHash ::
+        (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getHash self = liftIO (fromJSString <$> (js_getHash self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"origin\"]; })" js_getOrigin ::
+        WorkerLocation -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation.origin Mozilla WorkerLocation.origin documentation> 
+getOrigin ::
+          (MonadIO m, FromJSString result) => WorkerLocation -> m result
+getOrigin self = liftIO (fromJSString <$> (js_getOrigin self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WorkerNavigator.hs
@@ -0,0 +1,46 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WorkerNavigator
+       (js_getWebkitTemporaryStorage, getWebkitTemporaryStorage,
+        js_getWebkitPersistentStorage, getWebkitPersistentStorage,
+        WorkerNavigator(..), gTypeWorkerNavigator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitTemporaryStorage\"]; })"
+        js_getWebkitTemporaryStorage :: WorkerNavigator -> IO StorageQuota
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitTemporaryStorage Mozilla WorkerNavigator.webkitTemporaryStorage documentation> 
+getWebkitTemporaryStorage ::
+                          (MonadIO m) => WorkerNavigator -> m StorageQuota
+getWebkitTemporaryStorage self
+  = liftIO (js_getWebkitTemporaryStorage self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"webkitPersistentStorage\"]; })"
+        js_getWebkitPersistentStorage :: WorkerNavigator -> IO StorageQuota
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator.webkitPersistentStorage Mozilla WorkerNavigator.webkitPersistentStorage documentation> 
+getWebkitPersistentStorage ::
+                           (MonadIO m) => WorkerNavigator -> m StorageQuota
+getWebkitPersistentStorage self
+  = liftIO (js_getWebkitPersistentStorage self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/WritableStream.hs
@@ -0,0 +1,116 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.WritableStream
+       (js_newWritableStream, newWritableStream, js_abort, abort, abort_,
+        js_close, close, close_, js_write, write, write_, js_getClosed,
+        getClosed, js_getReady, getReady, js_getState, getState,
+        WritableStream(..), gTypeWritableStream)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"WritableStream\"](); })"
+        js_newWritableStream :: IO WritableStream
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream Mozilla WritableStream documentation> 
+newWritableStream :: (MonadIO m) => m WritableStream
+newWritableStream = liftIO (js_newWritableStream)
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"abort\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_abort :: WritableStream -> Optional JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
+abort ::
+      (MonadIO m, ToJSVal reason) =>
+        WritableStream -> Maybe reason -> m JSVal
+abort self reason
+  = liftIO
+      ((mapM toJSVal reason >>=
+          \ reason' -> js_abort self (maybeToOptional reason'))
+         >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.abort Mozilla WritableStream.abort documentation> 
+abort_ ::
+       (MonadIO m, ToJSVal reason) =>
+         WritableStream -> Maybe reason -> m ()
+abort_ self reason
+  = liftIO
+      (void
+         (mapM toJSVal reason >>=
+            \ reason' -> js_abort self (maybeToOptional reason')))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"close\"]().then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_close :: WritableStream -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
+close :: (MonadIO m) => WritableStream -> m JSVal
+close self = liftIO ((js_close self) >>= checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.close Mozilla WritableStream.close documentation> 
+close_ :: (MonadIO m) => WritableStream -> m ()
+close_ self = liftIO (void (js_close self))
+ 
+foreign import javascript interruptible
+        "(($1, $2, $c) => { return $1[\"write\"]($2).then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_write :: WritableStream -> JSVal -> IO (JSVal, JSVal)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
+write ::
+      (MonadIO m, ToJSVal chunk) => WritableStream -> chunk -> m JSVal
+write self chunk
+  = liftIO
+      ((toJSVal chunk >>= \ chunk' -> js_write self chunk') >>=
+         checkPromiseResult)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.write Mozilla WritableStream.write documentation> 
+write_ ::
+       (MonadIO m, ToJSVal chunk) => WritableStream -> chunk -> m ()
+write_ self chunk
+  = liftIO
+      (void (toJSVal chunk >>= \ chunk' -> js_write self chunk'))
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"closed\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getClosed :: WritableStream -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.closed Mozilla WritableStream.closed documentation> 
+getClosed :: (MonadIO m) => WritableStream -> m Bool
+getClosed self
+  = liftIO ((js_getClosed self) >>= checkPromiseResult)
+ 
+foreign import javascript interruptible
+        "(($1, $c) => { return $1[\"ready\"].then(function(s) { $c(null, s);}, function(e) { $c(e, null);}); })"
+        js_getReady :: WritableStream -> IO (JSVal, Bool)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.ready Mozilla WritableStream.ready documentation> 
+getReady :: (MonadIO m) => WritableStream -> m Bool
+getReady self = liftIO ((js_getReady self) >>= checkPromiseResult)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"state\"]; })" js_getState ::
+        WritableStream -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream.state Mozilla WritableStream.state documentation> 
+getState ::
+         (MonadIO m, FromJSString result) => WritableStream -> m result
+getState self = liftIO (fromJSString <$> (js_getState self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequest.hs
@@ -0,0 +1,325 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequest
+       (js_newXMLHttpRequest, newXMLHttpRequest, js_openSimple,
+        openSimple, js_open, open, js_setRequestHeader, setRequestHeader,
+        js_send, send, js_abort, abort, js_getResponseHeader,
+        getResponseHeader, getResponseHeader_, getResponseHeaderUnsafe,
+        getResponseHeaderUnchecked, js_getAllResponseHeaders,
+        getAllResponseHeaders, getAllResponseHeaders_, js_overrideMimeType,
+        overrideMimeType, pattern UNSENT, pattern OPENED,
+        pattern HEADERS_RECEIVED, pattern LOADING, pattern DONE,
+        readyStateChange, js_getReadyState, getReadyState, js_setTimeout,
+        setTimeout, js_getTimeout, getTimeout, js_setWithCredentials,
+        setWithCredentials, js_getWithCredentials, getWithCredentials,
+        js_getUpload, getUpload, js_getResponseURL, getResponseURL,
+        js_getStatus, getStatus, js_getStatusText, getStatusText,
+        js_setResponseType, setResponseType, js_getResponseType,
+        getResponseType, js_getResponse, getResponse, js_getResponseText,
+        getResponseText, getResponseTextUnsafe, getResponseTextUnchecked,
+        js_getResponseXML, getResponseXML, getResponseXMLUnsafe,
+        getResponseXMLUnchecked, XMLHttpRequest(..), gTypeXMLHttpRequest)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"XMLHttpRequest\"](); })"
+        js_newXMLHttpRequest :: IO XMLHttpRequest
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation> 
+newXMLHttpRequest :: (MonadIO m) => m XMLHttpRequest
+newXMLHttpRequest = liftIO (js_newXMLHttpRequest)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"open\"]($2, $3); })" js_openSimple
+        :: XMLHttpRequest -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
+openSimple ::
+           (MonadIO m, ToJSString method, ToJSString url) =>
+             XMLHttpRequest -> method -> url -> m ()
+openSimple self method url
+  = liftIO (js_openSimple self (toJSString method) (toJSString url))
+ 
+foreign import javascript safe "(($1, $2, $3, $4, $5, $6) => { return $1[\"open\"]($2, $3, $4, $5, $6); })"
+        js_open ::
+        XMLHttpRequest ->
+          JSString ->
+            JSString -> Bool -> Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.open Mozilla XMLHttpRequest.open documentation> 
+open ::
+     (MonadIO m, ToJSString method, ToJSString url, ToJSString user,
+      ToJSString password) =>
+       XMLHttpRequest ->
+         method -> url -> Bool -> Maybe user -> Maybe password -> m ()
+open self method url async user password
+  = liftIO
+      (js_open self (toJSString method) (toJSString url) async
+         (toOptionalJSString user)
+         (toOptionalJSString password))
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"setRequestHeader\"]($2, $3); })"
+        js_setRequestHeader ::
+        XMLHttpRequest -> JSString -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.setRequestHeader Mozilla XMLHttpRequest.setRequestHeader documentation> 
+setRequestHeader ::
+                 (MonadIO m, ToJSString header, ToJSString value) =>
+                   XMLHttpRequest -> header -> value -> m ()
+setRequestHeader self header value
+  = liftIO
+      (js_setRequestHeader self (toJSString header) (toJSString value))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"send\"]($2); })" js_send ::
+        XMLHttpRequest -> Optional XMLHttpRequestBody -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.send Mozilla XMLHttpRequest.send documentation> 
+send ::
+     (MonadIO m, IsXMLHttpRequestBody body) =>
+       XMLHttpRequest -> Maybe body -> m ()
+send self body
+  = liftIO
+      (mapM toJSVal body >>=
+         \ body' ->
+           js_send self (maybeToOptional (fmap XMLHttpRequestBody body')))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"abort\"](); })" js_abort ::
+        XMLHttpRequest -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.abort Mozilla XMLHttpRequest.abort documentation> 
+abort :: (MonadIO m) => XMLHttpRequest -> m ()
+abort self = liftIO (js_abort self)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"getResponseHeader\"]($2); })"
+        js_getResponseHeader ::
+        XMLHttpRequest -> JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeader ::
+                  (MonadIO m, ToJSString name, FromJSString result) =>
+                    XMLHttpRequest -> name -> m (Maybe result)
+getResponseHeader self name
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getResponseHeader self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeader_ ::
+                   (MonadIO m, ToJSString name) => XMLHttpRequest -> name -> m ()
+getResponseHeader_ self name
+  = liftIO (void (js_getResponseHeader self (toJSString name)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeaderUnsafe ::
+                        (MonadIO m, ToJSString name, HasCallStack, FromJSString result) =>
+                          XMLHttpRequest -> name -> m result
+getResponseHeaderUnsafe self name
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getResponseHeader self (toJSString name)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getResponseHeader Mozilla XMLHttpRequest.getResponseHeader documentation> 
+getResponseHeaderUnchecked ::
+                           (MonadIO m, ToJSString name, FromJSString result) =>
+                             XMLHttpRequest -> name -> m result
+getResponseHeaderUnchecked self name
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getResponseHeader self (toJSString name)))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"getAllResponseHeaders\"](); })"
+        js_getAllResponseHeaders :: XMLHttpRequest -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
+getAllResponseHeaders ::
+                      (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
+getAllResponseHeaders self
+  = liftIO (fromJSString <$> (js_getAllResponseHeaders self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.getAllResponseHeaders Mozilla XMLHttpRequest.getAllResponseHeaders documentation> 
+getAllResponseHeaders_ :: (MonadIO m) => XMLHttpRequest -> m ()
+getAllResponseHeaders_ self
+  = liftIO (void (js_getAllResponseHeaders self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"overrideMimeType\"]($2); })"
+        js_overrideMimeType :: XMLHttpRequest -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.overrideMimeType Mozilla XMLHttpRequest.overrideMimeType documentation> 
+overrideMimeType ::
+                 (MonadIO m, ToJSString mime) => XMLHttpRequest -> mime -> m ()
+overrideMimeType self mime
+  = liftIO (js_overrideMimeType self (toJSString mime))
+pattern UNSENT = 0
+pattern OPENED = 1
+pattern HEADERS_RECEIVED = 2
+pattern LOADING = 3
+pattern DONE = 4
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.onreadystatechange Mozilla XMLHttpRequest.onreadystatechange documentation> 
+readyStateChange :: EventName XMLHttpRequest Event
+readyStateChange
+  = unsafeEventNameAsync (toJSString "readystatechange")
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"readyState\"]; })"
+        js_getReadyState :: XMLHttpRequest -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.readyState Mozilla XMLHttpRequest.readyState documentation> 
+getReadyState :: (MonadIO m) => XMLHttpRequest -> m Word
+getReadyState self = liftIO (js_getReadyState self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"timeout\"] = $2; })"
+        js_setTimeout :: XMLHttpRequest -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+setTimeout :: (MonadIO m) => XMLHttpRequest -> Word -> m ()
+setTimeout self val = liftIO (js_setTimeout self val)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"timeout\"]; })" js_getTimeout ::
+        XMLHttpRequest -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.timeout Mozilla XMLHttpRequest.timeout documentation> 
+getTimeout :: (MonadIO m) => XMLHttpRequest -> m Word
+getTimeout self = liftIO (js_getTimeout self)
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"withCredentials\"] = $2; })"
+        js_setWithCredentials :: XMLHttpRequest -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
+setWithCredentials :: (MonadIO m) => XMLHttpRequest -> Bool -> m ()
+setWithCredentials self val
+  = liftIO (js_setWithCredentials self val)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"withCredentials\"] ? 1 : 0); })" js_getWithCredentials ::
+        XMLHttpRequest -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.withCredentials Mozilla XMLHttpRequest.withCredentials documentation> 
+getWithCredentials :: (MonadIO m) => XMLHttpRequest -> m Bool
+getWithCredentials self = liftIO (js_getWithCredentials self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"upload\"]; })" js_getUpload ::
+        XMLHttpRequest -> IO XMLHttpRequestUpload
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.upload Mozilla XMLHttpRequest.upload documentation> 
+getUpload ::
+          (MonadIO m) => XMLHttpRequest -> m XMLHttpRequestUpload
+getUpload self = liftIO (js_getUpload self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseURL\"]; })"
+        js_getResponseURL :: XMLHttpRequest -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseURL Mozilla XMLHttpRequest.responseURL documentation> 
+getResponseURL ::
+               (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
+getResponseURL self
+  = liftIO (fromJSString <$> (js_getResponseURL self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"status\"]; })" js_getStatus ::
+        XMLHttpRequest -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.status Mozilla XMLHttpRequest.status documentation> 
+getStatus :: (MonadIO m) => XMLHttpRequest -> m Word
+getStatus self = liftIO (js_getStatus self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"statusText\"]; })"
+        js_getStatusText :: XMLHttpRequest -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.statusText Mozilla XMLHttpRequest.statusText documentation> 
+getStatusText ::
+              (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
+getStatusText self
+  = liftIO (fromJSString <$> (js_getStatusText self))
+ 
+foreign import javascript safe "(($1, $2) => { $1[\"responseType\"] = $2; })"
+        js_setResponseType :: XMLHttpRequest -> JSVal -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
+setResponseType ::
+                (MonadIO m) => XMLHttpRequest -> XMLHttpRequestResponseType -> m ()
+setResponseType self val
+  = liftIO (js_setResponseType self (pToJSVal val))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"responseType\"]; })"
+        js_getResponseType :: XMLHttpRequest -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseType Mozilla XMLHttpRequest.responseType documentation> 
+getResponseType ::
+                (MonadIO m) => XMLHttpRequest -> m XMLHttpRequestResponseType
+getResponseType self
+  = liftIO ((js_getResponseType self) >>= fromJSValUnchecked)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"response\"]; })" js_getResponse
+        :: XMLHttpRequest -> IO JSVal
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.response Mozilla XMLHttpRequest.response documentation> 
+getResponse :: (MonadIO m) => XMLHttpRequest -> m JSVal
+getResponse self = liftIO (js_getResponse self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"responseText\"]; })"
+        js_getResponseText :: XMLHttpRequest -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
+getResponseText ::
+                (MonadIO m, FromJSString result) =>
+                  XMLHttpRequest -> m (Maybe result)
+getResponseText self
+  = liftIO (fromMaybeJSString <$> (js_getResponseText self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
+getResponseTextUnsafe ::
+                      (MonadIO m, HasCallStack, FromJSString result) =>
+                        XMLHttpRequest -> m result
+getResponseTextUnsafe self
+  = liftIO
+      ((fromMaybeJSString <$> (js_getResponseText self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseText Mozilla XMLHttpRequest.responseText documentation> 
+getResponseTextUnchecked ::
+                         (MonadIO m, FromJSString result) => XMLHttpRequest -> m result
+getResponseTextUnchecked self
+  = liftIO
+      (fromJust . fromMaybeJSString <$> (js_getResponseText self))
+ 
+foreign import javascript safe "(($1) => { return $1[\"responseXML\"]; })"
+        js_getResponseXML :: XMLHttpRequest -> IO (Nullable Document)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
+getResponseXML ::
+               (MonadIO m) => XMLHttpRequest -> m (Maybe Document)
+getResponseXML self
+  = liftIO (nullableToMaybe <$> (js_getResponseXML self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
+getResponseXMLUnsafe ::
+                     (MonadIO m, HasCallStack) => XMLHttpRequest -> m Document
+getResponseXMLUnsafe self
+  = liftIO
+      ((nullableToMaybe <$> (js_getResponseXML self)) >>=
+         maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest.responseXML Mozilla XMLHttpRequest.responseXML documentation> 
+getResponseXMLUnchecked ::
+                        (MonadIO m) => XMLHttpRequest -> m Document
+getResponseXMLUnchecked self
+  = liftIO (fromJust . nullableToMaybe <$> (js_getResponseXML self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestEventTarget.hs
@@ -0,0 +1,70 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget
+       (loadStart, progress, abortEvent, error, load, timeout, loadEnd,
+        XMLHttpRequestEventTarget(..), gTypeXMLHttpRequestEventTarget,
+        IsXMLHttpRequestEventTarget, toXMLHttpRequestEventTarget)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadstart Mozilla XMLHttpRequestEventTarget.onloadstart documentation> 
+loadStart ::
+          (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+            EventName self ProgressEvent
+loadStart = unsafeEventNameAsync (toJSString "loadstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onprogress Mozilla XMLHttpRequestEventTarget.onprogress documentation> 
+progress ::
+         (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+           EventName self XMLHttpRequestProgressEvent
+progress = unsafeEventNameAsync (toJSString "progress")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onabort Mozilla XMLHttpRequestEventTarget.onabort documentation> 
+abortEvent ::
+           (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+             EventName self XMLHttpRequestProgressEvent
+abortEvent = unsafeEventNameAsync (toJSString "abort")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onerror Mozilla XMLHttpRequestEventTarget.onerror documentation> 
+error ::
+      (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+        EventName self XMLHttpRequestProgressEvent
+error = unsafeEventNameAsync (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onload Mozilla XMLHttpRequestEventTarget.onload documentation> 
+load ::
+     (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+       EventName self XMLHttpRequestProgressEvent
+load = unsafeEventNameAsync (toJSString "load")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.ontimeout Mozilla XMLHttpRequestEventTarget.ontimeout documentation> 
+timeout ::
+        (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+          EventName self ProgressEvent
+timeout = unsafeEventNameAsync (toJSString "timeout")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget.onloadend Mozilla XMLHttpRequestEventTarget.onloadend documentation> 
+loadEnd ::
+        (IsXMLHttpRequestEventTarget self, IsEventTarget self) =>
+          EventName self ProgressEvent
+loadEnd = unsafeEventNameAsync (toJSString "loadend")
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLHttpRequestProgressEvent.hs
@@ -0,0 +1,43 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XMLHttpRequestProgressEvent
+       (js_getPosition, getPosition, js_getTotalSize, getTotalSize,
+        XMLHttpRequestProgressEvent(..), gTypeXMLHttpRequestProgressEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"position\"]; })" js_getPosition
+        :: XMLHttpRequestProgressEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.position Mozilla XMLHttpRequestProgressEvent.position documentation> 
+getPosition ::
+            (MonadIO m) => XMLHttpRequestProgressEvent -> m Word64
+getPosition self = liftIO (round <$> (js_getPosition self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"totalSize\"]; })"
+        js_getTotalSize :: XMLHttpRequestProgressEvent -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent.totalSize Mozilla XMLHttpRequestProgressEvent.totalSize documentation> 
+getTotalSize ::
+             (MonadIO m) => XMLHttpRequestProgressEvent -> m Word64
+getTotalSize self = liftIO (round <$> (js_getTotalSize self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XMLSerializer.hs
@@ -0,0 +1,52 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XMLSerializer
+       (js_newXMLSerializer, newXMLSerializer, js_serializeToString,
+        serializeToString, serializeToString_, XMLSerializer(..),
+        gTypeXMLSerializer)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"XMLSerializer\"](); })"
+        js_newXMLSerializer :: IO XMLSerializer
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation> 
+newXMLSerializer :: (MonadIO m) => m XMLSerializer
+newXMLSerializer = liftIO (js_newXMLSerializer)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"serializeToString\"]($2); })"
+        js_serializeToString :: XMLSerializer -> Node -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
+serializeToString ::
+                  (MonadIO m, IsNode node, FromJSString result) =>
+                    XMLSerializer -> node -> m result
+serializeToString self node
+  = liftIO
+      (fromJSString <$> (js_serializeToString self (toNode node)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer.serializeToString Mozilla XMLSerializer.serializeToString documentation> 
+serializeToString_ ::
+                   (MonadIO m, IsNode node) => XMLSerializer -> node -> m ()
+serializeToString_ self node
+  = liftIO (void (js_serializeToString self (toNode node)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathEvaluator.hs
@@ -0,0 +1,124 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XPathEvaluator
+       (js_newXPathEvaluator, newXPathEvaluator, js_createExpression,
+        createExpression, createExpression_, js_createNSResolver,
+        createNSResolver, createNSResolver_, js_evaluate, evaluate,
+        evaluate_, XPathEvaluator(..), gTypeXPathEvaluator)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"XPathEvaluator\"](); })"
+        js_newXPathEvaluator :: IO XPathEvaluator
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation> 
+newXPathEvaluator :: (MonadIO m) => m XPathEvaluator
+newXPathEvaluator = liftIO (js_newXPathEvaluator)
+ 
+foreign import javascript safe "(($1, $2, $3) => { return $1[\"createExpression\"]($2, $3); })"
+        js_createExpression ::
+        XPathEvaluator ->
+          Optional JSString -> Optional XPathNSResolver -> IO XPathExpression
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
+createExpression ::
+                 (MonadIO m, ToJSString expression) =>
+                   XPathEvaluator ->
+                     Maybe expression -> Maybe XPathNSResolver -> m XPathExpression
+createExpression self expression resolver
+  = liftIO
+      (js_createExpression self (toOptionalJSString expression)
+         (maybeToOptional resolver))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createExpression Mozilla XPathEvaluator.createExpression documentation> 
+createExpression_ ::
+                  (MonadIO m, ToJSString expression) =>
+                    XPathEvaluator -> Maybe expression -> Maybe XPathNSResolver -> m ()
+createExpression_ self expression resolver
+  = liftIO
+      (void
+         (js_createExpression self (toOptionalJSString expression)
+            (maybeToOptional resolver)))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"createNSResolver\"]($2); })"
+        js_createNSResolver ::
+        XPathEvaluator -> Optional Node -> IO XPathNSResolver
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
+createNSResolver ::
+                 (MonadIO m, IsNode nodeResolver) =>
+                   XPathEvaluator -> Maybe nodeResolver -> m XPathNSResolver
+createNSResolver self nodeResolver
+  = liftIO
+      (js_createNSResolver self
+         (maybeToOptional (fmap toNode nodeResolver)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.createNSResolver Mozilla XPathEvaluator.createNSResolver documentation> 
+createNSResolver_ ::
+                  (MonadIO m, IsNode nodeResolver) =>
+                    XPathEvaluator -> Maybe nodeResolver -> m ()
+createNSResolver_ self nodeResolver
+  = liftIO
+      (void
+         (js_createNSResolver self
+            (maybeToOptional (fmap toNode nodeResolver))))
+ 
+foreign import javascript safe
+        "(($1, $2, $3, $4, $5, $6) => { return $1[\"evaluate\"]($2, $3, $4, $5,\n$6); })" js_evaluate ::
+        XPathEvaluator ->
+          Optional JSString ->
+            Optional Node ->
+              Optional XPathNSResolver ->
+                Optional Word -> Optional XPathResult -> IO XPathResult
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
+evaluate ::
+         (MonadIO m, ToJSString expression, IsNode contextNode) =>
+           XPathEvaluator ->
+             Maybe expression ->
+               Maybe contextNode ->
+                 Maybe XPathNSResolver ->
+                   Maybe Word -> Maybe XPathResult -> m XPathResult
+evaluate self expression contextNode resolver type' inResult
+  = liftIO
+      (js_evaluate self (toOptionalJSString expression)
+         (maybeToOptional (fmap toNode contextNode))
+         (maybeToOptional resolver)
+         (maybeToOptional type')
+         (maybeToOptional inResult))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator.evaluate Mozilla XPathEvaluator.evaluate documentation> 
+evaluate_ ::
+          (MonadIO m, ToJSString expression, IsNode contextNode) =>
+            XPathEvaluator ->
+              Maybe expression ->
+                Maybe contextNode ->
+                  Maybe XPathNSResolver -> Maybe Word -> Maybe XPathResult -> m ()
+evaluate_ self expression contextNode resolver type' inResult
+  = liftIO
+      (void
+         (js_evaluate self (toOptionalJSString expression)
+            (maybeToOptional (fmap toNode contextNode))
+            (maybeToOptional resolver)
+            (maybeToOptional type')
+            (maybeToOptional inResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathException.hs
@@ -0,0 +1,65 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XPathException
+       (js_toString, toString, toString_, pattern INVALID_EXPRESSION_ERR,
+        pattern TYPE_ERR, js_getCode, getCode, js_getName, getName,
+        js_getMessage, getMessage, XPathException(..), gTypeXPathException)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"toString\"](); })" js_toString
+        :: XPathException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
+toString ::
+         (MonadIO m, FromJSString result) => XPathException -> m result
+toString self = liftIO (fromJSString <$> (js_toString self))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.toString Mozilla XPathException.toString documentation> 
+toString_ :: (MonadIO m) => XPathException -> m ()
+toString_ self = liftIO (void (js_toString self))
+pattern INVALID_EXPRESSION_ERR = 51
+pattern TYPE_ERR = 52
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"code\"]; })" js_getCode ::
+        XPathException -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.code Mozilla XPathException.code documentation> 
+getCode :: (MonadIO m) => XPathException -> m Word
+getCode self = liftIO (js_getCode self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"name\"]; })" js_getName ::
+        XPathException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.name Mozilla XPathException.name documentation> 
+getName ::
+        (MonadIO m, FromJSString result) => XPathException -> m result
+getName self = liftIO (fromJSString <$> (js_getName self))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"message\"]; })" js_getMessage ::
+        XPathException -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathException.message Mozilla XPathException.message documentation> 
+getMessage ::
+           (MonadIO m, FromJSString result) => XPathException -> m result
+getMessage self = liftIO (fromJSString <$> (js_getMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathExpression.hs
@@ -0,0 +1,57 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XPathExpression
+       (js_evaluate, evaluate, evaluate_, XPathExpression(..),
+        gTypeXPathExpression)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1, $2, $3, $4) => { return $1[\"evaluate\"]($2, $3, $4); })"
+        js_evaluate ::
+        XPathExpression ->
+          Optional Node ->
+            Optional Word -> Optional XPathResult -> IO XPathResult
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
+evaluate ::
+         (MonadIO m, IsNode contextNode) =>
+           XPathExpression ->
+             Maybe contextNode ->
+               Maybe Word -> Maybe XPathResult -> m XPathResult
+evaluate self contextNode type' inResult
+  = liftIO
+      (js_evaluate self (maybeToOptional (fmap toNode contextNode))
+         (maybeToOptional type')
+         (maybeToOptional inResult))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression.evaluate Mozilla XPathExpression.evaluate documentation> 
+evaluate_ ::
+          (MonadIO m, IsNode contextNode) =>
+            XPathExpression ->
+              Maybe contextNode -> Maybe Word -> Maybe XPathResult -> m ()
+evaluate_ self contextNode type' inResult
+  = liftIO
+      (void
+         (js_evaluate self (maybeToOptional (fmap toNode contextNode))
+            (maybeToOptional type')
+            (maybeToOptional inResult)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathNSResolver.hs
@@ -0,0 +1,69 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XPathNSResolver
+       (js_lookupNamespaceURI, lookupNamespaceURI, lookupNamespaceURI_,
+        lookupNamespaceURIUnsafe, lookupNamespaceURIUnchecked,
+        XPathNSResolver(..), gTypeXPathNSResolver)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"lookupNamespaceURI\"]($2); })"
+        js_lookupNamespaceURI ::
+        XPathNSResolver -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURI ::
+                   (MonadIO m, ToJSString prefix, FromJSString result) =>
+                     XPathNSResolver -> Maybe prefix -> m (Maybe result)
+lookupNamespaceURI self prefix
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_lookupNamespaceURI self (toOptionalJSString prefix)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURI_ ::
+                    (MonadIO m, ToJSString prefix) =>
+                      XPathNSResolver -> Maybe prefix -> m ()
+lookupNamespaceURI_ self prefix
+  = liftIO
+      (void (js_lookupNamespaceURI self (toOptionalJSString prefix)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnsafe ::
+                         (MonadIO m, ToJSString prefix, HasCallStack,
+                          FromJSString result) =>
+                           XPathNSResolver -> Maybe prefix -> m result
+lookupNamespaceURIUnsafe self prefix
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_lookupNamespaceURI self (toOptionalJSString prefix)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver.lookupNamespaceURI Mozilla XPathNSResolver.lookupNamespaceURI documentation> 
+lookupNamespaceURIUnchecked ::
+                            (MonadIO m, ToJSString prefix, FromJSString result) =>
+                              XPathNSResolver -> Maybe prefix -> m result
+lookupNamespaceURIUnchecked self prefix
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_lookupNamespaceURI self (toOptionalJSString prefix)))
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XPathResult.hs
@@ -0,0 +1,126 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XPathResult
+       (js_iterateNext, iterateNext, iterateNext_, js_snapshotItem,
+        snapshotItem, snapshotItem_, pattern ANY_TYPE, pattern NUMBER_TYPE,
+        pattern STRING_TYPE, pattern BOOLEAN_TYPE,
+        pattern UNORDERED_NODE_ITERATOR_TYPE,
+        pattern ORDERED_NODE_ITERATOR_TYPE,
+        pattern UNORDERED_NODE_SNAPSHOT_TYPE,
+        pattern ORDERED_NODE_SNAPSHOT_TYPE,
+        pattern ANY_UNORDERED_NODE_TYPE, pattern FIRST_ORDERED_NODE_TYPE,
+        js_getResultType, getResultType, js_getNumberValue, getNumberValue,
+        js_getStringValue, getStringValue, js_getBooleanValue,
+        getBooleanValue, js_getSingleNodeValue, getSingleNodeValue,
+        js_getInvalidIteratorState, getInvalidIteratorState,
+        js_getSnapshotLength, getSnapshotLength, XPathResult(..),
+        gTypeXPathResult)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript safe "(($1) => { return $1[\"iterateNext\"](); })"
+        js_iterateNext :: XPathResult -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+iterateNext :: (MonadIO m) => XPathResult -> m Node
+iterateNext self = liftIO (js_iterateNext self)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.iterateNext Mozilla XPathResult.iterateNext documentation> 
+iterateNext_ :: (MonadIO m) => XPathResult -> m ()
+iterateNext_ self = liftIO (void (js_iterateNext self))
+ 
+foreign import javascript safe "(($1, $2) => { return $1[\"snapshotItem\"]($2); })"
+        js_snapshotItem :: XPathResult -> Optional Word -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
+snapshotItem :: (MonadIO m) => XPathResult -> Maybe Word -> m Node
+snapshotItem self index
+  = liftIO (js_snapshotItem self (maybeToOptional index))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotItem Mozilla XPathResult.snapshotItem documentation> 
+snapshotItem_ :: (MonadIO m) => XPathResult -> Maybe Word -> m ()
+snapshotItem_ self index
+  = liftIO (void (js_snapshotItem self (maybeToOptional index)))
+pattern ANY_TYPE = 0
+pattern NUMBER_TYPE = 1
+pattern STRING_TYPE = 2
+pattern BOOLEAN_TYPE = 3
+pattern UNORDERED_NODE_ITERATOR_TYPE = 4
+pattern ORDERED_NODE_ITERATOR_TYPE = 5
+pattern UNORDERED_NODE_SNAPSHOT_TYPE = 6
+pattern ORDERED_NODE_SNAPSHOT_TYPE = 7
+pattern ANY_UNORDERED_NODE_TYPE = 8
+pattern FIRST_ORDERED_NODE_TYPE = 9
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"resultType\"]; })"
+        js_getResultType :: XPathResult -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.resultType Mozilla XPathResult.resultType documentation> 
+getResultType :: (MonadIO m) => XPathResult -> m Word
+getResultType self = liftIO (js_getResultType self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"numberValue\"]; })"
+        js_getNumberValue :: XPathResult -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.numberValue Mozilla XPathResult.numberValue documentation> 
+getNumberValue :: (MonadIO m) => XPathResult -> m Double
+getNumberValue self = liftIO (js_getNumberValue self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"stringValue\"]; })"
+        js_getStringValue :: XPathResult -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.stringValue Mozilla XPathResult.stringValue documentation> 
+getStringValue ::
+               (MonadIO m, FromJSString result) => XPathResult -> m result
+getStringValue self
+  = liftIO (fromJSString <$> (js_getStringValue self))
+ 
+foreign import javascript safe "(($1) => { return ($1[\"booleanValue\"] ? 1 : 0); })"
+        js_getBooleanValue :: XPathResult -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.booleanValue Mozilla XPathResult.booleanValue documentation> 
+getBooleanValue :: (MonadIO m) => XPathResult -> m Bool
+getBooleanValue self = liftIO (js_getBooleanValue self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"singleNodeValue\"]; })"
+        js_getSingleNodeValue :: XPathResult -> IO Node
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.singleNodeValue Mozilla XPathResult.singleNodeValue documentation> 
+getSingleNodeValue :: (MonadIO m) => XPathResult -> m Node
+getSingleNodeValue self = liftIO (js_getSingleNodeValue self)
+ 
+foreign import javascript unsafe
+        "(($1) => { return ($1[\"invalidIteratorState\"] ? 1 : 0); })" js_getInvalidIteratorState
+        :: XPathResult -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.invalidIteratorState Mozilla XPathResult.invalidIteratorState documentation> 
+getInvalidIteratorState :: (MonadIO m) => XPathResult -> m Bool
+getInvalidIteratorState self
+  = liftIO (js_getInvalidIteratorState self)
+ 
+foreign import javascript safe "(($1) => { return $1[\"snapshotLength\"]; })"
+        js_getSnapshotLength :: XPathResult -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult.snapshotLength Mozilla XPathResult.snapshotLength documentation> 
+getSnapshotLength :: (MonadIO m) => XPathResult -> m Word
+getSnapshotLength self = liftIO (js_getSnapshotLength self)
diff --git a/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Generated/XSLTProcessor.hs
@@ -0,0 +1,193 @@
+{-# LANGUAGE PatternSynonyms #-}
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, ConstraintKinds, KindSignatures #-}
+module GHCJS.DOM.JSFFI.Generated.XSLTProcessor
+       (js_newXSLTProcessor, newXSLTProcessor, js_importStylesheet,
+        importStylesheet, js_transformToFragment, transformToFragment,
+        transformToFragment_, js_transformToDocument, transformToDocument,
+        transformToDocument_, js_setParameter, setParameter,
+        js_getParameter, getParameter, getParameter_, getParameterUnsafe,
+        getParameterUnchecked, js_removeParameter, removeParameter,
+        js_clearParameters, clearParameters, js_reset, reset,
+        XSLTProcessor(..), gTypeXSLTProcessor)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName, unsafeEventNameAsync)
+import GHCJS.DOM.JSFFI.Generated.Enums
+ 
+foreign import javascript unsafe "(() => { return new window[\"XSLTProcessor\"](); })"
+        js_newXSLTProcessor :: IO XSLTProcessor
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation> 
+newXSLTProcessor :: (MonadIO m) => m XSLTProcessor
+newXSLTProcessor = liftIO (js_newXSLTProcessor)
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"importStylesheet\"]($2); })"
+        js_importStylesheet :: XSLTProcessor -> Optional Node -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.importStylesheet Mozilla XSLTProcessor.importStylesheet documentation> 
+importStylesheet ::
+                 (MonadIO m, IsNode stylesheet) =>
+                   XSLTProcessor -> Maybe stylesheet -> m ()
+importStylesheet self stylesheet
+  = liftIO
+      (js_importStylesheet self
+         (maybeToOptional (fmap toNode stylesheet)))
+ 
+foreign import javascript unsafe
+        "(($1, $2, $3) => { return $1[\"transformToFragment\"]($2,\n$3); })" js_transformToFragment ::
+        XSLTProcessor ->
+          Optional Node -> Optional Document -> IO DocumentFragment
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
+transformToFragment ::
+                    (MonadIO m, IsNode source, IsDocument docVal) =>
+                      XSLTProcessor -> Maybe source -> Maybe docVal -> m DocumentFragment
+transformToFragment self source docVal
+  = liftIO
+      (js_transformToFragment self (maybeToOptional (fmap toNode source))
+         (maybeToOptional (fmap toDocument docVal)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToFragment Mozilla XSLTProcessor.transformToFragment documentation> 
+transformToFragment_ ::
+                     (MonadIO m, IsNode source, IsDocument docVal) =>
+                       XSLTProcessor -> Maybe source -> Maybe docVal -> m ()
+transformToFragment_ self source docVal
+  = liftIO
+      (void
+         (js_transformToFragment self (maybeToOptional (fmap toNode source))
+            (maybeToOptional (fmap toDocument docVal))))
+ 
+foreign import javascript unsafe "(($1, $2) => { return $1[\"transformToDocument\"]($2); })"
+        js_transformToDocument ::
+        XSLTProcessor -> Optional Node -> IO Document
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
+transformToDocument ::
+                    (MonadIO m, IsNode source) =>
+                      XSLTProcessor -> Maybe source -> m Document
+transformToDocument self source
+  = liftIO
+      (js_transformToDocument self
+         (maybeToOptional (fmap toNode source)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.transformToDocument Mozilla XSLTProcessor.transformToDocument documentation> 
+transformToDocument_ ::
+                     (MonadIO m, IsNode source) => XSLTProcessor -> Maybe source -> m ()
+transformToDocument_ self source
+  = liftIO
+      (void
+         (js_transformToDocument self
+            (maybeToOptional (fmap toNode source))))
+ 
+foreign import javascript unsafe "(($1, $2, $3, $4) => { return $1[\"setParameter\"]($2, $3, $4); })"
+        js_setParameter ::
+        XSLTProcessor ->
+          Optional JSString ->
+            Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.setParameter Mozilla XSLTProcessor.setParameter documentation> 
+setParameter ::
+             (MonadIO m, ToJSString namespaceURI, ToJSString localName,
+              ToJSString value) =>
+               XSLTProcessor ->
+                 Maybe namespaceURI -> Maybe localName -> Maybe value -> m ()
+setParameter self namespaceURI localName value
+  = liftIO
+      (js_setParameter self (toOptionalJSString namespaceURI)
+         (toOptionalJSString localName)
+         (toOptionalJSString value))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"getParameter\"]($2, $3); })"
+        js_getParameter ::
+        XSLTProcessor ->
+          Optional JSString -> Optional JSString -> IO (Nullable JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameter ::
+             (MonadIO m, ToJSString namespaceURI, ToJSString localName,
+              FromJSString result) =>
+               XSLTProcessor ->
+                 Maybe namespaceURI -> Maybe localName -> m (Maybe result)
+getParameter self namespaceURI localName
+  = liftIO
+      (fromMaybeJSString <$>
+         (js_getParameter self (toOptionalJSString namespaceURI)
+            (toOptionalJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameter_ ::
+              (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
+getParameter_ self namespaceURI localName
+  = liftIO
+      (void
+         (js_getParameter self (toOptionalJSString namespaceURI)
+            (toOptionalJSString localName)))
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameterUnsafe ::
+                   (MonadIO m, ToJSString namespaceURI, ToJSString localName,
+                    HasCallStack, FromJSString result) =>
+                     XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
+getParameterUnsafe self namespaceURI localName
+  = liftIO
+      ((fromMaybeJSString <$>
+          (js_getParameter self (toOptionalJSString namespaceURI)
+             (toOptionalJSString localName)))
+         >>= maybe (Prelude.error "Nothing to return") return)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.getParameter Mozilla XSLTProcessor.getParameter documentation> 
+getParameterUnchecked ::
+                      (MonadIO m, ToJSString namespaceURI, ToJSString localName,
+                       FromJSString result) =>
+                        XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m result
+getParameterUnchecked self namespaceURI localName
+  = liftIO
+      (fromJust . fromMaybeJSString <$>
+         (js_getParameter self (toOptionalJSString namespaceURI)
+            (toOptionalJSString localName)))
+ 
+foreign import javascript unsafe "(($1, $2, $3) => { return $1[\"removeParameter\"]($2, $3); })"
+        js_removeParameter ::
+        XSLTProcessor -> Optional JSString -> Optional JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.removeParameter Mozilla XSLTProcessor.removeParameter documentation> 
+removeParameter ::
+                (MonadIO m, ToJSString namespaceURI, ToJSString localName) =>
+                  XSLTProcessor -> Maybe namespaceURI -> Maybe localName -> m ()
+removeParameter self namespaceURI localName
+  = liftIO
+      (js_removeParameter self (toOptionalJSString namespaceURI)
+         (toOptionalJSString localName))
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"clearParameters\"](); })"
+        js_clearParameters :: XSLTProcessor -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.clearParameters Mozilla XSLTProcessor.clearParameters documentation> 
+clearParameters :: (MonadIO m) => XSLTProcessor -> m ()
+clearParameters self = liftIO (js_clearParameters self)
+ 
+foreign import javascript unsafe "(($1) => { return $1[\"reset\"](); })" js_reset ::
+        XSLTProcessor -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor.reset Mozilla XSLTProcessor.reset documentation> 
+reset :: (MonadIO m) => XSLTProcessor -> m ()
+reset self = liftIO (js_reset self)
diff --git a/src/GHCJS/DOM/JSFFI/Geolocation.hs b/src/GHCJS/DOM/JSFFI/Geolocation.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Geolocation.hs
@@ -0,0 +1,38 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
+module GHCJS.DOM.JSFFI.Geolocation (
+    module Generated
+  , js_getCurrentPosition
+  , getCurrentPosition'
+  , getCurrentPosition
+) where
+
+import GHC.Base (IO(..))
+import GHC.Prim (RealWorld, State#, ByteArray#)
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+#if __GHCJS__
+import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.PositionError (throwPositionException)
+import GHCJS.DOM.JSFFI.Generated.Geolocation as Generated hiding (js_getCurrentPosition, getCurrentPosition)
+
+foreign import javascript interruptible
+        "$1[\"getCurrentPosition\"](function(pos) { $c(true, pos); }, function(e) { $c(false, e); }, $2);" js_getCurrentPosition ::
+        Geolocation -> Nullable PositionOptions -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
+getCurrentPosition' :: MonadIO m => Geolocation -> Maybe PositionOptions -> m (Either PositionError Geoposition)
+getCurrentPosition' self options = liftIO . IO $ \s# ->
+      case js_getCurrentPosition self (maybeToNullable options) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (PositionError (JSVal error)) #)
+          (# s2#, True,  pos   #) -> (# s2#, Right (Geoposition   (JSVal pos  )) #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation.getCurrentPosition Mozilla Geolocation.getCurrentPosition documentation>
+getCurrentPosition :: MonadIO m => Geolocation -> Maybe PositionOptions -> m Geoposition
+getCurrentPosition self options = getCurrentPosition' self options >>= either throwPositionException return
diff --git a/src/GHCJS/DOM/JSFFI/Navigator.hs b/src/GHCJS/DOM/JSFFI/Navigator.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Navigator.hs
@@ -0,0 +1,36 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
+module GHCJS.DOM.JSFFI.Navigator (
+    module Generated
+  , js_getUserMedia
+  , getUserMedia
+) where
+
+import GHC.Base (IO(..))
+import GHC.Prim (RealWorld, State#, ByteArray#)
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+#if __GHCJS__
+import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.NavigatorUserMediaError (throwUserMediaException)
+import GHCJS.DOM.JSFFI.Generated.Navigator as Generated hiding (js_getUserMedia, getUserMedia)
+
+foreign import javascript interruptible
+        "$1[\"webkitGetUserMedia\"]($2, function(ms) { $c(true, ms); }, function(e) { $c(false, e); });" js_getUserMedia ::
+        Navigator -> Nullable Dictionary -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Navigator.webkitGetUserMedia Mozilla Navigator.webkitGetUserMedia documentation>
+getUserMedia' :: MonadIO m => Navigator -> Maybe Dictionary -> m (Either NavigatorUserMediaError MediaStream)
+getUserMedia' self options = liftIO . IO $ \s# ->
+      case js_getUserMedia self (maybeToNullable options) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (NavigatorUserMediaError (JSVal error)) #)
+          (# s2#, True,  ms    #) -> (# s2#, Right (MediaStream             (JSVal ms  )) #)
+
+getUserMedia :: MonadIO m => Navigator -> Maybe Dictionary -> m MediaStream
+getUserMedia self options = getUserMedia' self options >>= either throwUserMediaException return
diff --git a/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs b/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/NavigatorUserMediaError.hs
@@ -0,0 +1,27 @@
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.JSFFI.NavigatorUserMediaError (
+    module Generated
+  , UserMediaException(..)
+  , throwUserMediaException
+) where
+
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.DOM.JSFFI.DOMError (getName)
+import GHCJS.DOM.JSFFI.Generated.NavigatorUserMediaError as Generated
+
+data UserMediaException = UserMediaException {
+        userMediaErrorName           :: String,
+        userMediaErrorConstraintName :: String } deriving (Show, Eq)
+
+instance Exception UserMediaException
+
+throwUserMediaException :: MonadIO m => NavigatorUserMediaError -> m a
+throwUserMediaException error = do
+    userMediaErrorName           <- getName           error
+    userMediaErrorConstraintName <- getConstraintName error
+    liftIO $ throwIO (UserMediaException{..})
+
+
+
diff --git a/src/GHCJS/DOM/JSFFI/PositionError.hs b/src/GHCJS/DOM/JSFFI/PositionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/PositionError.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.JSFFI.PositionError (
+    module Generated
+  , PositionErrorCode(..)
+  , PositionException(..)
+  , throwPositionException
+) where
+
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.DOM.JSFFI.Generated.PositionError as Generated
+
+data PositionErrorCode = PositionPermissionDenied | PositionUnavailable | PositionTimeout deriving (Show, Eq, Enum)
+data PositionException = PositionException {
+        positionErrorCode    :: PositionErrorCode,
+        positionErrorMessage :: String } deriving (Show, Eq)
+
+instance Exception PositionException
+
+throwPositionException :: MonadIO m => PositionError -> m a
+throwPositionException error = do
+    positionErrorCode    <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    positionErrorMessage <- getMessage error
+    liftIO $ throwIO (PositionException{..})
+
diff --git a/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs b/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/RTCPeerConnectionError.hs
@@ -0,0 +1,6 @@
+module GHCJS.DOM.JSFFI.RTCPeerConnectionError (
+
+) where
+
+
+
diff --git a/src/GHCJS/DOM/JSFFI/SQLError.hs b/src/GHCJS/DOM/JSFFI/SQLError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SQLError.hs
@@ -0,0 +1,32 @@
+{-# LANGUAGE RecordWildCards #-}
+module GHCJS.DOM.JSFFI.SQLError (
+    module Generated
+  , SQLErrorCode(..)
+  , SQLException(..)
+  , throwSQLException
+) where
+
+import Control.Exception (Exception, throwIO)
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.DOM.JSFFI.Generated.SQLError as Generated
+
+data SQLErrorCode = SQLErrorUnknown
+                  | SQLErrorDatabase
+                  | SQLErrorVersion
+                  | SQLErrorTooLarge
+                  | SQLErrorQuota
+                  | SQLErrorSyntax
+                  | SQLErrorConstraint
+                  | SQLErrorTimeout
+                  deriving (Show, Eq, Enum)
+data SQLException = SQLException { sqlErrorCode :: SQLErrorCode, sqlErrorMessage :: String } deriving (Show, Eq)
+
+instance Exception SQLException
+
+throwSQLException :: MonadIO m => SQLError -> m a
+throwSQLException error = do
+    sqlErrorCode <- (toEnum . subtract 1 . fromIntegral) <$> getCode error
+    sqlErrorMessage <- getMessage error
+    liftIO $ throwIO (SQLException{..})
+
diff --git a/src/GHCJS/DOM/JSFFI/SQLTransaction.hs b/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SQLTransaction.hs
@@ -0,0 +1,45 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI, GHCForeignImportPrim,
+             UnboxedTuples, MagicHash, UnliftedFFITypes, LambdaCase, CPP #-}
+module GHCJS.DOM.JSFFI.SQLTransaction (
+    module Generated
+  , js_executeSql
+  , executeSql'
+  , executeSql
+  , executeSql_
+) where
+
+import GHC.Base (IO(..))
+import GHC.Prim (RealWorld, State#, ByteArray#)
+
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+
+#if __GHCJS__
+import GHCJS.Prim (JSVal(..))
+#elif defined(javascript_HOST_ARCH)
+import GHC.JS.Prim (JSVal(..))
+#endif
+import GHCJS.Types (JSString)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.SQLError (throwSQLException)
+import GHCJS.DOM.JSFFI.Generated.SQLTransaction as Generated hiding (js_executeSql, executeSql)
+
+foreign import javascript interruptible
+        "$1[\"executeSql\"]($2, $3, function(tx, rs) { $c(true, rs); }, function(tx, e) { $c(false, e); });"
+        js_executeSql :: SQLTransaction -> JSString -> Nullable ObjectArray -> State# RealWorld -> (# State# RealWorld, Bool, ByteArray# #)
+
+executeSql' :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m (Either SQLError SQLResultSet)
+executeSql' self sqlStatement arguments = liftIO $ IO $ \s# ->
+      case js_executeSql self (toJSString sqlStatement) (maybeToNullable . fmap toObjectArray $ arguments) s# of
+          (# s2#, False, error #) -> (# s2#, Left  (SQLError     (JSVal error)) #)
+          (# s2#, True,  rs    #) -> (# s2#, Right (SQLResultSet (JSVal rs   )) #)
+
+executeSql :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m SQLResultSet
+executeSql self sqlStatement arguments = executeSql' self sqlStatement arguments >>= either throwSQLException return
+
+executeSql_ :: (MonadIO m, ToJSString sqlStatement, IsObjectArray arguments) =>
+              SQLTransaction -> sqlStatement -> Maybe arguments -> m ()
+executeSql_ self sqlStatement arguments = void $ executeSql self sqlStatement arguments
diff --git a/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs b/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechGrammar.hs
@@ -0,0 +1,108 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechGrammar
+       (newSpeechGrammarList, addFromURI, addFromString,
+        getLength, getSrc, setSrc,
+        getWeight, setWeight, item, item_,
+        SpeechGrammar(..), gTypeSpeechGrammar,
+        SpeechGrammarList(..), gTypeSpeechGrammarList)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe
+        "new window[\"webkitSpeechGrammarList\"]()"
+        js_newSpeechGrammarList ::
+        IO SpeechGrammarList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList Mozilla SpeechGrammarList documentation>
+newSpeechGrammarList :: (MonadIO m) => m SpeechGrammarList
+newSpeechGrammarList = liftIO (js_newSpeechGrammarList)
+
+foreign import javascript unsafe
+        "$1[\"addFromURI\"]($2,\n$3)"
+        js_speechGrammarListAddFromURI ::
+        SpeechGrammarList -> JSString
+        -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromURI Mozilla SpeechGrammarList.addFromURI documentation>
+addFromURI :: (MonadIO m, ToJSString grammarURI)
+  => SpeechGrammarList -> grammarURI -> Maybe Double -> m ()
+addFromURI self grammarURI weight
+  = liftIO (js_speechGrammarListAddFromURI self
+            (toJSString grammarURI) (maybeToOptional weight))
+
+foreign import javascript unsafe
+        "$1[\"addFromString\"]($2,\n$3)"
+        js_speechGrammarListAddFromString ::
+        SpeechGrammarList -> JSString
+        -> Optional Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.addFromString Mozilla SpeechGrammarList.addFromString documentation>
+addFromString :: (MonadIO m, ToJSString grammarStr)
+  => SpeechGrammarList -> grammarStr -> Maybe Double -> m ()
+addFromString self grammarStr weight
+  = liftIO (js_speechGrammarListAddFromString self
+            (toJSString grammarStr) (maybeToOptional weight))
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        SpeechGrammarList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.length Mozilla SpeechGrammarList.length documentation>
+getLength :: (MonadIO m) => SpeechGrammarList -> m Word
+getLength self = liftIO (js_getLength self)
+
+foreign import javascript unsafe "$1[$2]" js_item ::
+        SpeechGrammarList -> Word -> IO SpeechGrammar
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
+item :: (MonadIO m) => SpeechGrammarList -> Word -> m SpeechGrammar
+item self index = liftIO (js_item self index)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList.item Mozilla SpeechGrammarList.item documentation>
+item_ :: (MonadIO m) => SpeechGrammarList -> Word -> m ()
+item_ self index = liftIO (void (js_item self index))
+
+foreign import javascript unsafe "$1[\"src\"] = $2;" js_setSrc ::
+        SpeechGrammar -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
+setSrc ::
+       (MonadIO m, ToJSString val) => SpeechGrammar -> val -> m ()
+setSrc self val = liftIO (js_setSrc self (toJSString val))
+
+foreign import javascript unsafe "$1[\"src\"]" js_getSrc ::
+        SpeechGrammar -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.src Mozilla SpeechGrammar.src documentation>
+getSrc ::
+       (MonadIO m, FromJSString result) => SpeechGrammar -> m result
+getSrc self = liftIO (fromJSString <$> (js_getSrc self))
+
+foreign import javascript unsafe "$1[\"weight\"] = $2;"
+        js_setWeight :: SpeechGrammar -> Double -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
+setWeight :: (MonadIO m) => SpeechGrammar -> Double -> m ()
+setWeight self val = liftIO (js_setWeight self val)
+
+foreign import javascript unsafe "$1[\"weight\"]" js_getWeight ::
+        SpeechGrammar -> IO Double
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar.weight Mozilla SpeechGrammar.weight documentation>
+getWeight ::
+          (MonadIO m) => SpeechGrammar -> m Double
+getWeight self = liftIO (js_getWeight self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognition.hs
@@ -0,0 +1,225 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognition
+       (newSpeechRecognition, getMaxAlternatives, setMaxAlternatives,
+        getGrammars, setGrammars, getLang, setLang,
+        getInterimResults, setInterimResults,
+        getContinuous, setContinuous,
+        audiostart, audioend, end, error, nomatch,
+        result, soundstart, soundend, speechstart, speechend, start,
+        abort, startRecognition, stop,
+        SpeechRecognition(..), gTypeSpeechRecognition)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHC.JS.Foreign.Callback (syncCallback, asyncCallback, syncCallback1, asyncCallback1, syncCallback2, asyncCallback2, OnBlocked(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe
+        "new window[\"webkitSpeechRecognition\"]()"
+        js_newSpeechRecognition :: IO SpeechRecognition
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition Mozilla SpeechRecognition documentation>
+newSpeechRecognition :: (MonadIO m) => m SpeechRecognition
+newSpeechRecognition = liftIO (js_newSpeechRecognition)
+
+foreign import javascript unsafe
+        "$1[\"maxAlternatives\"]"
+        js_speechRecognitionGetMaxAlternatives ::
+        SpeechRecognition -> IO (Word)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
+getMaxAlternatives :: (MonadIO m)
+  => SpeechRecognition -> m Word
+getMaxAlternatives self
+  = liftIO (js_speechRecognitionGetMaxAlternatives self)
+
+foreign import javascript unsafe
+        "$1[\"maxAlternatives\"] = $2;"
+        js_speechRecognitionMaxAlternatives ::
+        SpeechRecognition -> Word -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.maxAlternatives Mozilla SpeechRecognition.maxAlternatives documentation>
+setMaxAlternatives :: (MonadIO m)
+  => SpeechRecognition -> Word -> m ()
+setMaxAlternatives self maxAlt
+  = liftIO (js_speechRecognitionMaxAlternatives self maxAlt)
+
+foreign import javascript unsafe
+        "$1[\"grammars\"]"
+        js_speechRecognitionGetGrammars ::
+        SpeechRecognition -> IO SpeechGrammarList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
+getGrammars :: (MonadIO m)
+  => SpeechRecognition -> m (SpeechGrammarList)
+getGrammars self
+  = liftIO (js_speechRecognitionGetGrammars self)
+
+foreign import javascript unsafe
+        "$1[\"grammars\"] = $2;"
+        js_speechRecognitionSetGrammars ::
+        SpeechRecognition -> SpeechGrammarList -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.grammars Mozilla SpeechRecognition.grammars documentation>
+setGrammars :: (MonadIO m)
+  => SpeechRecognition -> SpeechGrammarList -> m ()
+setGrammars self grammars
+  = liftIO (js_speechRecognitionSetGrammars self grammars)
+
+foreign import javascript unsafe
+        "$1[\"lang\"]"
+        js_speechRecognitionGetLang ::
+        SpeechRecognition -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
+getLang :: (MonadIO m, FromJSString result)
+  => SpeechRecognition -> m (result)
+getLang self
+  = liftIO (fromJSString <$> (js_speechRecognitionGetLang self))
+
+foreign import javascript unsafe
+        "$1[\"lang\"] = $2;"
+        js_speechRecognitionSetLang ::
+        SpeechRecognition -> JSString -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.lang Mozilla SpeechRecognition.lang documentation>
+setLang :: (MonadIO m, ToJSString lang)
+  => SpeechRecognition -> lang -> m ()
+setLang self lang
+  = liftIO (js_speechRecognitionSetLang self (toJSString lang))
+
+foreign import javascript unsafe
+        "$1[\"interimResults\"]"
+        js_speechRecognitionGetInterimResults ::
+        SpeechRecognition -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
+getInterimResults :: (MonadIO m)
+  => SpeechRecognition -> m (Bool)
+getInterimResults self
+  = liftIO (js_speechRecognitionGetInterimResults self)
+
+foreign import javascript unsafe
+        "$1[\"interimResults\"] = $2;"
+        js_speechRecognitionSetInterimResults ::
+        SpeechRecognition -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.interimResults Mozilla SpeechRecognition.interimResults documentation>
+setInterimResults :: (MonadIO m)
+  => SpeechRecognition -> Bool -> m ()
+setInterimResults self val
+  = liftIO (js_speechRecognitionSetInterimResults self val)
+
+foreign import javascript unsafe
+        "$1[\"continuous\"]"
+        js_speechRecognitionGetContinuous ::
+        SpeechRecognition -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
+getContinuous :: (MonadIO m)
+  => SpeechRecognition -> m (Bool)
+getContinuous self
+  = liftIO (js_speechRecognitionGetContinuous self)
+
+foreign import javascript unsafe
+        "$1[\"continuous\"] = $2;"
+        js_speechRecognitionSetContinuous ::
+        SpeechRecognition -> Bool -> IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.continuous Mozilla SpeechRecognition.continuous documentation>
+setContinuous :: (MonadIO m)
+  => SpeechRecognition -> Bool -> m ()
+setContinuous self val
+  = liftIO (js_speechRecognitionSetContinuous self val)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudiostart Mozilla SpeechRecognition.onaudiostart documentation>
+audiostart :: EventName SpeechRecognition Event
+audiostart = unsafeEventName (toJSString "audiostart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onaudioend Mozilla SpeechRecognition.onaudioend documentation>
+audioend :: EventName SpeechRecognition Event
+audioend = unsafeEventName (toJSString "audioend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onend Mozilla SpeechRecognition.onend documentation>
+end :: EventName SpeechRecognition Event
+end = unsafeEventName (toJSString "end")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onerror Mozilla SpeechRecognition.onerror documentation>
+error :: EventName SpeechRecognition SpeechRecognitionError
+error = unsafeEventName (toJSString "error")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onnomatch Mozilla SpeechRecognition.onnomatch documentation>
+nomatch :: EventName SpeechRecognition SpeechRecognitionEvent
+nomatch = unsafeEventName (toJSString "nomatch")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onresult Mozilla SpeechRecognition.onresult documentation>
+result :: EventName SpeechRecognition SpeechRecognitionEvent
+result = unsafeEventName (toJSString "result")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundstart Mozilla SpeechRecognition.onsoundstart documentation>
+soundstart :: EventName SpeechRecognition Event
+soundstart = unsafeEventName (toJSString "soundstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onsoundend Mozilla SpeechRecognition.onsoundend documentation>
+soundend :: EventName SpeechRecognition Event
+soundend = unsafeEventName (toJSString "soundend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechstart Mozilla SpeechRecognition.onspeechstart documentation>
+speechstart :: EventName SpeechRecognition Event
+speechstart = unsafeEventName (toJSString "speechstart")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onspeechend Mozilla SpeechRecognition.onspeechend documentation>
+speechend :: EventName SpeechRecognition Event
+speechend = unsafeEventName (toJSString "speechend")
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.onstart Mozilla SpeechRecognition.onstart documentation>
+start :: EventName SpeechRecognition Event
+start = unsafeEventName (toJSString "start")
+
+foreign import javascript unsafe
+        "$1[\"abort\"]()"
+        js_speechRecognitionAbort ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.abort Mozilla SpeechRecognition.abort documentation>
+abort :: (MonadIO m)
+  => SpeechRecognition -> m ()
+abort self
+  = liftIO (js_speechRecognitionAbort self)
+
+foreign import javascript unsafe
+        "$1[\"start\"]()"
+        js_speechRecognitionStart ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.start Mozilla SpeechRecognition.start documentation>
+startRecognition :: (MonadIO m)
+  => SpeechRecognition -> m ()
+startRecognition self
+  = liftIO (js_speechRecognitionStart self)
+
+foreign import javascript unsafe
+        "$1[\"stop\"]()"
+        js_speechRecognitionStop ::
+        SpeechRecognition ->  IO ()
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition.stop Mozilla SpeechRecognition.stop documentation>
+stop :: (MonadIO m)
+  => SpeechRecognition -> m ()
+stop self
+  = liftIO (js_speechRecognitionStop self)
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognitionError.hs
@@ -0,0 +1,41 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognitionError
+       (getError, getMessage,
+        SpeechRecognitionError(..), gTypeSpeechRecognitionError)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "$1[\"error\"]" js_getSpeechRecognitionError ::
+        SpeechRecognitionError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.error Mozilla SpeechRecognitionError.error documentation>
+getError :: (MonadIO m, FromJSString result)
+  => SpeechRecognitionError -> m (result)
+getError self
+  = liftIO (fromJSString <$> (js_getSpeechRecognitionError self))
+
+foreign import javascript unsafe "$1[\"message\"]" js_getSpeechRecognitionErrorMessage ::
+        SpeechRecognitionError -> IO JSString
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError.message Mozilla SpeechRecognitionError.message documentation>
+getMessage :: (MonadIO m, FromJSString result)
+  => SpeechRecognitionError -> m (result)
+getMessage self
+  = liftIO (fromJSString <$> (js_getSpeechRecognitionErrorMessage self))
diff --git a/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs b/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/SpeechRecognitionEvent.hs
@@ -0,0 +1,104 @@
+{-# LANGUAGE ForeignFunctionInterface #-}
+{-# LANGUAGE JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.SpeechRecognitionEvent
+       (getResultList, getResultListLength, getResultLength,
+        getResult, getAlternative, getTranscript, getConfidence,
+        getResultIsFinal, getBestAlternative,
+        SpeechRecognitionResultList(..), gTypeSpeechRecognitionResultList,
+        SpeechRecognitionResult(..), gTypeSpeechRecognitionResult,
+        SpeechRecognitionAlternative(..), gTypeSpeechRecognitionAlternative,
+        SpeechRecognitionEvent(..), gTypeSpeechRecognitionEvent)
+       where
+import Prelude ((.), (==), (>>=), return, IO, Int, Float, Double, Bool(..), Maybe, maybe, fromIntegral, round, fmap, Show, Read, Eq, Ord)
+import qualified Prelude (error)
+import Data.Typeable (Typeable)
+import GHCJS.Types (JSVal(..), JSString)
+import GHCJS.Foreign (jsNull, jsUndefined)
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import Control.Monad (void)
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int64)
+import Data.Word (Word, Word64)
+import Data.Maybe (fromJust)
+import Data.Traversable (mapM)
+import GHCJS.DOM.Types
+import Control.Applicative ((<$>))
+import GHCJS.DOM.EventTargetClosures (EventName, unsafeEventName)
+import GHCJS.DOM.JSFFI.Generated.Enums
+
+foreign import javascript unsafe "$1[\"results\"]" js_getSpeechRecognitionResultList ::
+        SpeechRecognitionEvent -> IO SpeechRecognitionResultList
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent.results Mozilla SpeechRecognitionEvent.results documentation>
+getResultList :: (MonadIO m)
+  => SpeechRecognitionEvent -> m SpeechRecognitionResultList
+getResultList self
+  = liftIO (js_getSpeechRecognitionResultList self)
+
+foreign import javascript unsafe "$1[\"isFinal\"]" js_getIsFinal ::
+        SpeechRecognitionResult -> IO Bool
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.isFinal Mozilla SpeechRecognitionResult.isFinal documentation>
+getResultIsFinal :: (MonadIO m) => SpeechRecognitionResult -> m Bool
+getResultIsFinal self = liftIO (js_getIsFinal self)
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength ::
+        SpeechRecognitionResult -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.length Mozilla SpeechRecognitionResult.length documentation>
+getResultLength :: (MonadIO m) => SpeechRecognitionResult -> m Word
+getResultLength self = liftIO (js_getLength self)
+
+foreign import javascript unsafe "$1[\"length\"]" js_getLength2 ::
+        SpeechRecognitionResultList -> IO Word
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.length Mozilla SpeechRecognitionResultList.length documentation>
+getResultListLength :: (MonadIO m) => SpeechRecognitionResultList -> m Word
+getResultListLength self = liftIO (js_getLength2 self)
+
+foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionAlternative ::
+        SpeechRecognitionResult -> Word -> IO SpeechRecognitionAlternative
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult.item Mozilla SpeechRecognitionResult.item documentation>
+getAlternative :: (MonadIO m) => SpeechRecognitionResult -> Word -> m SpeechRecognitionAlternative
+getAlternative self index = liftIO (js_getSpeechRecognitionAlternative self index)
+
+foreign import javascript unsafe "$1[$2]" js_getSpeechRecognitionResult ::
+        SpeechRecognitionResultList -> Word -> IO SpeechRecognitionResult
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList.item Mozilla SpeechRecognitionResultList.item documentation>
+getResult :: (MonadIO m) => SpeechRecognitionResultList -> Word -> m SpeechRecognitionResult
+getResult self index = liftIO (js_getSpeechRecognitionResult self index)
+
+foreign import javascript unsafe
+        "$1[\"transcript\"]"
+        js_getSpeechRecognitionAlternativeTranscript ::
+        SpeechRecognitionAlternative -> IO (JSString)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.transcript Mozilla SpeechRecognitionAlternative.transcript documentation>
+getTranscript :: (MonadIO m)
+  => SpeechRecognitionAlternative -> m (JSString)
+getTranscript self
+  = liftIO (js_getSpeechRecognitionAlternativeTranscript self)
+
+foreign import javascript unsafe
+        "$1[\"confidence\"]"
+        js_getSpeechRecognitionAlternativeConfidence ::
+        SpeechRecognitionAlternative -> IO (Double)
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative.confidence Mozilla SpeechRecognitionAlternative.confidence documentation>
+getConfidence :: (MonadIO m)
+  => SpeechRecognitionAlternative -> m (Double)
+getConfidence self
+  = liftIO (js_getSpeechRecognitionAlternativeConfidence self)
+
+foreign import javascript unsafe
+        "$1[\"results\"][0][0]"
+        js_getBestAlternative ::
+        SpeechRecognitionEvent -> IO SpeechRecognitionAlternative
+
+getBestAlternative :: (MonadIO m)
+  => SpeechRecognitionEvent -> m SpeechRecognitionAlternative
+getBestAlternative ev =
+  liftIO (js_getBestAlternative ev)
diff --git a/src/GHCJS/DOM/JSFFI/Window.hs b/src/GHCJS/DOM/JSFFI/Window.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/Window.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.Window (
+    module Generated
+  , js_openDatabase
+  , openDatabase
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+
+import GHCJS.Types (JSString)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.Generated.Window as Generated hiding (js_openDatabase, openDatabase)
+
+foreign import javascript interruptible
+        "(function(db) { if(db) $c(db) })($1[\"openDatabase\"]($2, $3, $4, $5, function(d) { $c(d) }));" js_openDatabase ::
+        Window -> JSString -> JSString -> JSString -> Word -> IO Database
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/Window.openDatabase Mozilla Window.openDatabase documentation>
+openDatabase :: (MonadIO m, ToJSString name, ToJSString version, ToJSString displayName) =>
+                Window -> name -> version -> displayName -> Word -> m Database
+openDatabase self name version displayName estimatedSize = liftIO $
+    js_openDatabase
+        self
+        (toJSString name)
+        (toJSString version)
+        (toJSString displayName)
+        estimatedSize
diff --git a/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs b/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/JSFFI/XMLHttpRequest.hs
@@ -0,0 +1,59 @@
+{-# LANGUAGE ForeignFunctionInterface, JavaScriptFFI #-}
+module GHCJS.DOM.JSFFI.XMLHttpRequest (
+    module Generated
+  , XHRError(..)
+  , js_send
+  , send
+  , sendString
+  , sendArrayBuffer
+  , sendBlob
+  , sendDocument
+  , sendFormData
+) where
+
+import Control.Monad.IO.Class (MonadIO(..))
+import Control.Exception (Exception(..), throwIO, onException)
+
+import GHCJS.Types (JSVal)
+import GHCJS.Marshal.Internal (PToJSVal(..))
+import GHCJS.Foreign (jsNull)
+import GHCJS.DOM.Types
+
+import GHCJS.DOM.JSFFI.Generated.XMLHttpRequest as Generated hiding (js_send, send)
+import GHCJS.DOM.JSFFI.Generated.XMLHttpRequestEventTarget as Generated
+
+data XHRError = XHRError
+              | XHRAborted
+              deriving (Show, Eq)
+
+instance Exception XHRError
+
+throwXHRError 0 = return ()
+throwXHRError 1 = throwIO XHRAborted
+throwXHRError 2 = throwIO XHRError
+
+foreign import javascript interruptible "h$dom$sendXHR($1, $2, $c);" js_send :: XMLHttpRequest -> JSVal -> IO Int
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+send :: (MonadIO m) => XMLHttpRequest -> m ()
+send self = liftIO $ (js_send self jsNull >>= throwXHRError) `onException` abort self
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendString :: (MonadIO m, ToJSString str) => XMLHttpRequest -> str -> m ()
+sendString self str = liftIO $ (js_send self (pToJSVal str) >>= throwXHRError) `onException` abort self
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendArrayBuffer :: (MonadIO m, IsArrayBufferView view) => XMLHttpRequest -> view -> m ()
+sendArrayBuffer self view = liftIO $ (js_send self (unArrayBufferView $ toArrayBufferView view) >>= throwXHRError) `onException` abort self
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendBlob :: (MonadIO m, IsBlob blob) => XMLHttpRequest -> blob -> m ()
+sendBlob self blob = liftIO $ (js_send self (unBlob $ toBlob blob) >>= throwXHRError) `onException` abort self
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendDocument :: (MonadIO m, IsDocument doc) => XMLHttpRequest -> doc -> m ()
+sendDocument self doc = liftIO $ (js_send self (unDocument $ toDocument doc) >>= throwXHRError) `onException` abort self
+
+-- | <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest#send() Mozilla XMLHttpRequest.send documentation>
+sendFormData :: (MonadIO m) => XMLHttpRequest -> FormData -> m ()
+sendFormData self formData = liftIO $ (js_send self (unFormData formData) >>= throwXHRError) `onException` abort self
diff --git a/src/GHCJS/DOM/Types.hs b/src/GHCJS/DOM/Types.hs
new file mode 100644
--- /dev/null
+++ b/src/GHCJS/DOM/Types.hs
@@ -0,0 +1,35866 @@
+{-# LANGUAGE CPP, JavaScriptFFI, ForeignFunctionInterface, ConstraintKinds, FlexibleInstances, RankNTypes, FlexibleContexts, ScopedTypeVariables #-}
+-- For HasCallStack compatibility
+{-# LANGUAGE ImplicitParams, KindSignatures #-}
+module GHCJS.DOM.Types (
+
+  -- * JavaScript Context and Monad
+    JSContextRef(..), JSM, askJSM, runJSM, MonadJSM(..), liftJSM
+
+  -- * DOM Context and Monad
+  , DOMContext(..), DOM, askDOM, runDOM, MonadDOM(..), liftDOM
+
+  -- * JavaScript Value
+  , JSVal(..), ToJSVal(..), FromJSVal(..), PToJSVal(..), PFromJSVal(..)
+
+  -- * JavaScript String
+  , JSString(..), ToJSString(..), FromJSString(..)
+  , toJSString, fromJSString, toMaybeJSString, fromMaybeJSString
+  , noJSString
+
+  -- * Nullable
+  , Nullable(..), nullableToMaybe, maybeToNullable
+
+  -- * Optional
+  , Optional(..), maybeToOptional, toOptionalJSString
+
+  -- * DOM String
+  , DOMString(..), ToDOMString(..), FromDOMString(..), IsDOMString, noDOMString
+  , USVString(..), IsUSVString, noUSVString
+  , ByteString(..), IsByteString, noByteString
+  , CSSOMString(..), IsCSSOMString, noCSSOMString
+
+  -- * Object
+  , maybeJSNullOrUndefined, GType(..)
+  , GObject(..), noGObject, IsGObject, toGObject, gTypeGObject, isA, objectToString
+  , castTo, unsafeCastTo, uncheckedCastTo
+  , js_eq, strictEqual
+
+  -- * TypedArray
+  , RawTypedArray(RawTypedArray), unRawTypedArray, IsRawTypedArray, toRawTypedArray, noRawTypedArray
+
+  , Function(Function), unFunction, IsFunction, toFunction, noFunction
+
+  , PromiseRejected(..), noPromiseRejected, maybeThrowPromiseRejected, checkPromiseResult
+
+  -- * Callbacks
+  , AudioBufferCallback(..), noAudioBufferCallback
+  , BlobCallback(..), noBlobCallback
+  , DatabaseCallback(..), noDatabaseCallback
+  , IntersectionObserverCallback(..), noIntersectionObserverCallback
+  , MediaQueryListListener(..), noMediaQueryListListener
+  , MediaStreamTrackSourcesCallback(..), noMediaStreamTrackSourcesCallback
+  , NavigatorUserMediaErrorCallback(..), noNavigatorUserMediaErrorCallback
+  , NavigatorUserMediaSuccessCallback(..), noNavigatorUserMediaSuccessCallback
+  , NotificationPermissionCallback(..)
+  , NodeFilter(..), noNodeFilter
+  , PositionCallback(..), noPositionCallback
+  , PositionErrorCallback(..), noPositionErrorCallback
+  , PerformanceObserverCallback(..), noPerformanceObserverCallback
+  , RequestAnimationFrameCallback(..), noRequestAnimationFrameCallback
+  , RTCPeerConnectionErrorCallback(..), noRTCPeerConnectionErrorCallback
+  , RTCSessionDescriptionCallback(..), noRTCSessionDescriptionCallback
+  , RTCStatsCallback(..), noRTCStatsCallback
+  , SQLStatementCallback(..), noSQLStatementCallback
+  , SQLStatementErrorCallback(..), noSQLStatementErrorCallback
+  , SQLTransactionCallback(..), noSQLTransactionCallback
+  , SQLTransactionErrorCallback(..), noSQLTransactionErrorCallback
+  , StorageErrorCallback(..), noStorageErrorCallback
+  , StorageQuotaCallback(..), noStorageQuotaCallback
+  , StorageUsageCallback(..), noStorageUsageCallback
+  , StringCallback(..)
+  , VoidCallback(..), noVoidCallback
+
+  -- * Custom Types
+  , DOMHighResTimeStamp, noDOMHighResTimeStamp
+  , PerformanceEntryList, noPerformanceEntryList
+
+  -- * Record Type
+  , Record(Record), unRecord
+
+  -- * Dictionaries
+  , Dictionary(Dictionary), unDictionary, IsDictionary, toDictionary, noDictionary
+
+  -- * Mutation Callback
+  , MutationCallback(MutationCallback), unMutationCallback, IsMutationCallback, toMutationCallback, noMutationCallback
+
+  -- * Date
+  , Date(Date), unDate, IsDate, toDate, gTypeDate, noDate
+
+  -- * Arrays
+  , Array(Array), unArray, IsArray, toArray, gTypeArray, noArray
+  , ObjectArray(ObjectArray), unObjectArray, IsObjectArray, toObjectArray, noObjectArray
+  , ArrayBuffer(ArrayBuffer), unArrayBuffer, IsArrayBuffer, toArrayBuffer, gTypeArrayBuffer, noArrayBuffer
+  , ArrayBufferView(ArrayBufferView), unArrayBufferView, IsArrayBufferView, toArrayBufferView, noArrayBufferView
+  , Float32Array(Float32Array), unFloat32Array, IsFloat32Array, toFloat32Array, gTypeFloat32Array, noFloat32Array
+  , Float64Array(Float64Array), unFloat64Array, IsFloat64Array, toFloat64Array, gTypeFloat64Array, noFloat64Array
+  , Uint8Array(Uint8Array), unUint8Array, IsUint8Array, toUint8Array, gTypeUint8Array, noUint8Array
+  , Uint8ClampedArray(Uint8ClampedArray), unUint8ClampedArray, IsUint8ClampedArray, toUint8ClampedArray, gTypeUint8ClampedArray, noUint8ClampedArray
+  , Uint16Array(Uint16Array), unUint16Array, IsUint16Array, toUint16Array, gTypeUint16Array, noUint16Array
+  , Uint32Array(Uint32Array), unUint32Array, IsUint32Array, toUint32Array, gTypeUint32Array, noUint32Array
+  , Int8Array(Int8Array), unInt8Array, IsInt8Array, toInt8Array, gTypeInt8Array, noInt8Array
+  , Int16Array(Int16Array), unInt16Array, IsInt16Array, toInt16Array, gTypeInt16Array, noInt16Array
+  , Int32Array(Int32Array), unInt32Array, IsInt32Array, toInt32Array, gTypeInt32Array, noInt32Array
+
+  -- * Geolocation
+  , SerializedScriptValue(SerializedScriptValue), unSerializedScriptValue, IsSerializedScriptValue, toSerializedScriptValue, noSerializedScriptValue
+
+  -- * Crypto
+  , Algorithm(Algorithm), unAlgorithm, IsAlgorithm, toAlgorithm, noAlgorithm
+  , CryptoOperationData(CryptoOperationData), unCryptoOperationData, IsCryptoOperationData, toCryptoOperationData, noCryptoOperationData
+
+  -- * WebGL typedefs
+  , GLenum(..), GLboolean(..), GLbitfield(..), GLbyte(..), GLshort(..), GLint(..), GLsizei(..)
+  , GLintptr(..), GLsizeiptr(..), GLubyte(..), GLushort(..), GLuint(..), GLfloat(..), GLclampf(..)
+  , GLint64, GLuint64
+  , noGLenum, noGLboolean, noGLbitfield, noGLbyte, noGLshort, noGLint, noGLsizei
+  , noGLintptr, noGLsizeiptr, noGLubyte, noGLushort, noGLuint, noGLfloat, noGLclampf
+  , noGLint64, noGLuint64
+
+  -- * Used for better error messages
+  , HasCallStack
+
+  , GlobalThis(GlobalThis), unGlobalThis, noGlobalThis
+
+  -- * Interface types from IDL files
+
+-- AUTO GENERATION STARTS HERE
+  , AddEventListenerOptionsOrBool(AddEventListenerOptionsOrBool), unAddEventListenerOptionsOrBool, IsAddEventListenerOptionsOrBool, toAddEventListenerOptionsOrBool
+  , BinaryData(BinaryData), unBinaryData, IsBinaryData, toBinaryData
+  , BlobPart(BlobPart), unBlobPart, IsBlobPart
+  , BodyInit(BodyInit), unBodyInit, IsBodyInit
+  , BufferDataSource(BufferDataSource), unBufferDataSource, IsBufferDataSource, toBufferDataSource
+  , BufferSource(BufferSource), unBufferSource, IsBufferSource, toBufferSource
+  , CanvasImageSource(CanvasImageSource), unCanvasImageSource, IsCanvasImageSource, toCanvasImageSource
+  , CanvasStyle(CanvasStyle), unCanvasStyle, IsCanvasStyle
+  , CredentialBodyType(CredentialBodyType), unCredentialBodyType, IsCredentialBodyType, toCredentialBodyType
+  , CryptoKeyOrKeyPair(CryptoKeyOrKeyPair), unCryptoKeyOrKeyPair, IsCryptoKeyOrKeyPair, toCryptoKeyOrKeyPair
+  , EventListenerOptionsOrBool(EventListenerOptionsOrBool), unEventListenerOptionsOrBool, IsEventListenerOptionsOrBool, toEventListenerOptionsOrBool
+  , Float32List(Float32List), unFloat32List, IsFloat32List
+  , HTMLCollectionOrElement(HTMLCollectionOrElement), unHTMLCollectionOrElement, IsHTMLCollectionOrElement, toHTMLCollectionOrElement
+  , HTMLElementOrLong(HTMLElementOrLong), unHTMLElementOrLong, IsHTMLElementOrLong
+  , HTMLOptionElementOrGroup(HTMLOptionElementOrGroup), unHTMLOptionElementOrGroup, IsHTMLOptionElementOrGroup, toHTMLOptionElementOrGroup
+  , IDBCursorSource(IDBCursorSource), unIDBCursorSource, IsIDBCursorSource, toIDBCursorSource
+  , IDBKeyPath(IDBKeyPath), unIDBKeyPath, IsIDBKeyPath
+  , IDBRequestResult(IDBRequestResult), unIDBRequestResult, IsIDBRequestResult, toIDBRequestResult
+  , IDBRequestSource(IDBRequestSource), unIDBRequestSource, IsIDBRequestSource, toIDBRequestSource
+  , Int32List(Int32List), unInt32List, IsInt32List
+  , KeyData(KeyData), unKeyData, IsKeyData, toKeyData
+  , MediaProvider(MediaProvider), unMediaProvider, IsMediaProvider, toMediaProvider
+  , MediaStreamTrackOrKind(MediaStreamTrackOrKind), unMediaStreamTrackOrKind, IsMediaStreamTrackOrKind
+  , MessageEventSource(MessageEventSource), unMessageEventSource, IsMessageEventSource, toMessageEventSource
+  , NodeOrString(NodeOrString), unNodeOrString, IsNodeOrString
+  , RTCIceCandidateOrInit(RTCIceCandidateOrInit), unRTCIceCandidateOrInit, IsRTCIceCandidateOrInit, toRTCIceCandidateOrInit
+  , RadioNodeListOrElement(RadioNodeListOrElement), unRadioNodeListOrElement, IsRadioNodeListOrElement, toRadioNodeListOrElement
+  , RenderingContext(RenderingContext), unRenderingContext, IsRenderingContext, toRenderingContext
+  , SQLValue(SQLValue), unSQLValue, IsSQLValue
+  , StringOrArrayBuffer(StringOrArrayBuffer), unStringOrArrayBuffer, IsStringOrArrayBuffer
+  , StringOrBinaryData(StringOrBinaryData), unStringOrBinaryData, IsStringOrBinaryData
+  , StringOrStrings(StringOrStrings), unStringOrStrings, IsStringOrStrings
+  , TexImageSource(TexImageSource), unTexImageSource, IsTexImageSource, toTexImageSource
+  , Track(Track), unTrack, IsTrack, toTrack
+  , URLSearchParamsInit(URLSearchParamsInit), unURLSearchParamsInit, IsURLSearchParamsInit
+  , XMLHttpRequestBody(XMLHttpRequestBody), unXMLHttpRequestBody, IsXMLHttpRequestBody
+
+  , ANGLEInstancedArrays(ANGLEInstancedArrays), unANGLEInstancedArrays, noANGLEInstancedArrays, gTypeANGLEInstancedArrays
+  , AbstractWorker(AbstractWorker), unAbstractWorker, IsAbstractWorker, toAbstractWorker, noAbstractWorker, gTypeAbstractWorker
+  , Acceleration(Acceleration), unAcceleration, noAcceleration, gTypeAcceleration
+  , AddEventListenerOptions(AddEventListenerOptions), unAddEventListenerOptions, noAddEventListenerOptions, gTypeAddEventListenerOptions
+  , AesCbcCfbParams(AesCbcCfbParams), unAesCbcCfbParams, noAesCbcCfbParams, gTypeAesCbcCfbParams
+  , AesCtrParams(AesCtrParams), unAesCtrParams, noAesCtrParams, gTypeAesCtrParams
+  , AesGcmParams(AesGcmParams), unAesGcmParams, noAesGcmParams, gTypeAesGcmParams
+  , AesKeyParams(AesKeyParams), unAesKeyParams, noAesKeyParams, gTypeAesKeyParams
+  , AnalyserNode(AnalyserNode), unAnalyserNode, noAnalyserNode, gTypeAnalyserNode
+  , Animatable(Animatable), unAnimatable, IsAnimatable, toAnimatable, noAnimatable, gTypeAnimatable
+  , Animation(Animation), unAnimation, noAnimation, gTypeAnimation
+  , AnimationEffect(AnimationEffect), unAnimationEffect, IsAnimationEffect, toAnimationEffect, noAnimationEffect, gTypeAnimationEffect
+  , AnimationEvent(AnimationEvent), unAnimationEvent, noAnimationEvent, gTypeAnimationEvent
+  , AnimationEventInit(AnimationEventInit), unAnimationEventInit, noAnimationEventInit, gTypeAnimationEventInit
+  , AnimationTimeline(AnimationTimeline), unAnimationTimeline, IsAnimationTimeline, toAnimationTimeline, noAnimationTimeline, gTypeAnimationTimeline
+  , ApplePayError(ApplePayError), unApplePayError, noApplePayError, gTypeApplePayError
+  , ApplePayLineItem(ApplePayLineItem), unApplePayLineItem, noApplePayLineItem, gTypeApplePayLineItem
+  , ApplePayPayment(ApplePayPayment), unApplePayPayment, noApplePayPayment, gTypeApplePayPayment
+  , ApplePayPaymentAuthorizationResult(ApplePayPaymentAuthorizationResult), unApplePayPaymentAuthorizationResult, noApplePayPaymentAuthorizationResult, gTypeApplePayPaymentAuthorizationResult
+  , ApplePayPaymentAuthorizedEvent(ApplePayPaymentAuthorizedEvent), unApplePayPaymentAuthorizedEvent, noApplePayPaymentAuthorizedEvent, gTypeApplePayPaymentAuthorizedEvent
+  , ApplePayPaymentContact(ApplePayPaymentContact), unApplePayPaymentContact, noApplePayPaymentContact, gTypeApplePayPaymentContact
+  , ApplePayPaymentMethod(ApplePayPaymentMethod), unApplePayPaymentMethod, noApplePayPaymentMethod, gTypeApplePayPaymentMethod
+  , ApplePayPaymentMethodSelectedEvent(ApplePayPaymentMethodSelectedEvent), unApplePayPaymentMethodSelectedEvent, noApplePayPaymentMethodSelectedEvent, gTypeApplePayPaymentMethodSelectedEvent
+  , ApplePayPaymentMethodUpdate(ApplePayPaymentMethodUpdate), unApplePayPaymentMethodUpdate, noApplePayPaymentMethodUpdate, gTypeApplePayPaymentMethodUpdate
+  , ApplePayPaymentPass(ApplePayPaymentPass), unApplePayPaymentPass, noApplePayPaymentPass, gTypeApplePayPaymentPass
+  , ApplePayPaymentRequest(ApplePayPaymentRequest), unApplePayPaymentRequest, noApplePayPaymentRequest, gTypeApplePayPaymentRequest
+  , ApplePayPaymentToken(ApplePayPaymentToken), unApplePayPaymentToken, noApplePayPaymentToken, gTypeApplePayPaymentToken
+  , ApplePaySession(ApplePaySession), unApplePaySession, noApplePaySession, gTypeApplePaySession
+  , ApplePayShippingContactSelectedEvent(ApplePayShippingContactSelectedEvent), unApplePayShippingContactSelectedEvent, noApplePayShippingContactSelectedEvent, gTypeApplePayShippingContactSelectedEvent
+  , ApplePayShippingContactUpdate(ApplePayShippingContactUpdate), unApplePayShippingContactUpdate, noApplePayShippingContactUpdate, gTypeApplePayShippingContactUpdate
+  , ApplePayShippingMethod(ApplePayShippingMethod), unApplePayShippingMethod, noApplePayShippingMethod, gTypeApplePayShippingMethod
+  , ApplePayShippingMethodSelectedEvent(ApplePayShippingMethodSelectedEvent), unApplePayShippingMethodSelectedEvent, noApplePayShippingMethodSelectedEvent, gTypeApplePayShippingMethodSelectedEvent
+  , ApplePayShippingMethodUpdate(ApplePayShippingMethodUpdate), unApplePayShippingMethodUpdate, noApplePayShippingMethodUpdate, gTypeApplePayShippingMethodUpdate
+  , ApplePayValidateMerchantEvent(ApplePayValidateMerchantEvent), unApplePayValidateMerchantEvent, noApplePayValidateMerchantEvent, gTypeApplePayValidateMerchantEvent
+  , ApplicationCache(ApplicationCache), unApplicationCache, noApplicationCache, gTypeApplicationCache
+  , AssignedNodesOptions(AssignedNodesOptions), unAssignedNodesOptions, noAssignedNodesOptions, gTypeAssignedNodesOptions
+  , Attr(Attr), unAttr, noAttr, gTypeAttr
+  , AudioBuffer(AudioBuffer), unAudioBuffer, noAudioBuffer, gTypeAudioBuffer
+  , AudioBufferSourceNode(AudioBufferSourceNode), unAudioBufferSourceNode, noAudioBufferSourceNode, gTypeAudioBufferSourceNode
+  , AudioContext(AudioContext), unAudioContext, IsAudioContext, toAudioContext, noAudioContext, gTypeAudioContext
+  , AudioDestinationNode(AudioDestinationNode), unAudioDestinationNode, noAudioDestinationNode, gTypeAudioDestinationNode
+  , AudioListener(AudioListener), unAudioListener, noAudioListener, gTypeAudioListener
+  , AudioNode(AudioNode), unAudioNode, IsAudioNode, toAudioNode, noAudioNode, gTypeAudioNode
+  , AudioParam(AudioParam), unAudioParam, noAudioParam, gTypeAudioParam
+  , AudioProcessingEvent(AudioProcessingEvent), unAudioProcessingEvent, noAudioProcessingEvent, gTypeAudioProcessingEvent
+  , AudioTrack(AudioTrack), unAudioTrack, noAudioTrack, gTypeAudioTrack
+  , AudioTrackList(AudioTrackList), unAudioTrackList, noAudioTrackList, gTypeAudioTrackList
+  , AutocompleteErrorEvent(AutocompleteErrorEvent), unAutocompleteErrorEvent, noAutocompleteErrorEvent, gTypeAutocompleteErrorEvent
+  , AutocompleteErrorEventInit(AutocompleteErrorEventInit), unAutocompleteErrorEventInit, noAutocompleteErrorEventInit, gTypeAutocompleteErrorEventInit
+  , BarProp(BarProp), unBarProp, noBarProp, gTypeBarProp
+  , BasicCredential(BasicCredential), unBasicCredential, IsBasicCredential, toBasicCredential, noBasicCredential, gTypeBasicCredential
+  , BeforeLoadEvent(BeforeLoadEvent), unBeforeLoadEvent, noBeforeLoadEvent, gTypeBeforeLoadEvent
+  , BeforeLoadEventInit(BeforeLoadEventInit), unBeforeLoadEventInit, noBeforeLoadEventInit, gTypeBeforeLoadEventInit
+  , BeforeUnloadEvent(BeforeUnloadEvent), unBeforeUnloadEvent, noBeforeUnloadEvent, gTypeBeforeUnloadEvent
+  , BiquadFilterNode(BiquadFilterNode), unBiquadFilterNode, noBiquadFilterNode, gTypeBiquadFilterNode
+  , Blob(Blob), unBlob, IsBlob, toBlob, noBlob, gTypeBlob
+  , BlobPropertyBag(BlobPropertyBag), unBlobPropertyBag, IsBlobPropertyBag, toBlobPropertyBag, noBlobPropertyBag, gTypeBlobPropertyBag
+  , Body(Body), unBody, IsBody, toBody, noBody, gTypeBody
+  , ByteLengthQueuingStrategy(ByteLengthQueuingStrategy), unByteLengthQueuingStrategy, noByteLengthQueuingStrategy, gTypeByteLengthQueuingStrategy
+  , CDATASection(CDATASection), unCDATASection, noCDATASection, gTypeCDATASection
+  , CSS(CSS), unCSS, noCSS, gTypeCSS
+  , CSSFontFaceLoadEvent(CSSFontFaceLoadEvent), unCSSFontFaceLoadEvent, noCSSFontFaceLoadEvent, gTypeCSSFontFaceLoadEvent
+  , CSSFontFaceLoadEventInit(CSSFontFaceLoadEventInit), unCSSFontFaceLoadEventInit, noCSSFontFaceLoadEventInit, gTypeCSSFontFaceLoadEventInit
+  , CSSFontFaceRule(CSSFontFaceRule), unCSSFontFaceRule, noCSSFontFaceRule, gTypeCSSFontFaceRule
+  , CSSImportRule(CSSImportRule), unCSSImportRule, noCSSImportRule, gTypeCSSImportRule
+  , CSSKeyframeRule(CSSKeyframeRule), unCSSKeyframeRule, noCSSKeyframeRule, gTypeCSSKeyframeRule
+  , CSSKeyframesRule(CSSKeyframesRule), unCSSKeyframesRule, noCSSKeyframesRule, gTypeCSSKeyframesRule
+  , CSSMediaRule(CSSMediaRule), unCSSMediaRule, noCSSMediaRule, gTypeCSSMediaRule
+  , CSSNamespaceRule(CSSNamespaceRule), unCSSNamespaceRule, noCSSNamespaceRule, gTypeCSSNamespaceRule
+  , CSSPageRule(CSSPageRule), unCSSPageRule, noCSSPageRule, gTypeCSSPageRule
+  , CSSPrimitiveValue(CSSPrimitiveValue), unCSSPrimitiveValue, noCSSPrimitiveValue, gTypeCSSPrimitiveValue
+  , CSSRule(CSSRule), unCSSRule, IsCSSRule, toCSSRule, noCSSRule, gTypeCSSRule
+  , CSSRuleList(CSSRuleList), unCSSRuleList, noCSSRuleList, gTypeCSSRuleList
+  , CSSStyleDeclaration(CSSStyleDeclaration), unCSSStyleDeclaration, noCSSStyleDeclaration, gTypeCSSStyleDeclaration
+  , CSSStyleRule(CSSStyleRule), unCSSStyleRule, noCSSStyleRule, gTypeCSSStyleRule
+  , CSSStyleSheet(CSSStyleSheet), unCSSStyleSheet, noCSSStyleSheet, gTypeCSSStyleSheet
+  , CSSSupportsRule(CSSSupportsRule), unCSSSupportsRule, noCSSSupportsRule, gTypeCSSSupportsRule
+  , CSSUnknownRule(CSSUnknownRule), unCSSUnknownRule, noCSSUnknownRule, gTypeCSSUnknownRule
+  , CSSValue(CSSValue), unCSSValue, IsCSSValue, toCSSValue, noCSSValue, gTypeCSSValue
+  , CSSValueList(CSSValueList), unCSSValueList, noCSSValueList, gTypeCSSValueList
+  , CanvasCaptureMediaStreamTrack(CanvasCaptureMediaStreamTrack), unCanvasCaptureMediaStreamTrack, noCanvasCaptureMediaStreamTrack, gTypeCanvasCaptureMediaStreamTrack
+  , CanvasGradient(CanvasGradient), unCanvasGradient, noCanvasGradient, gTypeCanvasGradient
+  , CanvasPath(CanvasPath), unCanvasPath, IsCanvasPath, toCanvasPath, noCanvasPath, gTypeCanvasPath
+  , CanvasPattern(CanvasPattern), unCanvasPattern, noCanvasPattern, gTypeCanvasPattern
+  , CanvasProxy(CanvasProxy), unCanvasProxy, noCanvasProxy, gTypeCanvasProxy
+  , CanvasRenderingContext2D(CanvasRenderingContext2D), unCanvasRenderingContext2D, noCanvasRenderingContext2D, gTypeCanvasRenderingContext2D
+  , ChannelMergerNode(ChannelMergerNode), unChannelMergerNode, noChannelMergerNode, gTypeChannelMergerNode
+  , ChannelSplitterNode(ChannelSplitterNode), unChannelSplitterNode, noChannelSplitterNode, gTypeChannelSplitterNode
+  , CharacterData(CharacterData), unCharacterData, IsCharacterData, toCharacterData, noCharacterData, gTypeCharacterData
+  , ChildNode(ChildNode), unChildNode, IsChildNode, toChildNode, noChildNode, gTypeChildNode
+  , ClipboardEvent(ClipboardEvent), unClipboardEvent, noClipboardEvent, gTypeClipboardEvent
+  , ClipboardEventInit(ClipboardEventInit), unClipboardEventInit, noClipboardEventInit, gTypeClipboardEventInit
+  , CloseEvent(CloseEvent), unCloseEvent, noCloseEvent, gTypeCloseEvent
+  , CloseEventInit(CloseEventInit), unCloseEventInit, noCloseEventInit, gTypeCloseEventInit
+  , CommandLineAPIHost(CommandLineAPIHost), unCommandLineAPIHost, noCommandLineAPIHost, gTypeCommandLineAPIHost
+  , Comment(Comment), unComment, noComment, gTypeComment
+  , CompositionEvent(CompositionEvent), unCompositionEvent, noCompositionEvent, gTypeCompositionEvent
+  , CompositionEventInit(CompositionEventInit), unCompositionEventInit, noCompositionEventInit, gTypeCompositionEventInit
+  , ConstrainBooleanParameters(ConstrainBooleanParameters), unConstrainBooleanParameters, noConstrainBooleanParameters, gTypeConstrainBooleanParameters
+  , ConstrainDOMStringParameters(ConstrainDOMStringParameters), unConstrainDOMStringParameters, noConstrainDOMStringParameters, gTypeConstrainDOMStringParameters
+  , ConstrainDoubleRange(ConstrainDoubleRange), unConstrainDoubleRange, noConstrainDoubleRange, gTypeConstrainDoubleRange
+  , ConstrainLongRange(ConstrainLongRange), unConstrainLongRange, noConstrainLongRange, gTypeConstrainLongRange
+  , ConvolverNode(ConvolverNode), unConvolverNode, noConvolverNode, gTypeConvolverNode
+  , Coordinates(Coordinates), unCoordinates, noCoordinates, gTypeCoordinates
+  , CountQueuingStrategy(CountQueuingStrategy), unCountQueuingStrategy, noCountQueuingStrategy, gTypeCountQueuingStrategy
+  , Counter(Counter), unCounter, noCounter, gTypeCounter
+  , CredentialData(CredentialData), unCredentialData, IsCredentialData, toCredentialData, noCredentialData, gTypeCredentialData
+  , Crypto(Crypto), unCrypto, noCrypto, gTypeCrypto
+  , CryptoAlgorithmParameters(CryptoAlgorithmParameters), unCryptoAlgorithmParameters, IsCryptoAlgorithmParameters, toCryptoAlgorithmParameters, noCryptoAlgorithmParameters, gTypeCryptoAlgorithmParameters
+  , CryptoKey(CryptoKey), unCryptoKey, noCryptoKey, gTypeCryptoKey
+  , CryptoKeyPair(CryptoKeyPair), unCryptoKeyPair, noCryptoKeyPair, gTypeCryptoKeyPair
+  , CustomElementRegistry(CustomElementRegistry), unCustomElementRegistry, noCustomElementRegistry, gTypeCustomElementRegistry
+  , CustomEvent(CustomEvent), unCustomEvent, noCustomEvent, gTypeCustomEvent
+  , CustomEventInit(CustomEventInit), unCustomEventInit, noCustomEventInit, gTypeCustomEventInit
+  , DOMError(DOMError), unDOMError, IsDOMError, toDOMError, noDOMError, gTypeDOMError
+  , DOMException(DOMException), unDOMException, noDOMException, gTypeDOMException
+  , DOMImplementation(DOMImplementation), unDOMImplementation, noDOMImplementation, gTypeDOMImplementation
+  , DOMNamedFlowCollection(DOMNamedFlowCollection), unDOMNamedFlowCollection, noDOMNamedFlowCollection, gTypeDOMNamedFlowCollection
+  , DOMParser(DOMParser), unDOMParser, noDOMParser, gTypeDOMParser
+  , DOMPoint(DOMPoint), unDOMPoint, noDOMPoint, gTypeDOMPoint
+  , DOMPointInit(DOMPointInit), unDOMPointInit, noDOMPointInit, gTypeDOMPointInit
+  , DOMPointReadOnly(DOMPointReadOnly), unDOMPointReadOnly, IsDOMPointReadOnly, toDOMPointReadOnly, noDOMPointReadOnly, gTypeDOMPointReadOnly
+  , DOMRect(DOMRect), unDOMRect, noDOMRect, gTypeDOMRect
+  , DOMRectInit(DOMRectInit), unDOMRectInit, noDOMRectInit, gTypeDOMRectInit
+  , DOMRectReadOnly(DOMRectReadOnly), unDOMRectReadOnly, IsDOMRectReadOnly, toDOMRectReadOnly, noDOMRectReadOnly, gTypeDOMRectReadOnly
+  , DOMStringList(DOMStringList), unDOMStringList, noDOMStringList, gTypeDOMStringList
+  , DOMStringMap(DOMStringMap), unDOMStringMap, noDOMStringMap, gTypeDOMStringMap
+  , DOMTokenList(DOMTokenList), unDOMTokenList, noDOMTokenList, gTypeDOMTokenList
+  , DataCue(DataCue), unDataCue, noDataCue, gTypeDataCue
+  , DataTransfer(DataTransfer), unDataTransfer, noDataTransfer, gTypeDataTransfer
+  , DataTransferItem(DataTransferItem), unDataTransferItem, noDataTransferItem, gTypeDataTransferItem
+  , DataTransferItemList(DataTransferItemList), unDataTransferItemList, noDataTransferItemList, gTypeDataTransferItemList
+  , Database(Database), unDatabase, noDatabase, gTypeDatabase
+  , DedicatedWorkerGlobalScope(DedicatedWorkerGlobalScope), unDedicatedWorkerGlobalScope, noDedicatedWorkerGlobalScope, gTypeDedicatedWorkerGlobalScope
+  , DelayNode(DelayNode), unDelayNode, noDelayNode, gTypeDelayNode
+  , DeviceMotionEvent(DeviceMotionEvent), unDeviceMotionEvent, noDeviceMotionEvent, gTypeDeviceMotionEvent
+  , DeviceOrientationEvent(DeviceOrientationEvent), unDeviceOrientationEvent, noDeviceOrientationEvent, gTypeDeviceOrientationEvent
+  , DeviceProximityEvent(DeviceProximityEvent), unDeviceProximityEvent, noDeviceProximityEvent, gTypeDeviceProximityEvent
+  , DeviceProximityEventInit(DeviceProximityEventInit), unDeviceProximityEventInit, noDeviceProximityEventInit, gTypeDeviceProximityEventInit
+  , Document(Document), unDocument, IsDocument, toDocument, noDocument, gTypeDocument
+  , DocumentAndElementEventHandlers(DocumentAndElementEventHandlers), unDocumentAndElementEventHandlers, IsDocumentAndElementEventHandlers, toDocumentAndElementEventHandlers, noDocumentAndElementEventHandlers, gTypeDocumentAndElementEventHandlers
+  , DocumentFragment(DocumentFragment), unDocumentFragment, IsDocumentFragment, toDocumentFragment, noDocumentFragment, gTypeDocumentFragment
+  , DocumentOrShadowRoot(DocumentOrShadowRoot), unDocumentOrShadowRoot, IsDocumentOrShadowRoot, toDocumentOrShadowRoot, noDocumentOrShadowRoot, gTypeDocumentOrShadowRoot
+  , DocumentTimeline(DocumentTimeline), unDocumentTimeline, noDocumentTimeline, gTypeDocumentTimeline
+  , DocumentType(DocumentType), unDocumentType, noDocumentType, gTypeDocumentType
+  , DoubleRange(DoubleRange), unDoubleRange, IsDoubleRange, toDoubleRange, noDoubleRange, gTypeDoubleRange
+  , DynamicsCompressorNode(DynamicsCompressorNode), unDynamicsCompressorNode, noDynamicsCompressorNode, gTypeDynamicsCompressorNode
+  , EXTBlendMinMax(EXTBlendMinMax), unEXTBlendMinMax, noEXTBlendMinMax, gTypeEXTBlendMinMax
+  , EXTFragDepth(EXTFragDepth), unEXTFragDepth, noEXTFragDepth, gTypeEXTFragDepth
+  , EXTShaderTextureLOD(EXTShaderTextureLOD), unEXTShaderTextureLOD, noEXTShaderTextureLOD, gTypeEXTShaderTextureLOD
+  , EXTTextureFilterAnisotropic(EXTTextureFilterAnisotropic), unEXTTextureFilterAnisotropic, noEXTTextureFilterAnisotropic, gTypeEXTTextureFilterAnisotropic
+  , EXTsRGB(EXTsRGB), unEXTsRGB, noEXTsRGB, gTypeEXTsRGB
+  , EcKeyParams(EcKeyParams), unEcKeyParams, noEcKeyParams, gTypeEcKeyParams
+  , EcdhKeyDeriveParams(EcdhKeyDeriveParams), unEcdhKeyDeriveParams, noEcdhKeyDeriveParams, gTypeEcdhKeyDeriveParams
+  , EcdsaParams(EcdsaParams), unEcdsaParams, noEcdsaParams, gTypeEcdsaParams
+  , Element(Element), unElement, IsElement, toElement, noElement, gTypeElement
+  , ElementCSSInlineStyle(ElementCSSInlineStyle), unElementCSSInlineStyle, IsElementCSSInlineStyle, toElementCSSInlineStyle, noElementCSSInlineStyle, gTypeElementCSSInlineStyle
+  , ErrorEvent(ErrorEvent), unErrorEvent, noErrorEvent, gTypeErrorEvent
+  , ErrorEventInit(ErrorEventInit), unErrorEventInit, noErrorEventInit, gTypeErrorEventInit
+  , Event(Event), unEvent, IsEvent, toEvent, noEvent, gTypeEvent
+  , EventInit(EventInit), unEventInit, IsEventInit, toEventInit, noEventInit, gTypeEventInit
+  , EventListener(EventListener), unEventListener, noEventListener, gTypeEventListener
+  , EventListenerOptions(EventListenerOptions), unEventListenerOptions, IsEventListenerOptions, toEventListenerOptions, noEventListenerOptions, gTypeEventListenerOptions
+  , EventModifierInit(EventModifierInit), unEventModifierInit, IsEventModifierInit, toEventModifierInit, noEventModifierInit, gTypeEventModifierInit
+  , EventSource(EventSource), unEventSource, noEventSource, gTypeEventSource
+  , EventSourceInit(EventSourceInit), unEventSourceInit, noEventSourceInit, gTypeEventSourceInit
+  , EventTarget(EventTarget), unEventTarget, IsEventTarget, toEventTarget, noEventTarget, gTypeEventTarget
+  , File(File), unFile, noFile, gTypeFile
+  , FileError(FileError), unFileError, noFileError, gTypeFileError
+  , FileException(FileException), unFileException, noFileException, gTypeFileException
+  , FileList(FileList), unFileList, noFileList, gTypeFileList
+  , FilePropertyBag(FilePropertyBag), unFilePropertyBag, noFilePropertyBag, gTypeFilePropertyBag
+  , FileReader(FileReader), unFileReader, noFileReader, gTypeFileReader
+  , FileReaderSync(FileReaderSync), unFileReaderSync, noFileReaderSync, gTypeFileReaderSync
+  , FocusEvent(FocusEvent), unFocusEvent, noFocusEvent, gTypeFocusEvent
+  , FocusEventInit(FocusEventInit), unFocusEventInit, noFocusEventInit, gTypeFocusEventInit
+  , FontFace(FontFace), unFontFace, noFontFace, gTypeFontFace
+  , FontFaceDescriptors(FontFaceDescriptors), unFontFaceDescriptors, noFontFaceDescriptors, gTypeFontFaceDescriptors
+  , FontFaceSet(FontFaceSet), unFontFaceSet, noFontFaceSet, gTypeFontFaceSet
+  , FormData(FormData), unFormData, noFormData, gTypeFormData
+  , GainNode(GainNode), unGainNode, noGainNode, gTypeGainNode
+  , Gamepad(Gamepad), unGamepad, noGamepad, gTypeGamepad
+  , GamepadButton(GamepadButton), unGamepadButton, noGamepadButton, gTypeGamepadButton
+  , GamepadEvent(GamepadEvent), unGamepadEvent, noGamepadEvent, gTypeGamepadEvent
+  , GamepadEventInit(GamepadEventInit), unGamepadEventInit, noGamepadEventInit, gTypeGamepadEventInit
+  , Geolocation(Geolocation), unGeolocation, noGeolocation, gTypeGeolocation
+  , Geoposition(Geoposition), unGeoposition, noGeoposition, gTypeGeoposition
+  , GetRootNodeOptions(GetRootNodeOptions), unGetRootNodeOptions, noGetRootNodeOptions, gTypeGetRootNodeOptions
+  , GlobalCrypto(GlobalCrypto), unGlobalCrypto, IsGlobalCrypto, toGlobalCrypto, noGlobalCrypto, gTypeGlobalCrypto
+  , GlobalEventHandlers(GlobalEventHandlers), unGlobalEventHandlers, IsGlobalEventHandlers, toGlobalEventHandlers, noGlobalEventHandlers, gTypeGlobalEventHandlers
+  , GlobalPerformance(GlobalPerformance), unGlobalPerformance, IsGlobalPerformance, toGlobalPerformance, noGlobalPerformance, gTypeGlobalPerformance
+  , HTMLAllCollection(HTMLAllCollection), unHTMLAllCollection, noHTMLAllCollection, gTypeHTMLAllCollection
+  , HTMLAnchorElement(HTMLAnchorElement), unHTMLAnchorElement, noHTMLAnchorElement, gTypeHTMLAnchorElement
+  , HTMLAppletElement(HTMLAppletElement), unHTMLAppletElement, noHTMLAppletElement, gTypeHTMLAppletElement
+  , HTMLAreaElement(HTMLAreaElement), unHTMLAreaElement, noHTMLAreaElement, gTypeHTMLAreaElement
+  , HTMLAttachmentElement(HTMLAttachmentElement), unHTMLAttachmentElement, noHTMLAttachmentElement, gTypeHTMLAttachmentElement
+  , HTMLAudioElement(HTMLAudioElement), unHTMLAudioElement, noHTMLAudioElement, gTypeHTMLAudioElement
+  , HTMLBRElement(HTMLBRElement), unHTMLBRElement, noHTMLBRElement, gTypeHTMLBRElement
+  , HTMLBaseElement(HTMLBaseElement), unHTMLBaseElement, noHTMLBaseElement, gTypeHTMLBaseElement
+  , HTMLBodyElement(HTMLBodyElement), unHTMLBodyElement, noHTMLBodyElement, gTypeHTMLBodyElement
+  , HTMLButtonElement(HTMLButtonElement), unHTMLButtonElement, noHTMLButtonElement, gTypeHTMLButtonElement
+  , HTMLCanvasElement(HTMLCanvasElement), unHTMLCanvasElement, noHTMLCanvasElement, gTypeHTMLCanvasElement
+  , HTMLCollection(HTMLCollection), unHTMLCollection, IsHTMLCollection, toHTMLCollection, noHTMLCollection, gTypeHTMLCollection
+  , HTMLDListElement(HTMLDListElement), unHTMLDListElement, noHTMLDListElement, gTypeHTMLDListElement
+  , HTMLDataElement(HTMLDataElement), unHTMLDataElement, noHTMLDataElement, gTypeHTMLDataElement
+  , HTMLDataListElement(HTMLDataListElement), unHTMLDataListElement, noHTMLDataListElement, gTypeHTMLDataListElement
+  , HTMLDetailsElement(HTMLDetailsElement), unHTMLDetailsElement, noHTMLDetailsElement, gTypeHTMLDetailsElement
+  , HTMLDirectoryElement(HTMLDirectoryElement), unHTMLDirectoryElement, noHTMLDirectoryElement, gTypeHTMLDirectoryElement
+  , HTMLDivElement(HTMLDivElement), unHTMLDivElement, noHTMLDivElement, gTypeHTMLDivElement
+  , HTMLDocument(HTMLDocument), unHTMLDocument, noHTMLDocument, gTypeHTMLDocument
+  , HTMLElement(HTMLElement), unHTMLElement, IsHTMLElement, toHTMLElement, noHTMLElement, gTypeHTMLElement
+  , HTMLEmbedElement(HTMLEmbedElement), unHTMLEmbedElement, noHTMLEmbedElement, gTypeHTMLEmbedElement
+  , HTMLFieldSetElement(HTMLFieldSetElement), unHTMLFieldSetElement, noHTMLFieldSetElement, gTypeHTMLFieldSetElement
+  , HTMLFontElement(HTMLFontElement), unHTMLFontElement, noHTMLFontElement, gTypeHTMLFontElement
+  , HTMLFormControlsCollection(HTMLFormControlsCollection), unHTMLFormControlsCollection, noHTMLFormControlsCollection, gTypeHTMLFormControlsCollection
+  , HTMLFormElement(HTMLFormElement), unHTMLFormElement, noHTMLFormElement, gTypeHTMLFormElement
+  , HTMLFrameElement(HTMLFrameElement), unHTMLFrameElement, noHTMLFrameElement, gTypeHTMLFrameElement
+  , HTMLFrameSetElement(HTMLFrameSetElement), unHTMLFrameSetElement, noHTMLFrameSetElement, gTypeHTMLFrameSetElement
+  , HTMLHRElement(HTMLHRElement), unHTMLHRElement, noHTMLHRElement, gTypeHTMLHRElement
+  , HTMLHeadElement(HTMLHeadElement), unHTMLHeadElement, noHTMLHeadElement, gTypeHTMLHeadElement
+  , HTMLHeadingElement(HTMLHeadingElement), unHTMLHeadingElement, noHTMLHeadingElement, gTypeHTMLHeadingElement
+  , HTMLHtmlElement(HTMLHtmlElement), unHTMLHtmlElement, noHTMLHtmlElement, gTypeHTMLHtmlElement
+  , HTMLHyperlinkElementUtils(HTMLHyperlinkElementUtils), unHTMLHyperlinkElementUtils, IsHTMLHyperlinkElementUtils, toHTMLHyperlinkElementUtils, noHTMLHyperlinkElementUtils, gTypeHTMLHyperlinkElementUtils
+  , HTMLIFrameElement(HTMLIFrameElement), unHTMLIFrameElement, noHTMLIFrameElement, gTypeHTMLIFrameElement
+  , HTMLImageElement(HTMLImageElement), unHTMLImageElement, noHTMLImageElement, gTypeHTMLImageElement
+  , HTMLInputElement(HTMLInputElement), unHTMLInputElement, noHTMLInputElement, gTypeHTMLInputElement
+  , HTMLKeygenElement(HTMLKeygenElement), unHTMLKeygenElement, noHTMLKeygenElement, gTypeHTMLKeygenElement
+  , HTMLLIElement(HTMLLIElement), unHTMLLIElement, noHTMLLIElement, gTypeHTMLLIElement
+  , HTMLLabelElement(HTMLLabelElement), unHTMLLabelElement, noHTMLLabelElement, gTypeHTMLLabelElement
+  , HTMLLegendElement(HTMLLegendElement), unHTMLLegendElement, noHTMLLegendElement, gTypeHTMLLegendElement
+  , HTMLLinkElement(HTMLLinkElement), unHTMLLinkElement, noHTMLLinkElement, gTypeHTMLLinkElement
+  , HTMLMapElement(HTMLMapElement), unHTMLMapElement, noHTMLMapElement, gTypeHTMLMapElement
+  , HTMLMarqueeElement(HTMLMarqueeElement), unHTMLMarqueeElement, noHTMLMarqueeElement, gTypeHTMLMarqueeElement
+  , HTMLMediaElement(HTMLMediaElement), unHTMLMediaElement, IsHTMLMediaElement, toHTMLMediaElement, noHTMLMediaElement, gTypeHTMLMediaElement
+  , HTMLMenuElement(HTMLMenuElement), unHTMLMenuElement, noHTMLMenuElement, gTypeHTMLMenuElement
+  , HTMLMetaElement(HTMLMetaElement), unHTMLMetaElement, noHTMLMetaElement, gTypeHTMLMetaElement
+  , HTMLMeterElement(HTMLMeterElement), unHTMLMeterElement, noHTMLMeterElement, gTypeHTMLMeterElement
+  , HTMLModElement(HTMLModElement), unHTMLModElement, noHTMLModElement, gTypeHTMLModElement
+  , HTMLOListElement(HTMLOListElement), unHTMLOListElement, noHTMLOListElement, gTypeHTMLOListElement
+  , HTMLObjectElement(HTMLObjectElement), unHTMLObjectElement, noHTMLObjectElement, gTypeHTMLObjectElement
+  , HTMLOptGroupElement(HTMLOptGroupElement), unHTMLOptGroupElement, noHTMLOptGroupElement, gTypeHTMLOptGroupElement
+  , HTMLOptionElement(HTMLOptionElement), unHTMLOptionElement, noHTMLOptionElement, gTypeHTMLOptionElement
+  , HTMLOptionsCollection(HTMLOptionsCollection), unHTMLOptionsCollection, noHTMLOptionsCollection, gTypeHTMLOptionsCollection
+  , HTMLOutputElement(HTMLOutputElement), unHTMLOutputElement, noHTMLOutputElement, gTypeHTMLOutputElement
+  , HTMLParagraphElement(HTMLParagraphElement), unHTMLParagraphElement, noHTMLParagraphElement, gTypeHTMLParagraphElement
+  , HTMLParamElement(HTMLParamElement), unHTMLParamElement, noHTMLParamElement, gTypeHTMLParamElement
+  , HTMLPictureElement(HTMLPictureElement), unHTMLPictureElement, noHTMLPictureElement, gTypeHTMLPictureElement
+  , HTMLPreElement(HTMLPreElement), unHTMLPreElement, noHTMLPreElement, gTypeHTMLPreElement
+  , HTMLProgressElement(HTMLProgressElement), unHTMLProgressElement, noHTMLProgressElement, gTypeHTMLProgressElement
+  , HTMLQuoteElement(HTMLQuoteElement), unHTMLQuoteElement, noHTMLQuoteElement, gTypeHTMLQuoteElement
+  , HTMLScriptElement(HTMLScriptElement), unHTMLScriptElement, noHTMLScriptElement, gTypeHTMLScriptElement
+  , HTMLSelectElement(HTMLSelectElement), unHTMLSelectElement, noHTMLSelectElement, gTypeHTMLSelectElement
+  , HTMLSlotElement(HTMLSlotElement), unHTMLSlotElement, noHTMLSlotElement, gTypeHTMLSlotElement
+  , HTMLSourceElement(HTMLSourceElement), unHTMLSourceElement, noHTMLSourceElement, gTypeHTMLSourceElement
+  , HTMLSpanElement(HTMLSpanElement), unHTMLSpanElement, noHTMLSpanElement, gTypeHTMLSpanElement
+  , HTMLStyleElement(HTMLStyleElement), unHTMLStyleElement, noHTMLStyleElement, gTypeHTMLStyleElement
+  , HTMLTableCaptionElement(HTMLTableCaptionElement), unHTMLTableCaptionElement, noHTMLTableCaptionElement, gTypeHTMLTableCaptionElement
+  , HTMLTableCellElement(HTMLTableCellElement), unHTMLTableCellElement, noHTMLTableCellElement, gTypeHTMLTableCellElement
+  , HTMLTableColElement(HTMLTableColElement), unHTMLTableColElement, noHTMLTableColElement, gTypeHTMLTableColElement
+  , HTMLTableElement(HTMLTableElement), unHTMLTableElement, noHTMLTableElement, gTypeHTMLTableElement
+  , HTMLTableRowElement(HTMLTableRowElement), unHTMLTableRowElement, noHTMLTableRowElement, gTypeHTMLTableRowElement
+  , HTMLTableSectionElement(HTMLTableSectionElement), unHTMLTableSectionElement, noHTMLTableSectionElement, gTypeHTMLTableSectionElement
+  , HTMLTemplateElement(HTMLTemplateElement), unHTMLTemplateElement, noHTMLTemplateElement, gTypeHTMLTemplateElement
+  , HTMLTextAreaElement(HTMLTextAreaElement), unHTMLTextAreaElement, noHTMLTextAreaElement, gTypeHTMLTextAreaElement
+  , HTMLTimeElement(HTMLTimeElement), unHTMLTimeElement, noHTMLTimeElement, gTypeHTMLTimeElement
+  , HTMLTitleElement(HTMLTitleElement), unHTMLTitleElement, noHTMLTitleElement, gTypeHTMLTitleElement
+  , HTMLTrackElement(HTMLTrackElement), unHTMLTrackElement, noHTMLTrackElement, gTypeHTMLTrackElement
+  , HTMLUListElement(HTMLUListElement), unHTMLUListElement, noHTMLUListElement, gTypeHTMLUListElement
+  , HTMLUnknownElement(HTMLUnknownElement), unHTMLUnknownElement, noHTMLUnknownElement, gTypeHTMLUnknownElement
+  , HTMLVideoElement(HTMLVideoElement), unHTMLVideoElement, noHTMLVideoElement, gTypeHTMLVideoElement
+  , HashChangeEvent(HashChangeEvent), unHashChangeEvent, noHashChangeEvent, gTypeHashChangeEvent
+  , HashChangeEventInit(HashChangeEventInit), unHashChangeEventInit, noHashChangeEventInit, gTypeHashChangeEventInit
+  , Headers(Headers), unHeaders, noHeaders, gTypeHeaders
+  , History(History), unHistory, noHistory, gTypeHistory
+  , HkdfParams(HkdfParams), unHkdfParams, noHkdfParams, gTypeHkdfParams
+  , HmacKeyParams(HmacKeyParams), unHmacKeyParams, noHmacKeyParams, gTypeHmacKeyParams
+  , IDBCursor(IDBCursor), unIDBCursor, IsIDBCursor, toIDBCursor, noIDBCursor, gTypeIDBCursor
+  , IDBCursorWithValue(IDBCursorWithValue), unIDBCursorWithValue, noIDBCursorWithValue, gTypeIDBCursorWithValue
+  , IDBDatabase(IDBDatabase), unIDBDatabase, noIDBDatabase, gTypeIDBDatabase
+  , IDBFactory(IDBFactory), unIDBFactory, noIDBFactory, gTypeIDBFactory
+  , IDBIndex(IDBIndex), unIDBIndex, noIDBIndex, gTypeIDBIndex
+  , IDBIndexParameters(IDBIndexParameters), unIDBIndexParameters, noIDBIndexParameters, gTypeIDBIndexParameters
+  , IDBKeyRange(IDBKeyRange), unIDBKeyRange, noIDBKeyRange, gTypeIDBKeyRange
+  , IDBObjectStore(IDBObjectStore), unIDBObjectStore, noIDBObjectStore, gTypeIDBObjectStore
+  , IDBObjectStoreParameters(IDBObjectStoreParameters), unIDBObjectStoreParameters, noIDBObjectStoreParameters, gTypeIDBObjectStoreParameters
+  , IDBOpenDBRequest(IDBOpenDBRequest), unIDBOpenDBRequest, noIDBOpenDBRequest, gTypeIDBOpenDBRequest
+  , IDBRequest(IDBRequest), unIDBRequest, IsIDBRequest, toIDBRequest, noIDBRequest, gTypeIDBRequest
+  , IDBTransaction(IDBTransaction), unIDBTransaction, noIDBTransaction, gTypeIDBTransaction
+  , IDBVersionChangeEvent(IDBVersionChangeEvent), unIDBVersionChangeEvent, noIDBVersionChangeEvent, gTypeIDBVersionChangeEvent
+  , IDBVersionChangeEventInit(IDBVersionChangeEventInit), unIDBVersionChangeEventInit, noIDBVersionChangeEventInit, gTypeIDBVersionChangeEventInit
+  , ImageData(ImageData), unImageData, noImageData, gTypeImageData
+  , InputEvent(InputEvent), unInputEvent, noInputEvent, gTypeInputEvent
+  , InputEventInit(InputEventInit), unInputEventInit, noInputEventInit, gTypeInputEventInit
+  , InspectorFrontendHost(InspectorFrontendHost), unInspectorFrontendHost, noInspectorFrontendHost, gTypeInspectorFrontendHost
+  , IntersectionObserver(IntersectionObserver), unIntersectionObserver, noIntersectionObserver, gTypeIntersectionObserver
+  , IntersectionObserverEntry(IntersectionObserverEntry), unIntersectionObserverEntry, noIntersectionObserverEntry, gTypeIntersectionObserverEntry
+  , IntersectionObserverEntryInit(IntersectionObserverEntryInit), unIntersectionObserverEntryInit, noIntersectionObserverEntryInit, gTypeIntersectionObserverEntryInit
+  , IntersectionObserverInit(IntersectionObserverInit), unIntersectionObserverInit, noIntersectionObserverInit, gTypeIntersectionObserverInit
+  , JsonWebKey(JsonWebKey), unJsonWebKey, noJsonWebKey, gTypeJsonWebKey
+  , KeyboardEvent(KeyboardEvent), unKeyboardEvent, noKeyboardEvent, gTypeKeyboardEvent
+  , KeyboardEventInit(KeyboardEventInit), unKeyboardEventInit, noKeyboardEventInit, gTypeKeyboardEventInit
+  , KeyframeEffect(KeyframeEffect), unKeyframeEffect, noKeyframeEffect, gTypeKeyframeEffect
+  , Location(Location), unLocation, noLocation, gTypeLocation
+  , LongRange(LongRange), unLongRange, IsLongRange, toLongRange, noLongRange, gTypeLongRange
+  , MediaController(MediaController), unMediaController, noMediaController, gTypeMediaController
+  , MediaControlsHost(MediaControlsHost), unMediaControlsHost, noMediaControlsHost, gTypeMediaControlsHost
+  , MediaDeviceInfo(MediaDeviceInfo), unMediaDeviceInfo, noMediaDeviceInfo, gTypeMediaDeviceInfo
+  , MediaDevices(MediaDevices), unMediaDevices, noMediaDevices, gTypeMediaDevices
+  , MediaElementAudioSourceNode(MediaElementAudioSourceNode), unMediaElementAudioSourceNode, noMediaElementAudioSourceNode, gTypeMediaElementAudioSourceNode
+  , MediaEncryptedEvent(MediaEncryptedEvent), unMediaEncryptedEvent, noMediaEncryptedEvent, gTypeMediaEncryptedEvent
+  , MediaEncryptedEventInit(MediaEncryptedEventInit), unMediaEncryptedEventInit, noMediaEncryptedEventInit, gTypeMediaEncryptedEventInit
+  , MediaError(MediaError), unMediaError, noMediaError, gTypeMediaError
+  , MediaKeyMessageEvent(MediaKeyMessageEvent), unMediaKeyMessageEvent, noMediaKeyMessageEvent, gTypeMediaKeyMessageEvent
+  , MediaKeyMessageEventInit(MediaKeyMessageEventInit), unMediaKeyMessageEventInit, noMediaKeyMessageEventInit, gTypeMediaKeyMessageEventInit
+  , MediaKeySession(MediaKeySession), unMediaKeySession, noMediaKeySession, gTypeMediaKeySession
+  , MediaKeyStatusMap(MediaKeyStatusMap), unMediaKeyStatusMap, noMediaKeyStatusMap, gTypeMediaKeyStatusMap
+  , MediaKeySystemAccess(MediaKeySystemAccess), unMediaKeySystemAccess, noMediaKeySystemAccess, gTypeMediaKeySystemAccess
+  , MediaKeySystemConfiguration(MediaKeySystemConfiguration), unMediaKeySystemConfiguration, noMediaKeySystemConfiguration, gTypeMediaKeySystemConfiguration
+  , MediaKeySystemMediaCapability(MediaKeySystemMediaCapability), unMediaKeySystemMediaCapability, noMediaKeySystemMediaCapability, gTypeMediaKeySystemMediaCapability
+  , MediaKeys(MediaKeys), unMediaKeys, noMediaKeys, gTypeMediaKeys
+  , MediaList(MediaList), unMediaList, noMediaList, gTypeMediaList
+  , MediaMetadata(MediaMetadata), unMediaMetadata, noMediaMetadata, gTypeMediaMetadata
+  , MediaQueryList(MediaQueryList), unMediaQueryList, noMediaQueryList, gTypeMediaQueryList
+  , MediaRemoteControls(MediaRemoteControls), unMediaRemoteControls, noMediaRemoteControls, gTypeMediaRemoteControls
+  , MediaSession(MediaSession), unMediaSession, noMediaSession, gTypeMediaSession
+  , MediaSource(MediaSource), unMediaSource, noMediaSource, gTypeMediaSource
+  , MediaStream(MediaStream), unMediaStream, noMediaStream, gTypeMediaStream
+  , MediaStreamAudioDestinationNode(MediaStreamAudioDestinationNode), unMediaStreamAudioDestinationNode, noMediaStreamAudioDestinationNode, gTypeMediaStreamAudioDestinationNode
+  , MediaStreamAudioSourceNode(MediaStreamAudioSourceNode), unMediaStreamAudioSourceNode, noMediaStreamAudioSourceNode, gTypeMediaStreamAudioSourceNode
+  , MediaStreamConstraints(MediaStreamConstraints), unMediaStreamConstraints, noMediaStreamConstraints, gTypeMediaStreamConstraints
+  , MediaStreamEvent(MediaStreamEvent), unMediaStreamEvent, noMediaStreamEvent, gTypeMediaStreamEvent
+  , MediaStreamEventInit(MediaStreamEventInit), unMediaStreamEventInit, noMediaStreamEventInit, gTypeMediaStreamEventInit
+  , MediaStreamTrack(MediaStreamTrack), unMediaStreamTrack, IsMediaStreamTrack, toMediaStreamTrack, noMediaStreamTrack, gTypeMediaStreamTrack
+  , MediaStreamTrackEvent(MediaStreamTrackEvent), unMediaStreamTrackEvent, noMediaStreamTrackEvent, gTypeMediaStreamTrackEvent
+  , MediaStreamTrackEventInit(MediaStreamTrackEventInit), unMediaStreamTrackEventInit, noMediaStreamTrackEventInit, gTypeMediaStreamTrackEventInit
+  , MediaTrackCapabilities(MediaTrackCapabilities), unMediaTrackCapabilities, noMediaTrackCapabilities, gTypeMediaTrackCapabilities
+  , MediaTrackConstraintSet(MediaTrackConstraintSet), unMediaTrackConstraintSet, IsMediaTrackConstraintSet, toMediaTrackConstraintSet, noMediaTrackConstraintSet, gTypeMediaTrackConstraintSet
+  , MediaTrackConstraints(MediaTrackConstraints), unMediaTrackConstraints, noMediaTrackConstraints, gTypeMediaTrackConstraints
+  , MediaTrackSettings(MediaTrackSettings), unMediaTrackSettings, noMediaTrackSettings, gTypeMediaTrackSettings
+  , MediaTrackSupportedConstraints(MediaTrackSupportedConstraints), unMediaTrackSupportedConstraints, noMediaTrackSupportedConstraints, gTypeMediaTrackSupportedConstraints
+  , MessageChannel(MessageChannel), unMessageChannel, noMessageChannel, gTypeMessageChannel
+  , MessageEvent(MessageEvent), unMessageEvent, noMessageEvent, gTypeMessageEvent
+  , MessageEventInit(MessageEventInit), unMessageEventInit, noMessageEventInit, gTypeMessageEventInit
+  , MessagePort(MessagePort), unMessagePort, noMessagePort, gTypeMessagePort
+  , MimeType(MimeType), unMimeType, noMimeType, gTypeMimeType
+  , MimeTypeArray(MimeTypeArray), unMimeTypeArray, noMimeTypeArray, gTypeMimeTypeArray
+  , MouseEvent(MouseEvent), unMouseEvent, IsMouseEvent, toMouseEvent, noMouseEvent, gTypeMouseEvent
+  , MouseEventInit(MouseEventInit), unMouseEventInit, IsMouseEventInit, toMouseEventInit, noMouseEventInit, gTypeMouseEventInit
+  , MutationEvent(MutationEvent), unMutationEvent, noMutationEvent, gTypeMutationEvent
+  , MutationObserver(MutationObserver), unMutationObserver, noMutationObserver, gTypeMutationObserver
+  , MutationObserverInit(MutationObserverInit), unMutationObserverInit, noMutationObserverInit, gTypeMutationObserverInit
+  , MutationRecord(MutationRecord), unMutationRecord, noMutationRecord, gTypeMutationRecord
+  , NamedNodeMap(NamedNodeMap), unNamedNodeMap, noNamedNodeMap, gTypeNamedNodeMap
+  , Navigator(Navigator), unNavigator, noNavigator, gTypeNavigator
+  , NavigatorConcurrentHardware(NavigatorConcurrentHardware), unNavigatorConcurrentHardware, IsNavigatorConcurrentHardware, toNavigatorConcurrentHardware, noNavigatorConcurrentHardware, gTypeNavigatorConcurrentHardware
+  , NavigatorID(NavigatorID), unNavigatorID, IsNavigatorID, toNavigatorID, noNavigatorID, gTypeNavigatorID
+  , NavigatorLanguage(NavigatorLanguage), unNavigatorLanguage, IsNavigatorLanguage, toNavigatorLanguage, noNavigatorLanguage, gTypeNavigatorLanguage
+  , NavigatorOnLine(NavigatorOnLine), unNavigatorOnLine, IsNavigatorOnLine, toNavigatorOnLine, noNavigatorOnLine, gTypeNavigatorOnLine
+  , NavigatorUserMediaError(NavigatorUserMediaError), unNavigatorUserMediaError, noNavigatorUserMediaError, gTypeNavigatorUserMediaError
+  , Node(Node), unNode, IsNode, toNode, noNode, gTypeNode
+  , NodeIterator(NodeIterator), unNodeIterator, noNodeIterator, gTypeNodeIterator
+  , NodeList(NodeList), unNodeList, IsNodeList, toNodeList, noNodeList, gTypeNodeList
+  , NonDocumentTypeChildNode(NonDocumentTypeChildNode), unNonDocumentTypeChildNode, IsNonDocumentTypeChildNode, toNonDocumentTypeChildNode, noNonDocumentTypeChildNode, gTypeNonDocumentTypeChildNode
+  , NonElementParentNode(NonElementParentNode), unNonElementParentNode, IsNonElementParentNode, toNonElementParentNode, noNonElementParentNode, gTypeNonElementParentNode
+  , Notification(Notification), unNotification, noNotification, gTypeNotification
+  , NotificationOptions(NotificationOptions), unNotificationOptions, noNotificationOptions, gTypeNotificationOptions
+  , OESElementIndexUint(OESElementIndexUint), unOESElementIndexUint, noOESElementIndexUint, gTypeOESElementIndexUint
+  , OESStandardDerivatives(OESStandardDerivatives), unOESStandardDerivatives, noOESStandardDerivatives, gTypeOESStandardDerivatives
+  , OESTextureFloat(OESTextureFloat), unOESTextureFloat, noOESTextureFloat, gTypeOESTextureFloat
+  , OESTextureFloatLinear(OESTextureFloatLinear), unOESTextureFloatLinear, noOESTextureFloatLinear, gTypeOESTextureFloatLinear
+  , OESTextureHalfFloat(OESTextureHalfFloat), unOESTextureHalfFloat, noOESTextureHalfFloat, gTypeOESTextureHalfFloat
+  , OESTextureHalfFloatLinear(OESTextureHalfFloatLinear), unOESTextureHalfFloatLinear, noOESTextureHalfFloatLinear, gTypeOESTextureHalfFloatLinear
+  , OESVertexArrayObject(OESVertexArrayObject), unOESVertexArrayObject, noOESVertexArrayObject, gTypeOESVertexArrayObject
+  , OfflineAudioCompletionEvent(OfflineAudioCompletionEvent), unOfflineAudioCompletionEvent, noOfflineAudioCompletionEvent, gTypeOfflineAudioCompletionEvent
+  , OfflineAudioContext(OfflineAudioContext), unOfflineAudioContext, noOfflineAudioContext, gTypeOfflineAudioContext
+  , OscillatorNode(OscillatorNode), unOscillatorNode, noOscillatorNode, gTypeOscillatorNode
+  , OverconstrainedError(OverconstrainedError), unOverconstrainedError, noOverconstrainedError, gTypeOverconstrainedError
+  , OverconstrainedErrorEvent(OverconstrainedErrorEvent), unOverconstrainedErrorEvent, noOverconstrainedErrorEvent, gTypeOverconstrainedErrorEvent
+  , OverconstrainedErrorEventInit(OverconstrainedErrorEventInit), unOverconstrainedErrorEventInit, noOverconstrainedErrorEventInit, gTypeOverconstrainedErrorEventInit
+  , OverflowEvent(OverflowEvent), unOverflowEvent, noOverflowEvent, gTypeOverflowEvent
+  , OverflowEventInit(OverflowEventInit), unOverflowEventInit, noOverflowEventInit, gTypeOverflowEventInit
+  , PageTransitionEvent(PageTransitionEvent), unPageTransitionEvent, noPageTransitionEvent, gTypePageTransitionEvent
+  , PageTransitionEventInit(PageTransitionEventInit), unPageTransitionEventInit, noPageTransitionEventInit, gTypePageTransitionEventInit
+  , PannerNode(PannerNode), unPannerNode, noPannerNode, gTypePannerNode
+  , ParentNode(ParentNode), unParentNode, IsParentNode, toParentNode, noParentNode, gTypeParentNode
+  , PasswordCredential(PasswordCredential), unPasswordCredential, noPasswordCredential, gTypePasswordCredential
+  , PasswordCredentialData(PasswordCredentialData), unPasswordCredentialData, noPasswordCredentialData, gTypePasswordCredentialData
+  , Path2D(Path2D), unPath2D, noPath2D, gTypePath2D
+  , Pbkdf2Params(Pbkdf2Params), unPbkdf2Params, noPbkdf2Params, gTypePbkdf2Params
+  , Performance(Performance), unPerformance, noPerformance, gTypePerformance
+  , PerformanceEntry(PerformanceEntry), unPerformanceEntry, IsPerformanceEntry, toPerformanceEntry, noPerformanceEntry, gTypePerformanceEntry
+  , PerformanceMark(PerformanceMark), unPerformanceMark, noPerformanceMark, gTypePerformanceMark
+  , PerformanceMeasure(PerformanceMeasure), unPerformanceMeasure, noPerformanceMeasure, gTypePerformanceMeasure
+  , PerformanceNavigation(PerformanceNavigation), unPerformanceNavigation, noPerformanceNavigation, gTypePerformanceNavigation
+  , PerformanceObserver(PerformanceObserver), unPerformanceObserver, noPerformanceObserver, gTypePerformanceObserver
+  , PerformanceObserverEntryList(PerformanceObserverEntryList), unPerformanceObserverEntryList, noPerformanceObserverEntryList, gTypePerformanceObserverEntryList
+  , PerformanceObserverInit(PerformanceObserverInit), unPerformanceObserverInit, noPerformanceObserverInit, gTypePerformanceObserverInit
+  , PerformanceResourceTiming(PerformanceResourceTiming), unPerformanceResourceTiming, noPerformanceResourceTiming, gTypePerformanceResourceTiming
+  , PerformanceTiming(PerformanceTiming), unPerformanceTiming, noPerformanceTiming, gTypePerformanceTiming
+  , PeriodicWave(PeriodicWave), unPeriodicWave, noPeriodicWave, gTypePeriodicWave
+  , Plugin(Plugin), unPlugin, noPlugin, gTypePlugin
+  , PluginArray(PluginArray), unPluginArray, noPluginArray, gTypePluginArray
+  , PopStateEvent(PopStateEvent), unPopStateEvent, noPopStateEvent, gTypePopStateEvent
+  , PopStateEventInit(PopStateEventInit), unPopStateEventInit, noPopStateEventInit, gTypePopStateEventInit
+  , PositionError(PositionError), unPositionError, noPositionError, gTypePositionError
+  , PositionOptions(PositionOptions), unPositionOptions, noPositionOptions, gTypePositionOptions
+  , ProcessingInstruction(ProcessingInstruction), unProcessingInstruction, noProcessingInstruction, gTypeProcessingInstruction
+  , ProgressEvent(ProgressEvent), unProgressEvent, IsProgressEvent, toProgressEvent, noProgressEvent, gTypeProgressEvent
+  , ProgressEventInit(ProgressEventInit), unProgressEventInit, noProgressEventInit, gTypeProgressEventInit
+  , PromiseRejectionEvent(PromiseRejectionEvent), unPromiseRejectionEvent, noPromiseRejectionEvent, gTypePromiseRejectionEvent
+  , PromiseRejectionEventInit(PromiseRejectionEventInit), unPromiseRejectionEventInit, noPromiseRejectionEventInit, gTypePromiseRejectionEventInit
+  , QuickTimePluginReplacement(QuickTimePluginReplacement), unQuickTimePluginReplacement, noQuickTimePluginReplacement, gTypeQuickTimePluginReplacement
+  , RGBColor(RGBColor), unRGBColor, noRGBColor, gTypeRGBColor
+  , RTCAnswerOptions(RTCAnswerOptions), unRTCAnswerOptions, noRTCAnswerOptions, gTypeRTCAnswerOptions
+  , RTCConfiguration(RTCConfiguration), unRTCConfiguration, noRTCConfiguration, gTypeRTCConfiguration
+  , RTCDTMFSender(RTCDTMFSender), unRTCDTMFSender, noRTCDTMFSender, gTypeRTCDTMFSender
+  , RTCDTMFToneChangeEvent(RTCDTMFToneChangeEvent), unRTCDTMFToneChangeEvent, noRTCDTMFToneChangeEvent, gTypeRTCDTMFToneChangeEvent
+  , RTCDTMFToneChangeEventInit(RTCDTMFToneChangeEventInit), unRTCDTMFToneChangeEventInit, noRTCDTMFToneChangeEventInit, gTypeRTCDTMFToneChangeEventInit
+  , RTCDataChannel(RTCDataChannel), unRTCDataChannel, noRTCDataChannel, gTypeRTCDataChannel
+  , RTCDataChannelEvent(RTCDataChannelEvent), unRTCDataChannelEvent, noRTCDataChannelEvent, gTypeRTCDataChannelEvent
+  , RTCDataChannelEventInit(RTCDataChannelEventInit), unRTCDataChannelEventInit, noRTCDataChannelEventInit, gTypeRTCDataChannelEventInit
+  , RTCDataChannelInit(RTCDataChannelInit), unRTCDataChannelInit, noRTCDataChannelInit, gTypeRTCDataChannelInit
+  , RTCDataChannelStats(RTCDataChannelStats), unRTCDataChannelStats, noRTCDataChannelStats, gTypeRTCDataChannelStats
+  , RTCIceCandidate(RTCIceCandidate), unRTCIceCandidate, noRTCIceCandidate, gTypeRTCIceCandidate
+  , RTCIceCandidateEvent(RTCIceCandidateEvent), unRTCIceCandidateEvent, noRTCIceCandidateEvent, gTypeRTCIceCandidateEvent
+  , RTCIceCandidateInit(RTCIceCandidateInit), unRTCIceCandidateInit, noRTCIceCandidateInit, gTypeRTCIceCandidateInit
+  , RTCIceServer(RTCIceServer), unRTCIceServer, noRTCIceServer, gTypeRTCIceServer
+  , RTCIceTransport(RTCIceTransport), unRTCIceTransport, noRTCIceTransport, gTypeRTCIceTransport
+  , RTCInboundRTPStreamStats(RTCInboundRTPStreamStats), unRTCInboundRTPStreamStats, noRTCInboundRTPStreamStats, gTypeRTCInboundRTPStreamStats
+  , RTCMediaStreamTrackStats(RTCMediaStreamTrackStats), unRTCMediaStreamTrackStats, noRTCMediaStreamTrackStats, gTypeRTCMediaStreamTrackStats
+  , RTCOfferAnswerOptions(RTCOfferAnswerOptions), unRTCOfferAnswerOptions, IsRTCOfferAnswerOptions, toRTCOfferAnswerOptions, noRTCOfferAnswerOptions, gTypeRTCOfferAnswerOptions
+  , RTCOfferOptions(RTCOfferOptions), unRTCOfferOptions, noRTCOfferOptions, gTypeRTCOfferOptions
+  , RTCOutboundRTPStreamStats(RTCOutboundRTPStreamStats), unRTCOutboundRTPStreamStats, noRTCOutboundRTPStreamStats, gTypeRTCOutboundRTPStreamStats
+  , RTCPeerConnection(RTCPeerConnection), unRTCPeerConnection, noRTCPeerConnection, gTypeRTCPeerConnection
+  , RTCPeerConnectionIceEvent(RTCPeerConnectionIceEvent), unRTCPeerConnectionIceEvent, noRTCPeerConnectionIceEvent, gTypeRTCPeerConnectionIceEvent
+  , RTCRTPStreamStats(RTCRTPStreamStats), unRTCRTPStreamStats, IsRTCRTPStreamStats, toRTCRTPStreamStats, noRTCRTPStreamStats, gTypeRTCRTPStreamStats
+  , RTCRtpCodecParameters(RTCRtpCodecParameters), unRTCRtpCodecParameters, noRTCRtpCodecParameters, gTypeRTCRtpCodecParameters
+  , RTCRtpEncodingParameters(RTCRtpEncodingParameters), unRTCRtpEncodingParameters, noRTCRtpEncodingParameters, gTypeRTCRtpEncodingParameters
+  , RTCRtpFecParameters(RTCRtpFecParameters), unRTCRtpFecParameters, noRTCRtpFecParameters, gTypeRTCRtpFecParameters
+  , RTCRtpHeaderExtensionParameters(RTCRtpHeaderExtensionParameters), unRTCRtpHeaderExtensionParameters, noRTCRtpHeaderExtensionParameters, gTypeRTCRtpHeaderExtensionParameters
+  , RTCRtpParameters(RTCRtpParameters), unRTCRtpParameters, noRTCRtpParameters, gTypeRTCRtpParameters
+  , RTCRtpReceiver(RTCRtpReceiver), unRTCRtpReceiver, noRTCRtpReceiver, gTypeRTCRtpReceiver
+  , RTCRtpRtxParameters(RTCRtpRtxParameters), unRTCRtpRtxParameters, noRTCRtpRtxParameters, gTypeRTCRtpRtxParameters
+  , RTCRtpSender(RTCRtpSender), unRTCRtpSender, noRTCRtpSender, gTypeRTCRtpSender
+  , RTCRtpTransceiver(RTCRtpTransceiver), unRTCRtpTransceiver, noRTCRtpTransceiver, gTypeRTCRtpTransceiver
+  , RTCRtpTransceiverInit(RTCRtpTransceiverInit), unRTCRtpTransceiverInit, noRTCRtpTransceiverInit, gTypeRTCRtpTransceiverInit
+  , RTCSessionDescription(RTCSessionDescription), unRTCSessionDescription, noRTCSessionDescription, gTypeRTCSessionDescription
+  , RTCSessionDescriptionInit(RTCSessionDescriptionInit), unRTCSessionDescriptionInit, noRTCSessionDescriptionInit, gTypeRTCSessionDescriptionInit
+  , RTCStats(RTCStats), unRTCStats, IsRTCStats, toRTCStats, noRTCStats, gTypeRTCStats
+  , RTCStatsReport(RTCStatsReport), unRTCStatsReport, noRTCStatsReport, gTypeRTCStatsReport
+  , RTCTrackEvent(RTCTrackEvent), unRTCTrackEvent, noRTCTrackEvent, gTypeRTCTrackEvent
+  , RTCTrackEventInit(RTCTrackEventInit), unRTCTrackEventInit, noRTCTrackEventInit, gTypeRTCTrackEventInit
+  , RadioNodeList(RadioNodeList), unRadioNodeList, noRadioNodeList, gTypeRadioNodeList
+  , Range(Range), unRange, noRange, gTypeRange
+  , ReadableByteStreamController(ReadableByteStreamController), unReadableByteStreamController, noReadableByteStreamController, gTypeReadableByteStreamController
+  , ReadableStream(ReadableStream), unReadableStream, noReadableStream, gTypeReadableStream
+  , ReadableStreamBYOBReader(ReadableStreamBYOBReader), unReadableStreamBYOBReader, noReadableStreamBYOBReader, gTypeReadableStreamBYOBReader
+  , ReadableStreamBYOBRequest(ReadableStreamBYOBRequest), unReadableStreamBYOBRequest, noReadableStreamBYOBRequest, gTypeReadableStreamBYOBRequest
+  , ReadableStreamDefaultController(ReadableStreamDefaultController), unReadableStreamDefaultController, noReadableStreamDefaultController, gTypeReadableStreamDefaultController
+  , ReadableStreamDefaultReader(ReadableStreamDefaultReader), unReadableStreamDefaultReader, noReadableStreamDefaultReader, gTypeReadableStreamDefaultReader
+  , ReadableStreamSource(ReadableStreamSource), unReadableStreamSource, noReadableStreamSource, gTypeReadableStreamSource
+  , Rect(Rect), unRect, noRect, gTypeRect
+  , Request(Request), unRequest, noRequest, gTypeRequest
+  , RequestInit(RequestInit), unRequestInit, noRequestInit, gTypeRequestInit
+  , Response(Response), unResponse, noResponse, gTypeResponse
+  , RotationRate(RotationRate), unRotationRate, noRotationRate, gTypeRotationRate
+  , RsaHashedImportParams(RsaHashedImportParams), unRsaHashedImportParams, noRsaHashedImportParams, gTypeRsaHashedImportParams
+  , RsaHashedKeyGenParams(RsaHashedKeyGenParams), unRsaHashedKeyGenParams, noRsaHashedKeyGenParams, gTypeRsaHashedKeyGenParams
+  , RsaKeyGenParams(RsaKeyGenParams), unRsaKeyGenParams, IsRsaKeyGenParams, toRsaKeyGenParams, noRsaKeyGenParams, gTypeRsaKeyGenParams
+  , RsaOaepParams(RsaOaepParams), unRsaOaepParams, noRsaOaepParams, gTypeRsaOaepParams
+  , RsaOtherPrimesInfo(RsaOtherPrimesInfo), unRsaOtherPrimesInfo, noRsaOtherPrimesInfo, gTypeRsaOtherPrimesInfo
+  , SQLError(SQLError), unSQLError, noSQLError, gTypeSQLError
+  , SQLException(SQLException), unSQLException, noSQLException, gTypeSQLException
+  , SQLResultSet(SQLResultSet), unSQLResultSet, noSQLResultSet, gTypeSQLResultSet
+  , SQLResultSetRowList(SQLResultSetRowList), unSQLResultSetRowList, noSQLResultSetRowList, gTypeSQLResultSetRowList
+  , SQLTransaction(SQLTransaction), unSQLTransaction, noSQLTransaction, gTypeSQLTransaction
+  , SVGAElement(SVGAElement), unSVGAElement, noSVGAElement, gTypeSVGAElement
+  , SVGAltGlyphDefElement(SVGAltGlyphDefElement), unSVGAltGlyphDefElement, noSVGAltGlyphDefElement, gTypeSVGAltGlyphDefElement
+  , SVGAltGlyphElement(SVGAltGlyphElement), unSVGAltGlyphElement, noSVGAltGlyphElement, gTypeSVGAltGlyphElement
+  , SVGAltGlyphItemElement(SVGAltGlyphItemElement), unSVGAltGlyphItemElement, noSVGAltGlyphItemElement, gTypeSVGAltGlyphItemElement
+  , SVGAngle(SVGAngle), unSVGAngle, noSVGAngle, gTypeSVGAngle
+  , SVGAnimateColorElement(SVGAnimateColorElement), unSVGAnimateColorElement, noSVGAnimateColorElement, gTypeSVGAnimateColorElement
+  , SVGAnimateElement(SVGAnimateElement), unSVGAnimateElement, noSVGAnimateElement, gTypeSVGAnimateElement
+  , SVGAnimateMotionElement(SVGAnimateMotionElement), unSVGAnimateMotionElement, noSVGAnimateMotionElement, gTypeSVGAnimateMotionElement
+  , SVGAnimateTransformElement(SVGAnimateTransformElement), unSVGAnimateTransformElement, noSVGAnimateTransformElement, gTypeSVGAnimateTransformElement
+  , SVGAnimatedAngle(SVGAnimatedAngle), unSVGAnimatedAngle, noSVGAnimatedAngle, gTypeSVGAnimatedAngle
+  , SVGAnimatedBoolean(SVGAnimatedBoolean), unSVGAnimatedBoolean, noSVGAnimatedBoolean, gTypeSVGAnimatedBoolean
+  , SVGAnimatedEnumeration(SVGAnimatedEnumeration), unSVGAnimatedEnumeration, noSVGAnimatedEnumeration, gTypeSVGAnimatedEnumeration
+  , SVGAnimatedInteger(SVGAnimatedInteger), unSVGAnimatedInteger, noSVGAnimatedInteger, gTypeSVGAnimatedInteger
+  , SVGAnimatedLength(SVGAnimatedLength), unSVGAnimatedLength, noSVGAnimatedLength, gTypeSVGAnimatedLength
+  , SVGAnimatedLengthList(SVGAnimatedLengthList), unSVGAnimatedLengthList, noSVGAnimatedLengthList, gTypeSVGAnimatedLengthList
+  , SVGAnimatedNumber(SVGAnimatedNumber), unSVGAnimatedNumber, noSVGAnimatedNumber, gTypeSVGAnimatedNumber
+  , SVGAnimatedNumberList(SVGAnimatedNumberList), unSVGAnimatedNumberList, noSVGAnimatedNumberList, gTypeSVGAnimatedNumberList
+  , SVGAnimatedPreserveAspectRatio(SVGAnimatedPreserveAspectRatio), unSVGAnimatedPreserveAspectRatio, noSVGAnimatedPreserveAspectRatio, gTypeSVGAnimatedPreserveAspectRatio
+  , SVGAnimatedRect(SVGAnimatedRect), unSVGAnimatedRect, noSVGAnimatedRect, gTypeSVGAnimatedRect
+  , SVGAnimatedString(SVGAnimatedString), unSVGAnimatedString, noSVGAnimatedString, gTypeSVGAnimatedString
+  , SVGAnimatedTransformList(SVGAnimatedTransformList), unSVGAnimatedTransformList, noSVGAnimatedTransformList, gTypeSVGAnimatedTransformList
+  , SVGAnimationElement(SVGAnimationElement), unSVGAnimationElement, IsSVGAnimationElement, toSVGAnimationElement, noSVGAnimationElement, gTypeSVGAnimationElement
+  , SVGCircleElement(SVGCircleElement), unSVGCircleElement, noSVGCircleElement, gTypeSVGCircleElement
+  , SVGClipPathElement(SVGClipPathElement), unSVGClipPathElement, noSVGClipPathElement, gTypeSVGClipPathElement
+  , SVGComponentTransferFunctionElement(SVGComponentTransferFunctionElement), unSVGComponentTransferFunctionElement, IsSVGComponentTransferFunctionElement, toSVGComponentTransferFunctionElement, noSVGComponentTransferFunctionElement, gTypeSVGComponentTransferFunctionElement
+  , SVGCursorElement(SVGCursorElement), unSVGCursorElement, noSVGCursorElement, gTypeSVGCursorElement
+  , SVGDefsElement(SVGDefsElement), unSVGDefsElement, noSVGDefsElement, gTypeSVGDefsElement
+  , SVGDescElement(SVGDescElement), unSVGDescElement, noSVGDescElement, gTypeSVGDescElement
+  , SVGElement(SVGElement), unSVGElement, IsSVGElement, toSVGElement, noSVGElement, gTypeSVGElement
+  , SVGEllipseElement(SVGEllipseElement), unSVGEllipseElement, noSVGEllipseElement, gTypeSVGEllipseElement
+  , SVGException(SVGException), unSVGException, noSVGException, gTypeSVGException
+  , SVGExternalResourcesRequired(SVGExternalResourcesRequired), unSVGExternalResourcesRequired, IsSVGExternalResourcesRequired, toSVGExternalResourcesRequired, noSVGExternalResourcesRequired, gTypeSVGExternalResourcesRequired
+  , SVGFEBlendElement(SVGFEBlendElement), unSVGFEBlendElement, noSVGFEBlendElement, gTypeSVGFEBlendElement
+  , SVGFEColorMatrixElement(SVGFEColorMatrixElement), unSVGFEColorMatrixElement, noSVGFEColorMatrixElement, gTypeSVGFEColorMatrixElement
+  , SVGFEComponentTransferElement(SVGFEComponentTransferElement), unSVGFEComponentTransferElement, noSVGFEComponentTransferElement, gTypeSVGFEComponentTransferElement
+  , SVGFECompositeElement(SVGFECompositeElement), unSVGFECompositeElement, noSVGFECompositeElement, gTypeSVGFECompositeElement
+  , SVGFEConvolveMatrixElement(SVGFEConvolveMatrixElement), unSVGFEConvolveMatrixElement, noSVGFEConvolveMatrixElement, gTypeSVGFEConvolveMatrixElement
+  , SVGFEDiffuseLightingElement(SVGFEDiffuseLightingElement), unSVGFEDiffuseLightingElement, noSVGFEDiffuseLightingElement, gTypeSVGFEDiffuseLightingElement
+  , SVGFEDisplacementMapElement(SVGFEDisplacementMapElement), unSVGFEDisplacementMapElement, noSVGFEDisplacementMapElement, gTypeSVGFEDisplacementMapElement
+  , SVGFEDistantLightElement(SVGFEDistantLightElement), unSVGFEDistantLightElement, noSVGFEDistantLightElement, gTypeSVGFEDistantLightElement
+  , SVGFEDropShadowElement(SVGFEDropShadowElement), unSVGFEDropShadowElement, noSVGFEDropShadowElement, gTypeSVGFEDropShadowElement
+  , SVGFEFloodElement(SVGFEFloodElement), unSVGFEFloodElement, noSVGFEFloodElement, gTypeSVGFEFloodElement
+  , SVGFEFuncAElement(SVGFEFuncAElement), unSVGFEFuncAElement, noSVGFEFuncAElement, gTypeSVGFEFuncAElement
+  , SVGFEFuncBElement(SVGFEFuncBElement), unSVGFEFuncBElement, noSVGFEFuncBElement, gTypeSVGFEFuncBElement
+  , SVGFEFuncGElement(SVGFEFuncGElement), unSVGFEFuncGElement, noSVGFEFuncGElement, gTypeSVGFEFuncGElement
+  , SVGFEFuncRElement(SVGFEFuncRElement), unSVGFEFuncRElement, noSVGFEFuncRElement, gTypeSVGFEFuncRElement
+  , SVGFEGaussianBlurElement(SVGFEGaussianBlurElement), unSVGFEGaussianBlurElement, noSVGFEGaussianBlurElement, gTypeSVGFEGaussianBlurElement
+  , SVGFEImageElement(SVGFEImageElement), unSVGFEImageElement, noSVGFEImageElement, gTypeSVGFEImageElement
+  , SVGFEMergeElement(SVGFEMergeElement), unSVGFEMergeElement, noSVGFEMergeElement, gTypeSVGFEMergeElement
+  , SVGFEMergeNodeElement(SVGFEMergeNodeElement), unSVGFEMergeNodeElement, noSVGFEMergeNodeElement, gTypeSVGFEMergeNodeElement
+  , SVGFEMorphologyElement(SVGFEMorphologyElement), unSVGFEMorphologyElement, noSVGFEMorphologyElement, gTypeSVGFEMorphologyElement
+  , SVGFEOffsetElement(SVGFEOffsetElement), unSVGFEOffsetElement, noSVGFEOffsetElement, gTypeSVGFEOffsetElement
+  , SVGFEPointLightElement(SVGFEPointLightElement), unSVGFEPointLightElement, noSVGFEPointLightElement, gTypeSVGFEPointLightElement
+  , SVGFESpecularLightingElement(SVGFESpecularLightingElement), unSVGFESpecularLightingElement, noSVGFESpecularLightingElement, gTypeSVGFESpecularLightingElement
+  , SVGFESpotLightElement(SVGFESpotLightElement), unSVGFESpotLightElement, noSVGFESpotLightElement, gTypeSVGFESpotLightElement
+  , SVGFETileElement(SVGFETileElement), unSVGFETileElement, noSVGFETileElement, gTypeSVGFETileElement
+  , SVGFETurbulenceElement(SVGFETurbulenceElement), unSVGFETurbulenceElement, noSVGFETurbulenceElement, gTypeSVGFETurbulenceElement
+  , SVGFilterElement(SVGFilterElement), unSVGFilterElement, noSVGFilterElement, gTypeSVGFilterElement
+  , SVGFilterPrimitiveStandardAttributes(SVGFilterPrimitiveStandardAttributes), unSVGFilterPrimitiveStandardAttributes, IsSVGFilterPrimitiveStandardAttributes, toSVGFilterPrimitiveStandardAttributes, noSVGFilterPrimitiveStandardAttributes, gTypeSVGFilterPrimitiveStandardAttributes
+  , SVGFitToViewBox(SVGFitToViewBox), unSVGFitToViewBox, IsSVGFitToViewBox, toSVGFitToViewBox, noSVGFitToViewBox, gTypeSVGFitToViewBox
+  , SVGFontElement(SVGFontElement), unSVGFontElement, noSVGFontElement, gTypeSVGFontElement
+  , SVGFontFaceElement(SVGFontFaceElement), unSVGFontFaceElement, noSVGFontFaceElement, gTypeSVGFontFaceElement
+  , SVGFontFaceFormatElement(SVGFontFaceFormatElement), unSVGFontFaceFormatElement, noSVGFontFaceFormatElement, gTypeSVGFontFaceFormatElement
+  , SVGFontFaceNameElement(SVGFontFaceNameElement), unSVGFontFaceNameElement, noSVGFontFaceNameElement, gTypeSVGFontFaceNameElement
+  , SVGFontFaceSrcElement(SVGFontFaceSrcElement), unSVGFontFaceSrcElement, noSVGFontFaceSrcElement, gTypeSVGFontFaceSrcElement
+  , SVGFontFaceUriElement(SVGFontFaceUriElement), unSVGFontFaceUriElement, noSVGFontFaceUriElement, gTypeSVGFontFaceUriElement
+  , SVGForeignObjectElement(SVGForeignObjectElement), unSVGForeignObjectElement, noSVGForeignObjectElement, gTypeSVGForeignObjectElement
+  , SVGGElement(SVGGElement), unSVGGElement, noSVGGElement, gTypeSVGGElement
+  , SVGGlyphElement(SVGGlyphElement), unSVGGlyphElement, noSVGGlyphElement, gTypeSVGGlyphElement
+  , SVGGlyphRefElement(SVGGlyphRefElement), unSVGGlyphRefElement, noSVGGlyphRefElement, gTypeSVGGlyphRefElement
+  , SVGGradientElement(SVGGradientElement), unSVGGradientElement, IsSVGGradientElement, toSVGGradientElement, noSVGGradientElement, gTypeSVGGradientElement
+  , SVGGraphicsElement(SVGGraphicsElement), unSVGGraphicsElement, IsSVGGraphicsElement, toSVGGraphicsElement, noSVGGraphicsElement, gTypeSVGGraphicsElement
+  , SVGHKernElement(SVGHKernElement), unSVGHKernElement, noSVGHKernElement, gTypeSVGHKernElement
+  , SVGImageElement(SVGImageElement), unSVGImageElement, noSVGImageElement, gTypeSVGImageElement
+  , SVGLength(SVGLength), unSVGLength, noSVGLength, gTypeSVGLength
+  , SVGLengthList(SVGLengthList), unSVGLengthList, noSVGLengthList, gTypeSVGLengthList
+  , SVGLineElement(SVGLineElement), unSVGLineElement, noSVGLineElement, gTypeSVGLineElement
+  , SVGLinearGradientElement(SVGLinearGradientElement), unSVGLinearGradientElement, noSVGLinearGradientElement, gTypeSVGLinearGradientElement
+  , SVGMPathElement(SVGMPathElement), unSVGMPathElement, noSVGMPathElement, gTypeSVGMPathElement
+  , SVGMarkerElement(SVGMarkerElement), unSVGMarkerElement, noSVGMarkerElement, gTypeSVGMarkerElement
+  , SVGMaskElement(SVGMaskElement), unSVGMaskElement, noSVGMaskElement, gTypeSVGMaskElement
+  , SVGMatrix(SVGMatrix), unSVGMatrix, noSVGMatrix, gTypeSVGMatrix
+  , SVGMetadataElement(SVGMetadataElement), unSVGMetadataElement, noSVGMetadataElement, gTypeSVGMetadataElement
+  , SVGMissingGlyphElement(SVGMissingGlyphElement), unSVGMissingGlyphElement, noSVGMissingGlyphElement, gTypeSVGMissingGlyphElement
+  , SVGNumber(SVGNumber), unSVGNumber, noSVGNumber, gTypeSVGNumber
+  , SVGNumberList(SVGNumberList), unSVGNumberList, noSVGNumberList, gTypeSVGNumberList
+  , SVGPathElement(SVGPathElement), unSVGPathElement, noSVGPathElement, gTypeSVGPathElement
+  , SVGPathSeg(SVGPathSeg), unSVGPathSeg, IsSVGPathSeg, toSVGPathSeg, noSVGPathSeg, gTypeSVGPathSeg
+  , SVGPathSegArcAbs(SVGPathSegArcAbs), unSVGPathSegArcAbs, noSVGPathSegArcAbs, gTypeSVGPathSegArcAbs
+  , SVGPathSegArcRel(SVGPathSegArcRel), unSVGPathSegArcRel, noSVGPathSegArcRel, gTypeSVGPathSegArcRel
+  , SVGPathSegClosePath(SVGPathSegClosePath), unSVGPathSegClosePath, noSVGPathSegClosePath, gTypeSVGPathSegClosePath
+  , SVGPathSegCurvetoCubicAbs(SVGPathSegCurvetoCubicAbs), unSVGPathSegCurvetoCubicAbs, noSVGPathSegCurvetoCubicAbs, gTypeSVGPathSegCurvetoCubicAbs
+  , SVGPathSegCurvetoCubicRel(SVGPathSegCurvetoCubicRel), unSVGPathSegCurvetoCubicRel, noSVGPathSegCurvetoCubicRel, gTypeSVGPathSegCurvetoCubicRel
+  , SVGPathSegCurvetoCubicSmoothAbs(SVGPathSegCurvetoCubicSmoothAbs), unSVGPathSegCurvetoCubicSmoothAbs, noSVGPathSegCurvetoCubicSmoothAbs, gTypeSVGPathSegCurvetoCubicSmoothAbs
+  , SVGPathSegCurvetoCubicSmoothRel(SVGPathSegCurvetoCubicSmoothRel), unSVGPathSegCurvetoCubicSmoothRel, noSVGPathSegCurvetoCubicSmoothRel, gTypeSVGPathSegCurvetoCubicSmoothRel
+  , SVGPathSegCurvetoQuadraticAbs(SVGPathSegCurvetoQuadraticAbs), unSVGPathSegCurvetoQuadraticAbs, noSVGPathSegCurvetoQuadraticAbs, gTypeSVGPathSegCurvetoQuadraticAbs
+  , SVGPathSegCurvetoQuadraticRel(SVGPathSegCurvetoQuadraticRel), unSVGPathSegCurvetoQuadraticRel, noSVGPathSegCurvetoQuadraticRel, gTypeSVGPathSegCurvetoQuadraticRel
+  , SVGPathSegCurvetoQuadraticSmoothAbs(SVGPathSegCurvetoQuadraticSmoothAbs), unSVGPathSegCurvetoQuadraticSmoothAbs, noSVGPathSegCurvetoQuadraticSmoothAbs, gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  , SVGPathSegCurvetoQuadraticSmoothRel(SVGPathSegCurvetoQuadraticSmoothRel), unSVGPathSegCurvetoQuadraticSmoothRel, noSVGPathSegCurvetoQuadraticSmoothRel, gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  , SVGPathSegLinetoAbs(SVGPathSegLinetoAbs), unSVGPathSegLinetoAbs, noSVGPathSegLinetoAbs, gTypeSVGPathSegLinetoAbs
+  , SVGPathSegLinetoHorizontalAbs(SVGPathSegLinetoHorizontalAbs), unSVGPathSegLinetoHorizontalAbs, noSVGPathSegLinetoHorizontalAbs, gTypeSVGPathSegLinetoHorizontalAbs
+  , SVGPathSegLinetoHorizontalRel(SVGPathSegLinetoHorizontalRel), unSVGPathSegLinetoHorizontalRel, noSVGPathSegLinetoHorizontalRel, gTypeSVGPathSegLinetoHorizontalRel
+  , SVGPathSegLinetoRel(SVGPathSegLinetoRel), unSVGPathSegLinetoRel, noSVGPathSegLinetoRel, gTypeSVGPathSegLinetoRel
+  , SVGPathSegLinetoVerticalAbs(SVGPathSegLinetoVerticalAbs), unSVGPathSegLinetoVerticalAbs, noSVGPathSegLinetoVerticalAbs, gTypeSVGPathSegLinetoVerticalAbs
+  , SVGPathSegLinetoVerticalRel(SVGPathSegLinetoVerticalRel), unSVGPathSegLinetoVerticalRel, noSVGPathSegLinetoVerticalRel, gTypeSVGPathSegLinetoVerticalRel
+  , SVGPathSegList(SVGPathSegList), unSVGPathSegList, noSVGPathSegList, gTypeSVGPathSegList
+  , SVGPathSegMovetoAbs(SVGPathSegMovetoAbs), unSVGPathSegMovetoAbs, noSVGPathSegMovetoAbs, gTypeSVGPathSegMovetoAbs
+  , SVGPathSegMovetoRel(SVGPathSegMovetoRel), unSVGPathSegMovetoRel, noSVGPathSegMovetoRel, gTypeSVGPathSegMovetoRel
+  , SVGPatternElement(SVGPatternElement), unSVGPatternElement, noSVGPatternElement, gTypeSVGPatternElement
+  , SVGPoint(SVGPoint), unSVGPoint, noSVGPoint, gTypeSVGPoint
+  , SVGPointList(SVGPointList), unSVGPointList, noSVGPointList, gTypeSVGPointList
+  , SVGPolygonElement(SVGPolygonElement), unSVGPolygonElement, noSVGPolygonElement, gTypeSVGPolygonElement
+  , SVGPolylineElement(SVGPolylineElement), unSVGPolylineElement, noSVGPolylineElement, gTypeSVGPolylineElement
+  , SVGPreserveAspectRatio(SVGPreserveAspectRatio), unSVGPreserveAspectRatio, noSVGPreserveAspectRatio, gTypeSVGPreserveAspectRatio
+  , SVGRadialGradientElement(SVGRadialGradientElement), unSVGRadialGradientElement, noSVGRadialGradientElement, gTypeSVGRadialGradientElement
+  , SVGRect(SVGRect), unSVGRect, noSVGRect, gTypeSVGRect
+  , SVGRectElement(SVGRectElement), unSVGRectElement, noSVGRectElement, gTypeSVGRectElement
+  , SVGRenderingIntent(SVGRenderingIntent), unSVGRenderingIntent, noSVGRenderingIntent, gTypeSVGRenderingIntent
+  , SVGSVGElement(SVGSVGElement), unSVGSVGElement, noSVGSVGElement, gTypeSVGSVGElement
+  , SVGScriptElement(SVGScriptElement), unSVGScriptElement, noSVGScriptElement, gTypeSVGScriptElement
+  , SVGSetElement(SVGSetElement), unSVGSetElement, noSVGSetElement, gTypeSVGSetElement
+  , SVGStopElement(SVGStopElement), unSVGStopElement, noSVGStopElement, gTypeSVGStopElement
+  , SVGStringList(SVGStringList), unSVGStringList, noSVGStringList, gTypeSVGStringList
+  , SVGStyleElement(SVGStyleElement), unSVGStyleElement, noSVGStyleElement, gTypeSVGStyleElement
+  , SVGSwitchElement(SVGSwitchElement), unSVGSwitchElement, noSVGSwitchElement, gTypeSVGSwitchElement
+  , SVGSymbolElement(SVGSymbolElement), unSVGSymbolElement, noSVGSymbolElement, gTypeSVGSymbolElement
+  , SVGTRefElement(SVGTRefElement), unSVGTRefElement, noSVGTRefElement, gTypeSVGTRefElement
+  , SVGTSpanElement(SVGTSpanElement), unSVGTSpanElement, noSVGTSpanElement, gTypeSVGTSpanElement
+  , SVGTests(SVGTests), unSVGTests, IsSVGTests, toSVGTests, noSVGTests, gTypeSVGTests
+  , SVGTextContentElement(SVGTextContentElement), unSVGTextContentElement, IsSVGTextContentElement, toSVGTextContentElement, noSVGTextContentElement, gTypeSVGTextContentElement
+  , SVGTextElement(SVGTextElement), unSVGTextElement, noSVGTextElement, gTypeSVGTextElement
+  , SVGTextPathElement(SVGTextPathElement), unSVGTextPathElement, noSVGTextPathElement, gTypeSVGTextPathElement
+  , SVGTextPositioningElement(SVGTextPositioningElement), unSVGTextPositioningElement, IsSVGTextPositioningElement, toSVGTextPositioningElement, noSVGTextPositioningElement, gTypeSVGTextPositioningElement
+  , SVGTitleElement(SVGTitleElement), unSVGTitleElement, noSVGTitleElement, gTypeSVGTitleElement
+  , SVGTransform(SVGTransform), unSVGTransform, noSVGTransform, gTypeSVGTransform
+  , SVGTransformList(SVGTransformList), unSVGTransformList, noSVGTransformList, gTypeSVGTransformList
+  , SVGURIReference(SVGURIReference), unSVGURIReference, IsSVGURIReference, toSVGURIReference, noSVGURIReference, gTypeSVGURIReference
+  , SVGUnitTypes(SVGUnitTypes), unSVGUnitTypes, noSVGUnitTypes, gTypeSVGUnitTypes
+  , SVGUseElement(SVGUseElement), unSVGUseElement, noSVGUseElement, gTypeSVGUseElement
+  , SVGVKernElement(SVGVKernElement), unSVGVKernElement, noSVGVKernElement, gTypeSVGVKernElement
+  , SVGViewElement(SVGViewElement), unSVGViewElement, noSVGViewElement, gTypeSVGViewElement
+  , SVGViewSpec(SVGViewSpec), unSVGViewSpec, noSVGViewSpec, gTypeSVGViewSpec
+  , SVGZoomAndPan(SVGZoomAndPan), unSVGZoomAndPan, IsSVGZoomAndPan, toSVGZoomAndPan, noSVGZoomAndPan, gTypeSVGZoomAndPan
+  , SVGZoomEvent(SVGZoomEvent), unSVGZoomEvent, noSVGZoomEvent, gTypeSVGZoomEvent
+  , Screen(Screen), unScreen, noScreen, gTypeScreen
+  , ScriptProcessorNode(ScriptProcessorNode), unScriptProcessorNode, noScriptProcessorNode, gTypeScriptProcessorNode
+  , ScrollToOptions(ScrollToOptions), unScrollToOptions, noScrollToOptions, gTypeScrollToOptions
+  , SecurityPolicyViolationEvent(SecurityPolicyViolationEvent), unSecurityPolicyViolationEvent, noSecurityPolicyViolationEvent, gTypeSecurityPolicyViolationEvent
+  , SecurityPolicyViolationEventInit(SecurityPolicyViolationEventInit), unSecurityPolicyViolationEventInit, noSecurityPolicyViolationEventInit, gTypeSecurityPolicyViolationEventInit
+  , Selection(Selection), unSelection, noSelection, gTypeSelection
+  , ShadowRoot(ShadowRoot), unShadowRoot, noShadowRoot, gTypeShadowRoot
+  , ShadowRootInit(ShadowRootInit), unShadowRootInit, noShadowRootInit, gTypeShadowRootInit
+  , SiteBoundCredential(SiteBoundCredential), unSiteBoundCredential, IsSiteBoundCredential, toSiteBoundCredential, noSiteBoundCredential, gTypeSiteBoundCredential
+  , SiteBoundCredentialData(SiteBoundCredentialData), unSiteBoundCredentialData, IsSiteBoundCredentialData, toSiteBoundCredentialData, noSiteBoundCredentialData, gTypeSiteBoundCredentialData
+  , Slotable(Slotable), unSlotable, IsSlotable, toSlotable, noSlotable, gTypeSlotable
+  , SourceBuffer(SourceBuffer), unSourceBuffer, noSourceBuffer, gTypeSourceBuffer
+  , SourceBufferList(SourceBufferList), unSourceBufferList, noSourceBufferList, gTypeSourceBufferList
+  , SpeechSynthesis(SpeechSynthesis), unSpeechSynthesis, noSpeechSynthesis, gTypeSpeechSynthesis
+  , SpeechSynthesisEvent(SpeechSynthesisEvent), unSpeechSynthesisEvent, noSpeechSynthesisEvent, gTypeSpeechSynthesisEvent
+  , SpeechSynthesisUtterance(SpeechSynthesisUtterance), unSpeechSynthesisUtterance, noSpeechSynthesisUtterance, gTypeSpeechSynthesisUtterance
+  , SpeechSynthesisVoice(SpeechSynthesisVoice), unSpeechSynthesisVoice, noSpeechSynthesisVoice, gTypeSpeechSynthesisVoice
+  , SpeechGrammar(SpeechGrammar), unSpeechGrammar, noSpeechGrammar, gTypeSpeechGrammar
+  , SpeechGrammarList(SpeechGrammarList), unSpeechGrammarList, noSpeechGrammarList, gTypeSpeechGrammarList
+  , SpeechRecognition(SpeechRecognition), unSpeechRecognition, noSpeechRecognition, gTypeSpeechRecognition
+  , SpeechRecognitionAlternative(SpeechRecognitionAlternative), unSpeechRecognitionAlternative, noSpeechRecognitionAlternative, gTypeSpeechRecognitionAlternative
+  , SpeechRecognitionEvent(SpeechRecognitionEvent), unSpeechRecognitionEvent, noSpeechRecognitionEvent, gTypeSpeechRecognitionEvent
+  , SpeechRecognitionResult(SpeechRecognitionResult), unSpeechRecognitionResult, noSpeechRecognitionResult, gTypeSpeechRecognitionResult
+  , SpeechRecognitionResultList(SpeechRecognitionResultList), unSpeechRecognitionResultList, noSpeechRecognitionResultList, gTypeSpeechRecognitionResultList
+  , SpeechRecognitionError(SpeechRecognitionError), unSpeechRecognitionError, noSpeechRecognitionError, gTypeSpeechRecognitionError
+  , StaticRange(StaticRange), unStaticRange, noStaticRange, gTypeStaticRange
+  , Storage(Storage), unStorage, noStorage, gTypeStorage
+  , StorageEvent(StorageEvent), unStorageEvent, noStorageEvent, gTypeStorageEvent
+  , StorageEventInit(StorageEventInit), unStorageEventInit, noStorageEventInit, gTypeStorageEventInit
+  , StorageInfo(StorageInfo), unStorageInfo, noStorageInfo, gTypeStorageInfo
+  , StorageQuota(StorageQuota), unStorageQuota, noStorageQuota, gTypeStorageQuota
+  , StyleMedia(StyleMedia), unStyleMedia, noStyleMedia, gTypeStyleMedia
+  , StyleSheet(StyleSheet), unStyleSheet, IsStyleSheet, toStyleSheet, noStyleSheet, gTypeStyleSheet
+  , StyleSheetList(StyleSheetList), unStyleSheetList, noStyleSheetList, gTypeStyleSheetList
+  , SubtleCrypto(SubtleCrypto), unSubtleCrypto, noSubtleCrypto, gTypeSubtleCrypto
+  , Text(Text), unText, IsText, toText, noText, gTypeText
+  , TextDecodeOptions(TextDecodeOptions), unTextDecodeOptions, noTextDecodeOptions, gTypeTextDecodeOptions
+  , TextDecoder(TextDecoder), unTextDecoder, noTextDecoder, gTypeTextDecoder
+  , TextDecoderOptions(TextDecoderOptions), unTextDecoderOptions, noTextDecoderOptions, gTypeTextDecoderOptions
+  , TextEncoder(TextEncoder), unTextEncoder, noTextEncoder, gTypeTextEncoder
+  , TextEvent(TextEvent), unTextEvent, noTextEvent, gTypeTextEvent
+  , TextMetrics(TextMetrics), unTextMetrics, noTextMetrics, gTypeTextMetrics
+  , TextTrack(TextTrack), unTextTrack, noTextTrack, gTypeTextTrack
+  , TextTrackCue(TextTrackCue), unTextTrackCue, IsTextTrackCue, toTextTrackCue, noTextTrackCue, gTypeTextTrackCue
+  , TextTrackCueList(TextTrackCueList), unTextTrackCueList, noTextTrackCueList, gTypeTextTrackCueList
+  , TextTrackList(TextTrackList), unTextTrackList, noTextTrackList, gTypeTextTrackList
+  , TimeRanges(TimeRanges), unTimeRanges, noTimeRanges, gTypeTimeRanges
+  , Touch(Touch), unTouch, noTouch, gTypeTouch
+  , TouchEvent(TouchEvent), unTouchEvent, noTouchEvent, gTypeTouchEvent
+  , TouchEventInit(TouchEventInit), unTouchEventInit, noTouchEventInit, gTypeTouchEventInit
+  , TouchList(TouchList), unTouchList, noTouchList, gTypeTouchList
+  , TrackEvent(TrackEvent), unTrackEvent, noTrackEvent, gTypeTrackEvent
+  , TrackEventInit(TrackEventInit), unTrackEventInit, noTrackEventInit, gTypeTrackEventInit
+  , TransitionEvent(TransitionEvent), unTransitionEvent, noTransitionEvent, gTypeTransitionEvent
+  , TransitionEventInit(TransitionEventInit), unTransitionEventInit, noTransitionEventInit, gTypeTransitionEventInit
+  , TreeWalker(TreeWalker), unTreeWalker, noTreeWalker, gTypeTreeWalker
+  , UIEvent(UIEvent), unUIEvent, IsUIEvent, toUIEvent, noUIEvent, gTypeUIEvent
+  , UIEventInit(UIEventInit), unUIEventInit, IsUIEventInit, toUIEventInit, noUIEventInit, gTypeUIEventInit
+  , URL(URL), unURL, noURL, gTypeURL
+  , URLSearchParams(URLSearchParams), unURLSearchParams, noURLSearchParams, gTypeURLSearchParams
+  , UserMessageHandler(UserMessageHandler), unUserMessageHandler, noUserMessageHandler, gTypeUserMessageHandler
+  , UserMessageHandlersNamespace(UserMessageHandlersNamespace), unUserMessageHandlersNamespace, noUserMessageHandlersNamespace, gTypeUserMessageHandlersNamespace
+  , VTTCue(VTTCue), unVTTCue, noVTTCue, gTypeVTTCue
+  , VTTRegion(VTTRegion), unVTTRegion, noVTTRegion, gTypeVTTRegion
+  , VTTRegionList(VTTRegionList), unVTTRegionList, noVTTRegionList, gTypeVTTRegionList
+  , ValidityState(ValidityState), unValidityState, noValidityState, gTypeValidityState
+  , VideoPlaybackQuality(VideoPlaybackQuality), unVideoPlaybackQuality, noVideoPlaybackQuality, gTypeVideoPlaybackQuality
+  , VideoTrack(VideoTrack), unVideoTrack, noVideoTrack, gTypeVideoTrack
+  , VideoTrackList(VideoTrackList), unVideoTrackList, noVideoTrackList, gTypeVideoTrackList
+  , WaveShaperNode(WaveShaperNode), unWaveShaperNode, noWaveShaperNode, gTypeWaveShaperNode
+  , WebGL2RenderingContext(WebGL2RenderingContext), unWebGL2RenderingContext, noWebGL2RenderingContext, gTypeWebGL2RenderingContext
+  , WebGLActiveInfo(WebGLActiveInfo), unWebGLActiveInfo, noWebGLActiveInfo, gTypeWebGLActiveInfo
+  , WebGLBuffer(WebGLBuffer), unWebGLBuffer, noWebGLBuffer, gTypeWebGLBuffer
+  , WebGLCompressedTextureATC(WebGLCompressedTextureATC), unWebGLCompressedTextureATC, noWebGLCompressedTextureATC, gTypeWebGLCompressedTextureATC
+  , WebGLCompressedTexturePVRTC(WebGLCompressedTexturePVRTC), unWebGLCompressedTexturePVRTC, noWebGLCompressedTexturePVRTC, gTypeWebGLCompressedTexturePVRTC
+  , WebGLCompressedTextureS3TC(WebGLCompressedTextureS3TC), unWebGLCompressedTextureS3TC, noWebGLCompressedTextureS3TC, gTypeWebGLCompressedTextureS3TC
+  , WebGLContextAttributes(WebGLContextAttributes), unWebGLContextAttributes, noWebGLContextAttributes, gTypeWebGLContextAttributes
+  , WebGLContextEvent(WebGLContextEvent), unWebGLContextEvent, noWebGLContextEvent, gTypeWebGLContextEvent
+  , WebGLContextEventInit(WebGLContextEventInit), unWebGLContextEventInit, noWebGLContextEventInit, gTypeWebGLContextEventInit
+  , WebGLDebugRendererInfo(WebGLDebugRendererInfo), unWebGLDebugRendererInfo, noWebGLDebugRendererInfo, gTypeWebGLDebugRendererInfo
+  , WebGLDebugShaders(WebGLDebugShaders), unWebGLDebugShaders, noWebGLDebugShaders, gTypeWebGLDebugShaders
+  , WebGLDepthTexture(WebGLDepthTexture), unWebGLDepthTexture, noWebGLDepthTexture, gTypeWebGLDepthTexture
+  , WebGLDrawBuffers(WebGLDrawBuffers), unWebGLDrawBuffers, noWebGLDrawBuffers, gTypeWebGLDrawBuffers
+  , WebGLFramebuffer(WebGLFramebuffer), unWebGLFramebuffer, noWebGLFramebuffer, gTypeWebGLFramebuffer
+  , WebGLLoseContext(WebGLLoseContext), unWebGLLoseContext, noWebGLLoseContext, gTypeWebGLLoseContext
+  , WebGLProgram(WebGLProgram), unWebGLProgram, noWebGLProgram, gTypeWebGLProgram
+  , WebGLQuery(WebGLQuery), unWebGLQuery, noWebGLQuery, gTypeWebGLQuery
+  , WebGLRenderbuffer(WebGLRenderbuffer), unWebGLRenderbuffer, noWebGLRenderbuffer, gTypeWebGLRenderbuffer
+  , WebGLRenderingContext(WebGLRenderingContext), unWebGLRenderingContext, noWebGLRenderingContext, gTypeWebGLRenderingContext
+  , WebGLRenderingContextBase(WebGLRenderingContextBase), unWebGLRenderingContextBase, IsWebGLRenderingContextBase, toWebGLRenderingContextBase, noWebGLRenderingContextBase, gTypeWebGLRenderingContextBase
+  , WebGLSampler(WebGLSampler), unWebGLSampler, noWebGLSampler, gTypeWebGLSampler
+  , WebGLShader(WebGLShader), unWebGLShader, noWebGLShader, gTypeWebGLShader
+  , WebGLShaderPrecisionFormat(WebGLShaderPrecisionFormat), unWebGLShaderPrecisionFormat, noWebGLShaderPrecisionFormat, gTypeWebGLShaderPrecisionFormat
+  , WebGLSync(WebGLSync), unWebGLSync, noWebGLSync, gTypeWebGLSync
+  , WebGLTexture(WebGLTexture), unWebGLTexture, noWebGLTexture, gTypeWebGLTexture
+  , WebGLTransformFeedback(WebGLTransformFeedback), unWebGLTransformFeedback, noWebGLTransformFeedback, gTypeWebGLTransformFeedback
+  , WebGLUniformLocation(WebGLUniformLocation), unWebGLUniformLocation, noWebGLUniformLocation, gTypeWebGLUniformLocation
+  , WebGLVertexArrayObject(WebGLVertexArrayObject), unWebGLVertexArrayObject, noWebGLVertexArrayObject, gTypeWebGLVertexArrayObject
+  , WebGLVertexArrayObjectOES(WebGLVertexArrayObjectOES), unWebGLVertexArrayObjectOES, noWebGLVertexArrayObjectOES, gTypeWebGLVertexArrayObjectOES
+  , WebGPUBuffer(WebGPUBuffer), unWebGPUBuffer, noWebGPUBuffer, gTypeWebGPUBuffer
+  , WebGPUCommandBuffer(WebGPUCommandBuffer), unWebGPUCommandBuffer, noWebGPUCommandBuffer, gTypeWebGPUCommandBuffer
+  , WebGPUCommandQueue(WebGPUCommandQueue), unWebGPUCommandQueue, noWebGPUCommandQueue, gTypeWebGPUCommandQueue
+  , WebGPUComputeCommandEncoder(WebGPUComputeCommandEncoder), unWebGPUComputeCommandEncoder, noWebGPUComputeCommandEncoder, gTypeWebGPUComputeCommandEncoder
+  , WebGPUComputePipelineState(WebGPUComputePipelineState), unWebGPUComputePipelineState, noWebGPUComputePipelineState, gTypeWebGPUComputePipelineState
+  , WebGPUDepthStencilDescriptor(WebGPUDepthStencilDescriptor), unWebGPUDepthStencilDescriptor, noWebGPUDepthStencilDescriptor, gTypeWebGPUDepthStencilDescriptor
+  , WebGPUDepthStencilState(WebGPUDepthStencilState), unWebGPUDepthStencilState, noWebGPUDepthStencilState, gTypeWebGPUDepthStencilState
+  , WebGPUDrawable(WebGPUDrawable), unWebGPUDrawable, noWebGPUDrawable, gTypeWebGPUDrawable
+  , WebGPUFunction(WebGPUFunction), unWebGPUFunction, noWebGPUFunction, gTypeWebGPUFunction
+  , WebGPULibrary(WebGPULibrary), unWebGPULibrary, noWebGPULibrary, gTypeWebGPULibrary
+  , WebGPURenderCommandEncoder(WebGPURenderCommandEncoder), unWebGPURenderCommandEncoder, noWebGPURenderCommandEncoder, gTypeWebGPURenderCommandEncoder
+  , WebGPURenderPassAttachmentDescriptor(WebGPURenderPassAttachmentDescriptor), unWebGPURenderPassAttachmentDescriptor, IsWebGPURenderPassAttachmentDescriptor, toWebGPURenderPassAttachmentDescriptor, noWebGPURenderPassAttachmentDescriptor, gTypeWebGPURenderPassAttachmentDescriptor
+  , WebGPURenderPassColorAttachmentDescriptor(WebGPURenderPassColorAttachmentDescriptor), unWebGPURenderPassColorAttachmentDescriptor, noWebGPURenderPassColorAttachmentDescriptor, gTypeWebGPURenderPassColorAttachmentDescriptor
+  , WebGPURenderPassDepthAttachmentDescriptor(WebGPURenderPassDepthAttachmentDescriptor), unWebGPURenderPassDepthAttachmentDescriptor, noWebGPURenderPassDepthAttachmentDescriptor, gTypeWebGPURenderPassDepthAttachmentDescriptor
+  , WebGPURenderPassDescriptor(WebGPURenderPassDescriptor), unWebGPURenderPassDescriptor, noWebGPURenderPassDescriptor, gTypeWebGPURenderPassDescriptor
+  , WebGPURenderPipelineColorAttachmentDescriptor(WebGPURenderPipelineColorAttachmentDescriptor), unWebGPURenderPipelineColorAttachmentDescriptor, noWebGPURenderPipelineColorAttachmentDescriptor, gTypeWebGPURenderPipelineColorAttachmentDescriptor
+  , WebGPURenderPipelineDescriptor(WebGPURenderPipelineDescriptor), unWebGPURenderPipelineDescriptor, noWebGPURenderPipelineDescriptor, gTypeWebGPURenderPipelineDescriptor
+  , WebGPURenderPipelineState(WebGPURenderPipelineState), unWebGPURenderPipelineState, noWebGPURenderPipelineState, gTypeWebGPURenderPipelineState
+  , WebGPURenderingContext(WebGPURenderingContext), unWebGPURenderingContext, noWebGPURenderingContext, gTypeWebGPURenderingContext
+  , WebGPUSize(WebGPUSize), unWebGPUSize, noWebGPUSize, gTypeWebGPUSize
+  , WebGPUTexture(WebGPUTexture), unWebGPUTexture, noWebGPUTexture, gTypeWebGPUTexture
+  , WebGPUTextureDescriptor(WebGPUTextureDescriptor), unWebGPUTextureDescriptor, noWebGPUTextureDescriptor, gTypeWebGPUTextureDescriptor
+  , WebKitAnimationEvent(WebKitAnimationEvent), unWebKitAnimationEvent, noWebKitAnimationEvent, gTypeWebKitAnimationEvent
+  , WebKitAnimationEventInit(WebKitAnimationEventInit), unWebKitAnimationEventInit, noWebKitAnimationEventInit, gTypeWebKitAnimationEventInit
+  , WebKitCSSMatrix(WebKitCSSMatrix), unWebKitCSSMatrix, noWebKitCSSMatrix, gTypeWebKitCSSMatrix
+  , WebKitCSSRegionRule(WebKitCSSRegionRule), unWebKitCSSRegionRule, noWebKitCSSRegionRule, gTypeWebKitCSSRegionRule
+  , WebKitCSSViewportRule(WebKitCSSViewportRule), unWebKitCSSViewportRule, noWebKitCSSViewportRule, gTypeWebKitCSSViewportRule
+  , WebKitMediaKeyError(WebKitMediaKeyError), unWebKitMediaKeyError, noWebKitMediaKeyError, gTypeWebKitMediaKeyError
+  , WebKitMediaKeyMessageEvent(WebKitMediaKeyMessageEvent), unWebKitMediaKeyMessageEvent, noWebKitMediaKeyMessageEvent, gTypeWebKitMediaKeyMessageEvent
+  , WebKitMediaKeyMessageEventInit(WebKitMediaKeyMessageEventInit), unWebKitMediaKeyMessageEventInit, noWebKitMediaKeyMessageEventInit, gTypeWebKitMediaKeyMessageEventInit
+  , WebKitMediaKeyNeededEvent(WebKitMediaKeyNeededEvent), unWebKitMediaKeyNeededEvent, noWebKitMediaKeyNeededEvent, gTypeWebKitMediaKeyNeededEvent
+  , WebKitMediaKeyNeededEventInit(WebKitMediaKeyNeededEventInit), unWebKitMediaKeyNeededEventInit, noWebKitMediaKeyNeededEventInit, gTypeWebKitMediaKeyNeededEventInit
+  , WebKitMediaKeySession(WebKitMediaKeySession), unWebKitMediaKeySession, noWebKitMediaKeySession, gTypeWebKitMediaKeySession
+  , WebKitMediaKeys(WebKitMediaKeys), unWebKitMediaKeys, noWebKitMediaKeys, gTypeWebKitMediaKeys
+  , WebKitNamedFlow(WebKitNamedFlow), unWebKitNamedFlow, noWebKitNamedFlow, gTypeWebKitNamedFlow
+  , WebKitNamespace(WebKitNamespace), unWebKitNamespace, noWebKitNamespace, gTypeWebKitNamespace
+  , WebKitPlaybackTargetAvailabilityEvent(WebKitPlaybackTargetAvailabilityEvent), unWebKitPlaybackTargetAvailabilityEvent, noWebKitPlaybackTargetAvailabilityEvent, gTypeWebKitPlaybackTargetAvailabilityEvent
+  , WebKitPlaybackTargetAvailabilityEventInit(WebKitPlaybackTargetAvailabilityEventInit), unWebKitPlaybackTargetAvailabilityEventInit, noWebKitPlaybackTargetAvailabilityEventInit, gTypeWebKitPlaybackTargetAvailabilityEventInit
+  , WebKitPoint(WebKitPoint), unWebKitPoint, noWebKitPoint, gTypeWebKitPoint
+  , WebKitSubtleCrypto(WebKitSubtleCrypto), unWebKitSubtleCrypto, noWebKitSubtleCrypto, gTypeWebKitSubtleCrypto
+  , WebKitTransitionEvent(WebKitTransitionEvent), unWebKitTransitionEvent, noWebKitTransitionEvent, gTypeWebKitTransitionEvent
+  , WebKitTransitionEventInit(WebKitTransitionEventInit), unWebKitTransitionEventInit, noWebKitTransitionEventInit, gTypeWebKitTransitionEventInit
+  , WebSocket(WebSocket), unWebSocket, noWebSocket, gTypeWebSocket
+  , WheelEvent(WheelEvent), unWheelEvent, noWheelEvent, gTypeWheelEvent
+  , WheelEventInit(WheelEventInit), unWheelEventInit, noWheelEventInit, gTypeWheelEventInit
+  , Window(Window), unWindow, noWindow, gTypeWindow
+  , WindowEventHandlers(WindowEventHandlers), unWindowEventHandlers, IsWindowEventHandlers, toWindowEventHandlers, noWindowEventHandlers, gTypeWindowEventHandlers
+  , WindowOrWorkerGlobalScope(WindowOrWorkerGlobalScope), unWindowOrWorkerGlobalScope, IsWindowOrWorkerGlobalScope, toWindowOrWorkerGlobalScope, noWindowOrWorkerGlobalScope, gTypeWindowOrWorkerGlobalScope
+  , Worker(Worker), unWorker, noWorker, gTypeWorker
+  , WorkerGlobalScope(WorkerGlobalScope), unWorkerGlobalScope, IsWorkerGlobalScope, toWorkerGlobalScope, noWorkerGlobalScope, gTypeWorkerGlobalScope
+  , WorkerLocation(WorkerLocation), unWorkerLocation, noWorkerLocation, gTypeWorkerLocation
+  , WorkerNavigator(WorkerNavigator), unWorkerNavigator, noWorkerNavigator, gTypeWorkerNavigator
+  , WritableStream(WritableStream), unWritableStream, noWritableStream, gTypeWritableStream
+  , XMLDocument(XMLDocument), unXMLDocument, noXMLDocument, gTypeXMLDocument
+  , XMLHttpRequest(XMLHttpRequest), unXMLHttpRequest, noXMLHttpRequest, gTypeXMLHttpRequest
+  , XMLHttpRequestEventTarget(XMLHttpRequestEventTarget), unXMLHttpRequestEventTarget, IsXMLHttpRequestEventTarget, toXMLHttpRequestEventTarget, noXMLHttpRequestEventTarget, gTypeXMLHttpRequestEventTarget
+  , XMLHttpRequestProgressEvent(XMLHttpRequestProgressEvent), unXMLHttpRequestProgressEvent, noXMLHttpRequestProgressEvent, gTypeXMLHttpRequestProgressEvent
+  , XMLHttpRequestUpload(XMLHttpRequestUpload), unXMLHttpRequestUpload, noXMLHttpRequestUpload, gTypeXMLHttpRequestUpload
+  , XMLSerializer(XMLSerializer), unXMLSerializer, noXMLSerializer, gTypeXMLSerializer
+  , XPathEvaluator(XPathEvaluator), unXPathEvaluator, noXPathEvaluator, gTypeXPathEvaluator
+  , XPathException(XPathException), unXPathException, noXPathException, gTypeXPathException
+  , XPathExpression(XPathExpression), unXPathExpression, noXPathExpression, gTypeXPathExpression
+  , XPathNSResolver(XPathNSResolver), unXPathNSResolver, noXPathNSResolver, gTypeXPathNSResolver
+  , XPathResult(XPathResult), unXPathResult, noXPathResult, gTypeXPathResult
+  , XSLTProcessor(XSLTProcessor), unXSLTProcessor, noXSLTProcessor, gTypeXSLTProcessor
+-- AUTO GENERATION ENDS HERE
+  ) where
+
+import Control.Applicative ((<$>))
+import qualified Data.Text as T (unpack, Text)
+import qualified Data.Text.Lazy as LT (Text)
+import Data.JSString (pack, unpack)
+import Data.JSString.Text (textToJSString, textFromJSString, lazyTextToJSString, lazyTextFromJSString)
+import GHCJS.Types (JSVal(..), jsval, nullRef, isNull, isUndefined, JSString(..))
+import GHCJS.Marshal (ToJSVal(..), FromJSVal(..))
+import GHCJS.Marshal.Pure (PToJSVal(..), PFromJSVal(..))
+import GHCJS.Nullable (Nullable(..), nullableToMaybe, maybeToNullable)
+import GHCJS.Foreign (jsUndefined)
+import GHC.JS.Foreign.Callback (Callback(..))
+import Control.Monad.IO.Class (MonadIO(..))
+import Data.Int (Int8, Int16, Int32, Int64)
+import Data.Word (Word8, Word16, Word32, Word64)
+import Data.Coerce (coerce, Coercible)
+import Data.Monoid ((<>))
+import Data.Typeable (Typeable)
+import Control.Monad (unless)
+import Control.Exception (throwIO, Exception(..))
+#if MIN_VERSION_base(4,9,0)
+import GHC.Stack (HasCallStack)
+#else
+import GHC.Exts (Constraint)
+type HasCallStack = (() :: Constraint)
+#endif
+
+-- | Identifies a JavaScript execution context.
+--   When using GHCJS this is just '()' since their is only one context.
+--   When using GHC it includes the functions JSaddle needs to communicate
+--   with the JavaScript context.
+type JSContextRef = ()
+
+-- | This is the same as 'JSContextRef' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type DOMContext = ()
+
+-- | The 'JSM' monad keeps track of the JavaScript execution context.
+--
+--   When using GHCJS it is `IO`.
+--
+--   Given a 'JSM' function and a 'JSContextRef' you can run the
+--   function like this...
+--
+-- > runJSM jsmFunction javaScriptContext
+type JSM = IO
+
+-- | This is the same as 'JSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type DOM = IO
+
+-- | The 'MonadJSM' is to 'JSM' what 'MonadIO' is to 'IO'.
+--   When using GHCJS it is 'MonadIO'.
+type MonadJSM = MonadIO
+
+-- | This is the same as 'MonadJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+type MonadDOM = MonadIO
+
+-- | The 'liftJSM' is to 'JSM' what 'liftIO' is to 'IO'.
+--   When using GHCJS it is 'liftIO'.
+liftJSM :: MonadJSM m => JSM a -> m a
+liftJSM = liftIO
+
+-- | This is the same as 'liftJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+liftDOM :: MonadDOM m => DOM a -> m a
+liftDOM = liftIO
+
+-- | Gets the JavaScript context from the monad
+askJSM :: MonadJSM m => m JSContextRef
+askJSM = return ()
+
+-- | This is the same as 'askJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+askDOM :: MonadDOM m => m DOMContext
+askDOM = return ()
+
+-- | Runs a 'JSM' JavaScript function in a given JavaScript context.
+runJSM :: MonadIO m => JSM a -> JSContextRef -> m a
+runJSM f = liftIO . const f
+
+-- | This is the same as 'runJSM' except when using ghcjs-dom-webkit with GHC (instead of ghcjs-dom-jsaddle)
+runDOM :: MonadIO m => DOM a -> DOMContext -> m a
+runDOM f = liftIO . const f
+
+maybeJSNullOrUndefined :: JSVal -> Maybe JSVal
+maybeJSNullOrUndefined r | isNull r || isUndefined r = Nothing
+maybeJSNullOrUndefined r = Just r
+
+-- | Like `Nullabble` but `maybeToOptional` converts `Nothing` to `jsUndefined`.
+newtype Optional a = Optional JSVal
+
+maybeToOptional :: PToJSVal a => Maybe a -> Optional a
+maybeToOptional Nothing = Optional jsUndefined
+maybeToOptional (Just x) = Optional (pToJSVal x)
+{-# INLINE maybeToOptional #-}
+
+propagateGError = id
+
+newtype GType = GType JSVal
+
+foreign import javascript unsafe "$r = $1.name;" gTypeToString :: GType -> JSString
+
+foreign import javascript unsafe
+  "$1===$2" js_eq :: JSVal -> JSVal -> Bool
+
+strictEqual :: (ToJSVal a, ToJSVal b) => a -> b -> JSM Bool
+strictEqual a b = do
+    aval <- toJSVal a
+    bval <- toJSVal b
+    return $ js_eq aval bval
+
+foreign import javascript unsafe "h$isInstanceOf $1 $2"
+    typeInstanceIsA' :: JSVal -> JSVal -> Bool
+
+typeInstanceIsA o (GType t) = typeInstanceIsA' o t
+
+-- | Safe but slow way to cast
+--
+-- > castTo Element x >>= \case
+-- >     Nothing      -> error "Was not an element"
+-- >     Just element -> ...
+castTo :: forall obj obj' m. (Coercible obj JSVal, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m (Maybe obj')
+castTo constructor obj = liftJSM $ do
+  let gtype = typeGType (undefined :: obj')
+      jsval = coerce obj
+  if typeInstanceIsA jsval gtype
+    then return . Just $ constructor jsval
+    else return Nothing
+
+-- | Unsafe way to cast.  Slow but if it fails an error message will
+--   result and the message should be clear (uses HasCallStack).
+--
+-- > element <- unsafeCastTo Element x
+unsafeCastTo :: forall obj obj' m. (HasCallStack, Coercible obj JSVal, IsGObject obj', MonadJSM m) => (JSVal -> obj') -> obj -> m obj'
+unsafeCastTo constructor obj = liftJSM $ do
+  let gtype = typeGType (undefined :: obj')
+      jsval = coerce obj
+  if typeInstanceIsA jsval gtype
+    then return $ constructor jsval
+    else do
+      let destType = textFromJSString . gTypeToString $ typeGType (undefined :: obj')
+      error $ "unsafeCastTo :: invalid conversion to "
+        <> T.unpack destType <> " requested."
+
+-- | Unsafe way to cast, super fast but if it fails you program
+--   will probably crash later on in some unpredictable way.
+--
+-- > element <- uncheckedCastTo Element x
+uncheckedCastTo :: (Coercible obj JSVal, IsGObject obj') => (JSVal -> obj') -> obj -> obj'
+uncheckedCastTo constructor = constructor . coerce
+
+-- | Determine if this is an instance of a particular type
+--
+isA :: IsGObject o => o -> GType -> Bool
+isA obj = typeInstanceIsA (unGObject $ toGObject obj)
+
+newtype GObject = GObject { unGObject :: JSVal }
+noGObject :: Maybe GObject
+noGObject = Nothing
+{-# INLINE noGObject #-}
+
+class (ToJSVal o, FromJSVal o, Coercible o JSVal) => IsGObject o where
+  -- | Given object get the GType of the type.  The actual argument
+  --   passed in is ignored.
+  typeGType :: o -> GType
+
+-- | Safe upcast.
+toGObject :: IsGObject o => o -> GObject
+toGObject = GObject . coerce
+
+instance PToJSVal GObject where
+  pToJSVal = unGObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GObject where
+  pFromJSVal = GObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GObject where
+  toJSVal = return . unGObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GObject where
+  fromJSVal = return . fmap GObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+--instance IsGObject o => PToJSVal o where
+--  pToJSVal = unGObject . toGObject
+--  {-# INLINE pToJSVal #-}
+--
+--instance IsGObject o => PFromJSVal o where
+--  pFromJSVal = unsafeCastGObject . GObject . castRef
+--  {-# INLINE pFromJSVal #-}
+--
+--instance IsGObject o => ToJSVal o where
+--  toJSVal = return . unGObject . toGObject
+--  {-# INLINE toJSVal #-}
+--
+--instance IsGObject o => FromJSVal o where
+--  fromJSVal = return . fmap (unsafeCastGObject . GObject . castRef) . maybeJSNullOrUndefined
+--  {-# INLINE fromJSVal #-}
+
+instance IsGObject GObject where
+  typeGType _ = gTypeGObject
+  {-# INLINE typeGType #-}
+
+castToGObject :: IsGObject obj => obj -> IO obj
+castToGObject = return
+
+foreign import javascript unsafe "Object" gTypeGObject :: GType
+
+foreign import javascript unsafe "$1[\"toString\"]()" js_objectToString :: GObject -> IO JSString
+
+objectToString :: (MonadIO m, IsGObject self, FromJSString result) => self -> m result
+objectToString self = liftIO (fromJSString <$> js_objectToString (toGObject self))
+
+-- | Fastest string type to use when you just
+--   want to take a string from the DOM then
+--   give it back as is.
+type DOMString = JSString
+noDOMString :: Maybe DOMString
+noDOMString = Nothing
+{-# INLINE noDOMString #-}
+type CSSOMString = JSString
+noCSSOMString :: Maybe CSSOMString
+noCSSOMString = Nothing
+{-# INLINE noCSSOMString #-}
+type USVString = JSString
+noUSVString :: Maybe USVString
+noUSVString = Nothing
+{-# INLINE noUSVString #-}
+type ByteString = JSString
+noByteString :: Maybe ByteString
+noByteString = Nothing
+{-# INLINE noByteString #-}
+
+class (PToJSVal a, ToJSVal a) => ToJSString a
+class (PFromJSVal a, FromJSVal a) => FromJSString a
+
+toJSString :: ToJSString a => a -> JSString
+toJSString = pFromJSVal . pToJSVal
+{-# INLINE toJSString #-}
+
+fromJSString :: FromJSString a => JSString -> a
+fromJSString = pFromJSVal . pToJSVal
+{-# INLINE fromJSString #-}
+
+toMaybeJSString :: ToJSString a => Maybe a -> Nullable JSString
+toMaybeJSString = Nullable . pToJSVal
+{-# INLINE toMaybeJSString #-}
+
+toOptionalJSString :: ToJSString a => Maybe a -> Optional JSString
+toOptionalJSString Nothing = Optional jsUndefined
+toOptionalJSString (Just a) = Optional (pToJSVal a)
+{-# INLINE toOptionalJSString #-}
+
+fromMaybeJSString :: FromJSString a => Nullable JSString -> Maybe a
+fromMaybeJSString (Nullable r) = pFromJSVal r
+{-# INLINE fromMaybeJSString #-}
+
+instance ToJSString   [Char]
+instance FromJSString [Char]
+instance ToJSString   T.Text
+instance FromJSString T.Text
+instance ToJSString   JSString
+instance FromJSString JSString
+
+noJSString :: Maybe JSString
+noJSString = Nothing
+{-# INLINE noJSString #-}
+
+type ToDOMString s = ToJSString s
+type FromDOMString s = FromJSString s
+type IsDOMString s = (ToDOMString s, FromDOMString s)
+type IsCSSOMString s = (ToDOMString s, FromDOMString s)
+type IsUSVString s = (ToDOMString s, FromDOMString s)
+type IsByteString s = (ToDOMString s, FromDOMString s)
+
+newtype RawTypedArray = RawTypedArray { unRawTypedArray :: JSVal }
+noRawTypedArray :: Maybe RawTypedArray
+noRawTypedArray = Nothing
+{-# INLINE noRawTypedArray #-}
+
+instance PToJSVal RawTypedArray where
+  pToJSVal = unRawTypedArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RawTypedArray where
+  pFromJSVal = RawTypedArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RawTypedArray where
+  toJSVal = return . unRawTypedArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RawTypedArray where
+  fromJSVal = return . fmap RawTypedArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRawTypedArray o
+
+toRawTypedArray :: IsRawTypedArray o => o -> RawTypedArray
+toRawTypedArray = RawTypedArray . coerce
+
+newtype Function = Function { unFunction :: JSVal }
+noFunction :: Maybe Function
+noFunction = Nothing
+{-# INLINE noFunction #-}
+
+instance PToJSVal Function where
+  pToJSVal = unFunction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Function where
+  pFromJSVal = Function
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Function where
+  toJSVal = return . unFunction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Function where
+  fromJSVal = return . fmap Function . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsFunction o
+
+toFunction :: IsFunction o => o -> Function
+toFunction = Function . coerce
+
+instance IsFunction Function
+
+-- Promise
+newtype PromiseRejected = PromiseRejected { rejectionReason :: JSVal } deriving (Typeable)
+noPromiseRejected :: Maybe PromiseRejected
+noPromiseRejected = Nothing
+{-# INLINE noPromiseRejected #-}
+
+maybeThrowPromiseRejected :: JSVal -> IO ()
+maybeThrowPromiseRejected e = unless (isNull e) $ throwIO (PromiseRejected e)
+{-# INLINE maybeThrowPromiseRejected #-}
+
+checkPromiseResult :: (JSVal, a) -> IO a
+checkPromiseResult (e, a) = maybeThrowPromiseRejected e >> return a
+{-# INLINE checkPromiseResult #-}
+
+instance Show PromiseRejected where
+    show _ = "A promise was rejected"
+instance Exception PromiseRejected
+
+-- Callbacks
+newtype AudioBufferCallback = AudioBufferCallback (Callback (JSVal -> IO ()))
+noAudioBufferCallback :: Maybe AudioBufferCallback
+noAudioBufferCallback = Nothing
+{-# INLINE noAudioBufferCallback #-}
+instance PToJSVal AudioBufferCallback where pToJSVal (AudioBufferCallback r) = jsval r
+newtype BlobCallback = BlobCallback (Callback (JSVal -> IO ()))
+noBlobCallback :: Maybe BlobCallback
+noBlobCallback = Nothing
+{-# INLINE noBlobCallback #-}
+instance ToJSVal BlobCallback where toJSVal (BlobCallback r) = pure (jsval r)
+newtype DatabaseCallback = DatabaseCallback (Callback (JSVal -> IO ()))
+noDatabaseCallback :: Maybe DatabaseCallback
+noDatabaseCallback = Nothing
+{-# INLINE noDatabaseCallback #-}
+instance PToJSVal DatabaseCallback where pToJSVal (DatabaseCallback r) = jsval r
+newtype IntersectionObserverCallback = IntersectionObserverCallback (Callback (JSVal -> JSVal -> IO ()))
+noIntersectionObserverCallback :: Maybe IntersectionObserverCallback
+noIntersectionObserverCallback = Nothing
+{-# INLINE noIntersectionObserverCallback #-}
+instance PToJSVal IntersectionObserverCallback where pToJSVal (IntersectionObserverCallback r) = jsval r
+newtype MediaQueryListListener = MediaQueryListListener (Callback (JSVal -> IO ()))
+noMediaQueryListListener :: Maybe MediaQueryListListener
+noMediaQueryListListener = Nothing
+{-# INLINE noMediaQueryListListener #-}
+instance PToJSVal MediaQueryListListener where pToJSVal (MediaQueryListListener r) = jsval r
+newtype MediaStreamTrackSourcesCallback = MediaStreamTrackSourcesCallback (Callback (JSVal -> IO ()))
+noMediaStreamTrackSourcesCallback :: Maybe MediaStreamTrackSourcesCallback
+noMediaStreamTrackSourcesCallback = Nothing
+{-# INLINE noMediaStreamTrackSourcesCallback #-}
+instance PToJSVal MediaStreamTrackSourcesCallback where pToJSVal (MediaStreamTrackSourcesCallback r) = jsval r
+newtype NavigatorUserMediaErrorCallback = NavigatorUserMediaErrorCallback (Callback (JSVal -> IO ()))
+noNavigatorUserMediaErrorCallback :: Maybe NavigatorUserMediaErrorCallback
+noNavigatorUserMediaErrorCallback = Nothing
+{-# INLINE noNavigatorUserMediaErrorCallback #-}
+instance PToJSVal NavigatorUserMediaErrorCallback where pToJSVal (NavigatorUserMediaErrorCallback r) = jsval r
+newtype NavigatorUserMediaSuccessCallback = NavigatorUserMediaSuccessCallback (Callback (JSVal -> IO ()))
+noNavigatorUserMediaSuccessCallback :: Maybe NavigatorUserMediaSuccessCallback
+noNavigatorUserMediaSuccessCallback = Nothing
+{-# INLINE noNavigatorUserMediaSuccessCallback #-}
+instance PToJSVal NavigatorUserMediaSuccessCallback where pToJSVal (NavigatorUserMediaSuccessCallback r) = jsval r
+newtype NotificationPermissionCallback permissions = NotificationPermissionCallback (Callback (JSVal -> IO ()))
+instance PToJSVal (NotificationPermissionCallback permissions) where pToJSVal (NotificationPermissionCallback r) = jsval r
+newtype NodeFilter = NodeFilter (Callback (JSVal -> IO ()))
+noNodeFilter :: Maybe NodeFilter
+noNodeFilter = Nothing
+{-# INLINE noNodeFilter #-}
+instance PToJSVal NodeFilter where pToJSVal (NodeFilter r) = jsval r
+newtype PositionCallback = PositionCallback (Callback (JSVal -> IO ()))
+noPositionCallback :: Maybe PositionCallback
+noPositionCallback = Nothing
+{-# INLINE noPositionCallback #-}
+instance PToJSVal PositionCallback where pToJSVal (PositionCallback r) = jsval r
+newtype PositionErrorCallback = PositionErrorCallback (Callback (JSVal -> IO ()))
+noPositionErrorCallback :: Maybe PositionErrorCallback
+noPositionErrorCallback = Nothing
+{-# INLINE noPositionErrorCallback #-}
+instance PToJSVal PositionErrorCallback where pToJSVal (PositionErrorCallback r) = jsval r
+newtype PerformanceObserverCallback = PerformanceObserverCallback (Callback (JSVal -> JSVal -> IO ()))
+noPerformanceObserverCallback :: Maybe PerformanceObserverCallback
+noPerformanceObserverCallback = Nothing
+{-# INLINE noPerformanceObserverCallback #-}
+instance PToJSVal PerformanceObserverCallback where pToJSVal (PerformanceObserverCallback r) = jsval r
+newtype RequestAnimationFrameCallback = RequestAnimationFrameCallback (Callback (JSVal -> IO ()))
+noRequestAnimationFrameCallback :: Maybe RequestAnimationFrameCallback
+noRequestAnimationFrameCallback = Nothing
+{-# INLINE noRequestAnimationFrameCallback #-}
+instance PToJSVal RequestAnimationFrameCallback where pToJSVal (RequestAnimationFrameCallback r) = jsval r
+newtype RTCPeerConnectionErrorCallback = RTCPeerConnectionErrorCallback (Callback (JSVal -> IO ()))
+noRTCPeerConnectionErrorCallback :: Maybe RTCPeerConnectionErrorCallback
+noRTCPeerConnectionErrorCallback = Nothing
+{-# INLINE noRTCPeerConnectionErrorCallback #-}
+instance PToJSVal RTCPeerConnectionErrorCallback where pToJSVal (RTCPeerConnectionErrorCallback r) = jsval r
+newtype RTCSessionDescriptionCallback = RTCSessionDescriptionCallback (Callback (JSVal -> IO ()))
+noRTCSessionDescriptionCallback :: Maybe RTCSessionDescriptionCallback
+noRTCSessionDescriptionCallback = Nothing
+{-# INLINE noRTCSessionDescriptionCallback #-}
+instance PToJSVal RTCSessionDescriptionCallback where pToJSVal (RTCSessionDescriptionCallback r) = jsval r
+newtype RTCStatsCallback = RTCStatsCallback (Callback (JSVal -> IO ()))
+noRTCStatsCallback :: Maybe RTCStatsCallback
+noRTCStatsCallback = Nothing
+{-# INLINE noRTCStatsCallback #-}
+instance PToJSVal RTCStatsCallback where pToJSVal (RTCStatsCallback r) = jsval r
+newtype SQLStatementCallback = SQLStatementCallback (Callback (JSVal -> JSVal -> IO ()))
+noSQLStatementCallback :: Maybe SQLStatementCallback
+noSQLStatementCallback = Nothing
+{-# INLINE noSQLStatementCallback #-}
+instance PToJSVal SQLStatementCallback where pToJSVal (SQLStatementCallback r) = jsval r
+newtype SQLStatementErrorCallback = SQLStatementErrorCallback (Callback (JSVal -> JSVal -> IO ()))
+noSQLStatementErrorCallback :: Maybe SQLStatementErrorCallback
+noSQLStatementErrorCallback = Nothing
+{-# INLINE noSQLStatementErrorCallback #-}
+instance PToJSVal SQLStatementErrorCallback where pToJSVal (SQLStatementErrorCallback r) = jsval r
+newtype SQLTransactionCallback = SQLTransactionCallback (Callback (JSVal -> IO ()))
+noSQLTransactionCallback :: Maybe SQLTransactionCallback
+noSQLTransactionCallback = Nothing
+{-# INLINE noSQLTransactionCallback #-}
+instance PToJSVal SQLTransactionCallback where pToJSVal (SQLTransactionCallback r) = jsval r
+newtype SQLTransactionErrorCallback = SQLTransactionErrorCallback (Callback (JSVal -> IO ()))
+noSQLTransactionErrorCallback :: Maybe SQLTransactionErrorCallback
+noSQLTransactionErrorCallback = Nothing
+{-# INLINE noSQLTransactionErrorCallback #-}
+instance PToJSVal SQLTransactionErrorCallback where pToJSVal (SQLTransactionErrorCallback r) = jsval r
+newtype StorageErrorCallback = StorageErrorCallback (Callback (JSVal -> IO ()))
+noStorageErrorCallback :: Maybe StorageErrorCallback
+noStorageErrorCallback = Nothing
+{-# INLINE noStorageErrorCallback #-}
+instance PToJSVal StorageErrorCallback where pToJSVal (StorageErrorCallback r) = jsval r
+newtype StorageQuotaCallback = StorageQuotaCallback (Callback (JSVal -> IO ()))
+noStorageQuotaCallback :: Maybe StorageQuotaCallback
+noStorageQuotaCallback = Nothing
+{-# INLINE noStorageQuotaCallback #-}
+instance PToJSVal StorageQuotaCallback where pToJSVal (StorageQuotaCallback r) = jsval r
+newtype StorageUsageCallback = StorageUsageCallback (Callback (JSVal -> JSVal -> IO ()))
+noStorageUsageCallback :: Maybe StorageUsageCallback
+noStorageUsageCallback = Nothing
+{-# INLINE noStorageUsageCallback #-}
+instance PToJSVal StorageUsageCallback where pToJSVal (StorageUsageCallback r) = jsval r
+newtype StringCallback s = StringCallback (Callback (JSVal -> IO ()))
+instance PToJSVal (StringCallback s) where pToJSVal (StringCallback r) = jsval r
+newtype VoidCallback = VoidCallback (Callback (IO ()))
+noVoidCallback :: Maybe VoidCallback
+noVoidCallback = Nothing
+{-# INLINE noVoidCallback #-}
+instance PToJSVal VoidCallback where pToJSVal (VoidCallback r) = jsval r
+
+-- Custom types
+type DOMHighResTimeStamp = Double
+noDOMHighResTimeStamp :: Maybe DOMHighResTimeStamp
+noDOMHighResTimeStamp = Nothing
+{-# INLINE noDOMHighResTimeStamp #-}
+type PerformanceEntryList = [PerformanceEntry]
+noPerformanceEntryList :: Maybe PerformanceEntryList
+noPerformanceEntryList = Nothing
+{-# INLINE noPerformanceEntryList #-}
+
+-- Record Type
+newtype Record key value = Record { unRecord :: JSVal }
+
+instance PToJSVal (Record key value) where
+  pToJSVal = unRecord
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal (Record key value) where
+  pFromJSVal = Record
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal (Record key value) where
+  toJSVal = return . unRecord
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal (Record key value) where
+  fromJSVal = return . fmap Record . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+newtype SerializedScriptValue = SerializedScriptValue { unSerializedScriptValue :: JSVal }
+noSerializedScriptValue :: Maybe SerializedScriptValue
+noSerializedScriptValue = Nothing
+{-# INLINE noSerializedScriptValue #-}
+
+instance Eq SerializedScriptValue where
+  (SerializedScriptValue a) == (SerializedScriptValue b) = js_eq a b
+
+instance PToJSVal SerializedScriptValue where
+  pToJSVal = unSerializedScriptValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SerializedScriptValue where
+  pFromJSVal = SerializedScriptValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SerializedScriptValue where
+  toJSVal = return . unSerializedScriptValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SerializedScriptValue where
+  fromJSVal = return . fmap SerializedScriptValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsSerializedScriptValue o
+toSerializedScriptValue :: IsSerializedScriptValue o => o -> SerializedScriptValue
+toSerializedScriptValue = SerializedScriptValue . coerce
+
+instance IsSerializedScriptValue SerializedScriptValue
+instance IsGObject SerializedScriptValue where
+  typeGType _ = error "Unable to get the JavaScript type of SerializedScriptValue"
+
+newtype Dictionary = Dictionary { unDictionary :: JSVal }
+noDictionary :: Maybe Dictionary
+noDictionary = Nothing
+{-# INLINE noDictionary #-}
+
+instance Eq Dictionary where
+  (Dictionary a) == (Dictionary b) = js_eq a b
+
+instance PToJSVal Dictionary where
+  pToJSVal = unDictionary
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Dictionary where
+  pFromJSVal = Dictionary
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Dictionary where
+  toJSVal = return . unDictionary
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Dictionary where
+  fromJSVal = return . fmap Dictionary . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDictionary o
+toDictionary :: IsDictionary o => o -> Dictionary
+toDictionary = Dictionary . coerce
+
+instance IsDictionary Dictionary
+instance IsGObject Dictionary where
+  typeGType _ = error "Unable to get the JavaScript type of Dictionary"
+
+newtype MutationCallback = MutationCallback { unMutationCallback :: JSVal }
+noMutationCallback :: Maybe MutationCallback
+noMutationCallback = Nothing
+{-# INLINE noMutationCallback #-}
+
+instance Eq MutationCallback where
+  (MutationCallback a) == (MutationCallback b) = js_eq a b
+
+instance PToJSVal MutationCallback where
+  pToJSVal = unMutationCallback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationCallback where
+  pFromJSVal = MutationCallback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationCallback where
+  toJSVal = return . unMutationCallback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationCallback where
+  fromJSVal = return . fmap MutationCallback . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsMutationCallback o
+toMutationCallback :: IsMutationCallback o => o -> MutationCallback
+toMutationCallback = MutationCallback . coerce
+
+instance IsMutationCallback MutationCallback
+instance IsGObject MutationCallback where
+  typeGType _ = error "Unable to get the JavaScript type of MutationCallback"
+
+newtype ArrayBuffer = ArrayBuffer { unArrayBuffer :: JSVal }
+noArrayBuffer :: Maybe ArrayBuffer
+noArrayBuffer = Nothing
+{-# INLINE noArrayBuffer #-}
+
+instance Eq ArrayBuffer where
+  (ArrayBuffer a) == (ArrayBuffer b) = js_eq a b
+
+instance PToJSVal ArrayBuffer where
+  pToJSVal = unArrayBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBuffer where
+  pFromJSVal = ArrayBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBuffer where
+  toJSVal = return . unArrayBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBuffer where
+  fromJSVal = return . fmap ArrayBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBuffer o
+toArrayBuffer :: IsArrayBuffer o => o -> ArrayBuffer
+toArrayBuffer = ArrayBuffer . coerce
+
+instance IsArrayBuffer ArrayBuffer
+instance IsGObject ArrayBuffer where
+  typeGType _ = gTypeArrayBuffer
+
+foreign import javascript unsafe "window[\"ArrayBuffer\"]" gTypeArrayBuffer :: GType
+
+newtype Float32Array = Float32Array { unFloat32Array :: JSVal }
+noFloat32Array :: Maybe Float32Array
+noFloat32Array = Nothing
+{-# INLINE noFloat32Array #-}
+
+instance Eq Float32Array where
+  (Float32Array a) == (Float32Array b) = js_eq a b
+
+instance PToJSVal Float32Array where
+  pToJSVal = unFloat32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float32Array where
+  pFromJSVal = Float32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float32Array where
+  toJSVal = return . unFloat32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float32Array where
+  fromJSVal = return . fmap Float32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat32Array o
+toFloat32Array :: IsFloat32Array o => o -> Float32Array
+toFloat32Array = Float32Array . coerce
+
+instance IsFloat32Array Float32Array
+instance IsGObject Float32Array where
+  typeGType _ = gTypeFloat32Array
+
+foreign import javascript unsafe "window[\"Float32Array\"]" gTypeFloat32Array :: GType
+
+newtype Float64Array = Float64Array { unFloat64Array :: JSVal }
+noFloat64Array :: Maybe Float64Array
+noFloat64Array = Nothing
+{-# INLINE noFloat64Array #-}
+
+instance Eq Float64Array where
+  (Float64Array a) == (Float64Array b) = js_eq a b
+
+instance PToJSVal Float64Array where
+  pToJSVal = unFloat64Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float64Array where
+  pFromJSVal = Float64Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float64Array where
+  toJSVal = return . unFloat64Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float64Array where
+  fromJSVal = return . fmap Float64Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsFloat64Array o
+toFloat64Array :: IsFloat64Array o => o -> Float64Array
+toFloat64Array = Float64Array . coerce
+
+instance IsFloat64Array Float64Array
+instance IsGObject Float64Array where
+  typeGType _ = gTypeFloat64Array
+
+foreign import javascript unsafe "window[\"Float64Array\"]" gTypeFloat64Array :: GType
+
+newtype Uint8Array = Uint8Array { unUint8Array :: JSVal }
+noUint8Array :: Maybe Uint8Array
+noUint8Array = Nothing
+{-# INLINE noUint8Array #-}
+
+instance Eq Uint8Array where
+  (Uint8Array a) == (Uint8Array b) = js_eq a b
+
+instance PToJSVal Uint8Array where
+  pToJSVal = unUint8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8Array where
+  pFromJSVal = Uint8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8Array where
+  toJSVal = return . unUint8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8Array where
+  fromJSVal = return . fmap Uint8Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8Array o
+toUint8Array :: IsUint8Array o => o -> Uint8Array
+toUint8Array = Uint8Array . coerce
+
+instance IsUint8Array Uint8Array
+instance IsGObject Uint8Array where
+  typeGType _ = gTypeUint8Array
+
+foreign import javascript unsafe "window[\"Uint8Array\"]" gTypeUint8Array :: GType
+
+newtype Uint8ClampedArray = Uint8ClampedArray { unUint8ClampedArray :: JSVal }
+noUint8ClampedArray :: Maybe Uint8ClampedArray
+noUint8ClampedArray = Nothing
+{-# INLINE noUint8ClampedArray #-}
+
+instance Eq Uint8ClampedArray where
+  (Uint8ClampedArray a) == (Uint8ClampedArray b) = js_eq a b
+
+instance PToJSVal Uint8ClampedArray where
+  pToJSVal = unUint8ClampedArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint8ClampedArray where
+  pFromJSVal = Uint8ClampedArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint8ClampedArray where
+  toJSVal = return . unUint8ClampedArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint8ClampedArray where
+  fromJSVal = return . fmap Uint8ClampedArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint8ClampedArray o
+toUint8ClampedArray :: IsUint8ClampedArray o => o -> Uint8ClampedArray
+toUint8ClampedArray = Uint8ClampedArray . coerce
+
+instance IsUint8ClampedArray Uint8ClampedArray
+instance IsGObject Uint8ClampedArray where
+  typeGType _ = gTypeUint8ClampedArray
+
+foreign import javascript unsafe "window[\"Uint8ClampedArray\"]" gTypeUint8ClampedArray :: GType
+
+newtype Uint16Array = Uint16Array { unUint16Array :: JSVal }
+noUint16Array :: Maybe Uint16Array
+noUint16Array = Nothing
+{-# INLINE noUint16Array #-}
+
+instance Eq Uint16Array where
+  (Uint16Array a) == (Uint16Array b) = js_eq a b
+
+instance PToJSVal Uint16Array where
+  pToJSVal = unUint16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint16Array where
+  pFromJSVal = Uint16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint16Array where
+  toJSVal = return . unUint16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint16Array where
+  fromJSVal = return . fmap Uint16Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint16Array o
+toUint16Array :: IsUint16Array o => o -> Uint16Array
+toUint16Array = Uint16Array . coerce
+
+instance IsUint16Array Uint16Array
+instance IsGObject Uint16Array where
+  typeGType _ = gTypeUint16Array
+
+foreign import javascript unsafe "window[\"Uint16Array\"]" gTypeUint16Array :: GType
+
+newtype Uint32Array = Uint32Array { unUint32Array :: JSVal }
+noUint32Array :: Maybe Uint32Array
+noUint32Array = Nothing
+{-# INLINE noUint32Array #-}
+
+instance Eq Uint32Array where
+  (Uint32Array a) == (Uint32Array b) = js_eq a b
+
+instance PToJSVal Uint32Array where
+  pToJSVal = unUint32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Uint32Array where
+  pFromJSVal = Uint32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Uint32Array where
+  toJSVal = return . unUint32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Uint32Array where
+  fromJSVal = return . fmap Uint32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsUint32Array o
+toUint32Array :: IsUint32Array o => o -> Uint32Array
+toUint32Array = Uint32Array . coerce
+
+instance IsUint32Array Uint32Array
+instance IsGObject Uint32Array where
+  typeGType _ = gTypeUint32Array
+
+foreign import javascript unsafe "window[\"Uint32Array\"]" gTypeUint32Array :: GType
+
+newtype Int8Array = Int8Array { unInt8Array :: JSVal }
+noInt8Array :: Maybe Int8Array
+noInt8Array = Nothing
+{-# INLINE noInt8Array #-}
+
+instance Eq Int8Array where
+  (Int8Array a) == (Int8Array b) = js_eq a b
+
+instance PToJSVal Int8Array where
+  pToJSVal = unInt8Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int8Array where
+  pFromJSVal = Int8Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int8Array where
+  toJSVal = return . unInt8Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int8Array where
+  fromJSVal = return . fmap Int8Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt8Array o
+toInt8Array :: IsInt8Array o => o -> Int8Array
+toInt8Array = Int8Array . coerce
+
+instance IsInt8Array Int8Array
+instance IsGObject Int8Array where
+  typeGType _ = gTypeInt8Array
+
+foreign import javascript unsafe "window[\"Int8Array\"]" gTypeInt8Array :: GType
+
+newtype Int16Array = Int16Array { unInt16Array :: JSVal }
+noInt16Array :: Maybe Int16Array
+noInt16Array = Nothing
+{-# INLINE noInt16Array #-}
+
+instance Eq Int16Array where
+  (Int16Array a) == (Int16Array b) = js_eq a b
+
+instance PToJSVal Int16Array where
+  pToJSVal = unInt16Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int16Array where
+  pFromJSVal = Int16Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int16Array where
+  toJSVal = return . unInt16Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int16Array where
+  fromJSVal = return . fmap Int16Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt16Array o
+toInt16Array :: IsInt16Array o => o -> Int16Array
+toInt16Array = Int16Array . coerce
+
+instance IsInt16Array Int16Array
+instance IsGObject Int16Array where
+  typeGType _ = gTypeInt16Array
+
+foreign import javascript unsafe "window[\"Int16Array\"]" gTypeInt16Array :: GType
+
+newtype Int32Array = Int32Array { unInt32Array :: JSVal }
+noInt32Array :: Maybe Int32Array
+noInt32Array = Nothing
+{-# INLINE noInt32Array #-}
+
+instance Eq Int32Array where
+  (Int32Array a) == (Int32Array b) = js_eq a b
+
+instance PToJSVal Int32Array where
+  pToJSVal = unInt32Array
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int32Array where
+  pFromJSVal = Int32Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int32Array where
+  toJSVal = return . unInt32Array
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int32Array where
+  fromJSVal = return . fmap Int32Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsInt32Array o
+toInt32Array :: IsInt32Array o => o -> Int32Array
+toInt32Array = Int32Array . coerce
+
+instance IsInt32Array Int32Array
+instance IsGObject Int32Array where
+  typeGType _ = gTypeInt32Array
+
+foreign import javascript unsafe "window[\"Int32Array\"]" gTypeInt32Array :: GType
+
+newtype ObjectArray = ObjectArray { unObjectArray :: JSVal }
+noObjectArray :: Maybe ObjectArray
+noObjectArray = Nothing
+{-# INLINE noObjectArray #-}
+
+instance Eq ObjectArray where
+  (ObjectArray a) == (ObjectArray b) = js_eq a b
+
+instance PToJSVal ObjectArray where
+  pToJSVal = unObjectArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ObjectArray where
+  pFromJSVal = ObjectArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ObjectArray where
+  toJSVal = return . unObjectArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ObjectArray where
+  fromJSVal = return . fmap ObjectArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsObjectArray o
+toObjectArray :: IsObjectArray o => o -> ObjectArray
+toObjectArray = ObjectArray . coerce
+
+instance IsObjectArray ObjectArray
+instance IsGObject ObjectArray where
+  typeGType _ = error "Unable to get the JavaScript type of ObjectArray"
+
+newtype ArrayBufferView = ArrayBufferView { unArrayBufferView :: JSVal }
+noArrayBufferView :: Maybe ArrayBufferView
+noArrayBufferView = Nothing
+{-# INLINE noArrayBufferView #-}
+
+instance Eq ArrayBufferView where
+  (ArrayBufferView a) == (ArrayBufferView b) = js_eq a b
+
+instance PToJSVal ArrayBufferView where
+  pToJSVal = unArrayBufferView
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ArrayBufferView where
+  pFromJSVal = ArrayBufferView
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ArrayBufferView where
+  toJSVal = return . unArrayBufferView
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ArrayBufferView where
+  fromJSVal = return . fmap ArrayBufferView . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArrayBufferView o
+toArrayBufferView :: IsArrayBufferView o => o -> ArrayBufferView
+toArrayBufferView = ArrayBufferView . coerce
+
+instance IsArrayBufferView ArrayBufferView
+instance IsGObject ArrayBufferView where
+  typeGType _ = error "Unable to get the JavaScript type of ArrayBufferView"
+
+newtype Array = Array { unArray :: JSVal }
+noArray :: Maybe Array
+noArray = Nothing
+{-# INLINE noArray #-}
+
+instance Eq Array where
+  (Array a) == (Array b) = js_eq a b
+
+instance PToJSVal Array where
+  pToJSVal = unArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Array where
+  pFromJSVal = Array
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Array where
+  toJSVal = return . unArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Array where
+  fromJSVal = return . fmap Array . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsArray o
+toArray :: IsArray o => o -> Array
+toArray = Array . coerce
+
+instance IsArray Array
+instance IsGObject Array where
+  typeGType _ = gTypeArray
+
+foreign import javascript unsafe "window[\"Array\"]" gTypeArray :: GType
+
+newtype Date = Date { unDate :: JSVal }
+noDate :: Maybe Date
+noDate = Nothing
+{-# INLINE noDate #-}
+
+instance Eq Date where
+  (Date a) == (Date b) = js_eq a b
+
+instance PToJSVal Date where
+  pToJSVal = unDate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Date where
+  pFromJSVal = Date
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Date where
+  toJSVal = return . unDate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Date where
+  fromJSVal = return . fmap Date . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsDate o
+toDate :: IsDate o => o -> Date
+toDate = Date . coerce
+
+instance IsDate Date
+instance IsGObject Date where
+  typeGType _ = gTypeDate
+
+foreign import javascript unsafe "window[\"Date\"]" gTypeDate :: GType
+
+newtype Algorithm = Algorithm { unAlgorithm :: JSVal }
+noAlgorithm :: Maybe Algorithm
+noAlgorithm = Nothing
+{-# INLINE noAlgorithm #-}
+
+instance Eq Algorithm where
+  (Algorithm a) == (Algorithm b) = js_eq a b
+
+instance PToJSVal Algorithm where
+  pToJSVal = unAlgorithm
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Algorithm where
+  pFromJSVal = Algorithm
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Algorithm where
+  toJSVal = return . unAlgorithm
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Algorithm where
+  fromJSVal = return . fmap Algorithm . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsAlgorithm o
+toAlgorithm :: IsAlgorithm o => o -> Algorithm
+toAlgorithm = Algorithm . coerce
+
+instance IsAlgorithm Algorithm
+instance IsGObject Algorithm where
+  typeGType _ = error "Unable to get the JavaScript type of Algorithm"
+
+newtype CryptoOperationData = CryptoOperationData { unCryptoOperationData :: JSVal }
+noCryptoOperationData :: Maybe CryptoOperationData
+noCryptoOperationData = Nothing
+{-# INLINE noCryptoOperationData #-}
+
+instance Eq CryptoOperationData where
+  (CryptoOperationData a) == (CryptoOperationData b) = js_eq a b
+
+instance PToJSVal CryptoOperationData where
+  pToJSVal = unCryptoOperationData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoOperationData where
+  pFromJSVal = CryptoOperationData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoOperationData where
+  toJSVal = return . unCryptoOperationData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoOperationData where
+  fromJSVal = return . fmap CryptoOperationData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class IsGObject o => IsCryptoOperationData o
+toCryptoOperationData :: IsCryptoOperationData o => o -> CryptoOperationData
+toCryptoOperationData = CryptoOperationData . coerce
+
+instance IsCryptoOperationData CryptoOperationData
+instance IsGObject CryptoOperationData where
+  typeGType _ = error "Unable to get the JavaScript type of CryptoOperationData"
+instance IsCryptoOperationData ArrayBuffer
+instance IsCryptoOperationData ArrayBufferView
+
+type GLenum = Word32
+noGLenum :: Maybe GLenum
+noGLenum = Nothing
+{-# INLINE noGLenum #-}
+type GLboolean = Bool
+noGLboolean :: Maybe GLboolean
+noGLboolean = Nothing
+{-# INLINE noGLboolean #-}
+type GLbitfield = Word32
+noGLbitfield :: Maybe GLbitfield
+noGLbitfield = Nothing
+{-# INLINE noGLbitfield #-}
+type GLbyte = Int8
+noGLbyte :: Maybe GLbyte
+noGLbyte = Nothing
+{-# INLINE noGLbyte #-}
+type GLshort = Int16
+noGLshort :: Maybe GLshort
+noGLshort = Nothing
+{-# INLINE noGLshort #-}
+type GLint = Int32
+noGLint :: Maybe GLint
+noGLint = Nothing
+{-# INLINE noGLint #-}
+type GLint64 = Int64
+noGLint64 :: Maybe GLint64
+noGLint64 = Nothing
+{-# INLINE noGLint64 #-}
+type GLsizei = Int32
+noGLsizei :: Maybe GLsizei
+noGLsizei = Nothing
+{-# INLINE noGLsizei #-}
+type GLintptr = Int64
+noGLintptr :: Maybe GLintptr
+noGLintptr = Nothing
+{-# INLINE noGLintptr #-}
+type GLsizeiptr = Int64
+noGLsizeiptr :: Maybe GLsizeiptr
+noGLsizeiptr = Nothing
+{-# INLINE noGLsizeiptr #-}
+type GLubyte = Word8
+noGLubyte :: Maybe GLubyte
+noGLubyte = Nothing
+{-# INLINE noGLubyte #-}
+type GLushort = Word16
+noGLushort :: Maybe GLushort
+noGLushort = Nothing
+{-# INLINE noGLushort #-}
+type GLuint = Word32
+noGLuint :: Maybe GLuint
+noGLuint = Nothing
+{-# INLINE noGLuint #-}
+type GLuint64 = Word64
+noGLuint64 :: Maybe GLuint64
+noGLuint64 = Nothing
+{-# INLINE noGLuint64 #-}
+type GLfloat = Double
+noGLfloat :: Maybe GLfloat
+noGLfloat = Nothing
+{-# INLINE noGLfloat #-}
+type GLclampf = Double
+noGLclampf :: Maybe GLclampf
+noGLclampf = Nothing
+{-# INLINE noGLclampf #-}
+
+-- This type is used to access the `globalThis` (see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/globalThis)
+newtype GlobalThis = GlobalThis { unGlobalThis :: JSVal }
+
+instance Eq (GlobalThis) where
+  (GlobalThis a) == (GlobalThis b) = js_eq a b
+
+instance PToJSVal GlobalThis where
+  pToJSVal = unGlobalThis
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GlobalThis where
+  pFromJSVal = GlobalThis
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GlobalThis where
+  toJSVal = return . unGlobalThis
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GlobalThis where
+  fromJSVal = return . fmap GlobalThis . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject GlobalThis where
+  typeGType _ = error "Unable to get the JavaScript type of GlobalThis"
+
+instance IsEventTarget GlobalThis
+instance IsWindowOrWorkerGlobalScope GlobalThis
+instance IsGlobalPerformance GlobalThis
+instance IsGlobalEventHandlers GlobalThis
+instance IsGlobalCrypto GlobalThis
+noGlobalThis :: Maybe GlobalThis
+noGlobalThis = Nothing
+{-# INLINE noGlobalThis #-}
+
+-- AUTO GENERATION STARTS HERE
+-- The remainder of this file is generated from IDL files using domconv-webkit-jsffi
+newtype AddEventListenerOptionsOrBool = AddEventListenerOptionsOrBool { unAddEventListenerOptionsOrBool :: JSVal }
+
+instance PToJSVal AddEventListenerOptionsOrBool where
+  pToJSVal = unAddEventListenerOptionsOrBool
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AddEventListenerOptionsOrBool where
+  pFromJSVal = AddEventListenerOptionsOrBool
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AddEventListenerOptionsOrBool where
+  toJSVal = return . unAddEventListenerOptionsOrBool
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AddEventListenerOptionsOrBool where
+  fromJSVal = return . fmap AddEventListenerOptionsOrBool . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PToJSVal o) => IsAddEventListenerOptionsOrBool o
+
+toAddEventListenerOptionsOrBool :: IsAddEventListenerOptionsOrBool o => o -> AddEventListenerOptionsOrBool
+toAddEventListenerOptionsOrBool = AddEventListenerOptionsOrBool . pToJSVal
+
+instance IsAddEventListenerOptionsOrBool AddEventListenerOptionsOrBool
+instance IsAddEventListenerOptionsOrBool Bool
+instance IsAddEventListenerOptionsOrBool AddEventListenerOptions
+
+newtype BinaryData = BinaryData { unBinaryData :: JSVal }
+
+instance PToJSVal BinaryData where
+  pToJSVal = unBinaryData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BinaryData where
+  pFromJSVal = BinaryData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BinaryData where
+  toJSVal = return . unBinaryData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BinaryData where
+  fromJSVal = return . fmap BinaryData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsBinaryData o
+
+toBinaryData :: IsBinaryData o => o -> BinaryData
+toBinaryData = BinaryData . coerce
+
+instance IsBinaryData BinaryData
+instance IsBinaryData ArrayBuffer
+instance IsBinaryData ArrayBufferView
+
+newtype BlobPart = BlobPart { unBlobPart :: JSVal }
+
+instance PToJSVal BlobPart where
+  pToJSVal = unBlobPart
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BlobPart where
+  pFromJSVal = BlobPart
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BlobPart where
+  toJSVal = return . unBlobPart
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BlobPart where
+  fromJSVal = return . fmap BlobPart . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsBlobPart o
+
+instance IsBlobPart BlobPart
+instance IsBlobPart BinaryData
+instance IsBlobPart BufferSource
+instance IsBlobPart ArrayBufferView
+instance IsBlobPart ArrayBuffer
+instance IsBlobPart Blob
+instance IsBlobPart File
+instance IsBlobPart Text
+instance IsBlobPart JSString
+instance IsBlobPart String
+
+newtype BodyInit = BodyInit { unBodyInit :: JSVal }
+
+instance PToJSVal BodyInit where
+  pToJSVal = unBodyInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BodyInit where
+  pFromJSVal = BodyInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BodyInit where
+  toJSVal = return . unBodyInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BodyInit where
+  fromJSVal = return . fmap BodyInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsBodyInit o
+
+instance IsBodyInit BodyInit
+instance IsBodyInit Text
+instance IsBodyInit JSString
+instance IsBodyInit String
+instance IsBodyInit FormData
+instance IsBodyInit BinaryData
+instance IsBodyInit BufferSource
+instance IsBodyInit ArrayBufferView
+instance IsBodyInit ArrayBuffer
+instance IsBodyInit Blob
+instance IsBodyInit File
+
+newtype BufferDataSource = BufferDataSource { unBufferDataSource :: JSVal }
+
+instance PToJSVal BufferDataSource where
+  pToJSVal = unBufferDataSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BufferDataSource where
+  pFromJSVal = BufferDataSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BufferDataSource where
+  toJSVal = return . unBufferDataSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BufferDataSource where
+  fromJSVal = return . fmap BufferDataSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsBufferDataSource o
+
+toBufferDataSource :: IsBufferDataSource o => o -> BufferDataSource
+toBufferDataSource = BufferDataSource . coerce
+
+instance IsBufferDataSource BufferDataSource
+instance IsBufferDataSource ArrayBuffer
+instance IsBufferDataSource ArrayBufferView
+
+newtype BufferSource = BufferSource { unBufferSource :: JSVal }
+
+instance PToJSVal BufferSource where
+  pToJSVal = unBufferSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BufferSource where
+  pFromJSVal = BufferSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BufferSource where
+  toJSVal = return . unBufferSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BufferSource where
+  fromJSVal = return . fmap BufferSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsBufferSource o
+
+toBufferSource :: IsBufferSource o => o -> BufferSource
+toBufferSource = BufferSource . coerce
+
+instance IsBufferSource BufferSource
+instance IsBufferSource ArrayBuffer
+instance IsBufferSource ArrayBufferView
+
+newtype CanvasImageSource = CanvasImageSource { unCanvasImageSource :: JSVal }
+
+instance PToJSVal CanvasImageSource where
+  pToJSVal = unCanvasImageSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasImageSource where
+  pFromJSVal = CanvasImageSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasImageSource where
+  toJSVal = return . unCanvasImageSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasImageSource where
+  fromJSVal = return . fmap CanvasImageSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsCanvasImageSource o
+
+toCanvasImageSource :: IsCanvasImageSource o => o -> CanvasImageSource
+toCanvasImageSource = CanvasImageSource . coerce
+
+instance IsCanvasImageSource CanvasImageSource
+instance IsCanvasImageSource HTMLImageElement
+instance IsCanvasImageSource HTMLVideoElement
+instance IsCanvasImageSource HTMLCanvasElement
+
+newtype CanvasStyle = CanvasStyle { unCanvasStyle :: JSVal }
+
+instance PToJSVal CanvasStyle where
+  pToJSVal = unCanvasStyle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasStyle where
+  pFromJSVal = CanvasStyle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasStyle where
+  toJSVal = return . unCanvasStyle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasStyle where
+  fromJSVal = return . fmap CanvasStyle . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsCanvasStyle o
+
+instance IsCanvasStyle CanvasStyle
+instance IsCanvasStyle CanvasPattern
+instance IsCanvasStyle CanvasGradient
+instance IsCanvasStyle Text
+instance IsCanvasStyle JSString
+instance IsCanvasStyle String
+
+newtype CredentialBodyType = CredentialBodyType { unCredentialBodyType :: JSVal }
+
+instance PToJSVal CredentialBodyType where
+  pToJSVal = unCredentialBodyType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CredentialBodyType where
+  pFromJSVal = CredentialBodyType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CredentialBodyType where
+  toJSVal = return . unCredentialBodyType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CredentialBodyType where
+  fromJSVal = return . fmap CredentialBodyType . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsCredentialBodyType o
+
+toCredentialBodyType :: IsCredentialBodyType o => o -> CredentialBodyType
+toCredentialBodyType = CredentialBodyType . coerce
+
+instance IsCredentialBodyType CredentialBodyType
+instance IsCredentialBodyType URLSearchParams
+instance IsCredentialBodyType FormData
+
+newtype CryptoKeyOrKeyPair = CryptoKeyOrKeyPair { unCryptoKeyOrKeyPair :: JSVal }
+
+instance PToJSVal CryptoKeyOrKeyPair where
+  pToJSVal = unCryptoKeyOrKeyPair
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKeyOrKeyPair where
+  pFromJSVal = CryptoKeyOrKeyPair
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKeyOrKeyPair where
+  toJSVal = return . unCryptoKeyOrKeyPair
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKeyOrKeyPair where
+  fromJSVal = return . fmap CryptoKeyOrKeyPair . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsCryptoKeyOrKeyPair o
+
+toCryptoKeyOrKeyPair :: IsCryptoKeyOrKeyPair o => o -> CryptoKeyOrKeyPair
+toCryptoKeyOrKeyPair = CryptoKeyOrKeyPair . coerce
+
+instance IsCryptoKeyOrKeyPair CryptoKeyOrKeyPair
+instance IsCryptoKeyOrKeyPair CryptoKeyPair
+instance IsCryptoKeyOrKeyPair CryptoKey
+
+newtype EventListenerOptionsOrBool = EventListenerOptionsOrBool { unEventListenerOptionsOrBool :: JSVal }
+
+instance PToJSVal EventListenerOptionsOrBool where
+  pToJSVal = unEventListenerOptionsOrBool
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventListenerOptionsOrBool where
+  pFromJSVal = EventListenerOptionsOrBool
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventListenerOptionsOrBool where
+  toJSVal = return . unEventListenerOptionsOrBool
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventListenerOptionsOrBool where
+  fromJSVal = return . fmap EventListenerOptionsOrBool . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PToJSVal o) => IsEventListenerOptionsOrBool o
+
+toEventListenerOptionsOrBool :: IsEventListenerOptionsOrBool o => o -> EventListenerOptionsOrBool
+toEventListenerOptionsOrBool = EventListenerOptionsOrBool . pToJSVal
+
+instance IsEventListenerOptionsOrBool EventListenerOptionsOrBool
+instance IsEventListenerOptionsOrBool Bool
+instance IsEventListenerOptionsOrBool EventListenerOptions
+instance IsEventListenerOptionsOrBool AddEventListenerOptions
+
+newtype Float32List = Float32List { unFloat32List :: JSVal }
+
+instance PToJSVal Float32List where
+  pToJSVal = unFloat32List
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Float32List where
+  pFromJSVal = Float32List
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Float32List where
+  toJSVal = return . unFloat32List
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Float32List where
+  fromJSVal = return . fmap Float32List . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsFloat32List o
+
+instance IsFloat32List Float32List
+instance IsFloat32List [GLfloat]
+instance IsFloat32List Float32Array
+
+newtype HTMLCollectionOrElement = HTMLCollectionOrElement { unHTMLCollectionOrElement :: JSVal }
+
+instance PToJSVal HTMLCollectionOrElement where
+  pToJSVal = unHTMLCollectionOrElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCollectionOrElement where
+  pFromJSVal = HTMLCollectionOrElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCollectionOrElement where
+  toJSVal = return . unHTMLCollectionOrElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCollectionOrElement where
+  fromJSVal = return . fmap HTMLCollectionOrElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsHTMLCollectionOrElement o
+
+toHTMLCollectionOrElement :: IsHTMLCollectionOrElement o => o -> HTMLCollectionOrElement
+toHTMLCollectionOrElement = HTMLCollectionOrElement . coerce
+
+instance IsHTMLCollectionOrElement HTMLCollectionOrElement
+instance IsHTMLCollectionOrElement Element
+instance IsHTMLCollectionOrElement SVGViewElement
+instance IsHTMLCollectionOrElement SVGVKernElement
+instance IsHTMLCollectionOrElement SVGUseElement
+instance IsHTMLCollectionOrElement SVGTitleElement
+instance IsHTMLCollectionOrElement SVGTextPositioningElement
+instance IsHTMLCollectionOrElement SVGTextPathElement
+instance IsHTMLCollectionOrElement SVGTextElement
+instance IsHTMLCollectionOrElement SVGTextContentElement
+instance IsHTMLCollectionOrElement SVGTSpanElement
+instance IsHTMLCollectionOrElement SVGTRefElement
+instance IsHTMLCollectionOrElement SVGSymbolElement
+instance IsHTMLCollectionOrElement SVGSwitchElement
+instance IsHTMLCollectionOrElement SVGStyleElement
+instance IsHTMLCollectionOrElement SVGStopElement
+instance IsHTMLCollectionOrElement SVGSetElement
+instance IsHTMLCollectionOrElement SVGScriptElement
+instance IsHTMLCollectionOrElement SVGSVGElement
+instance IsHTMLCollectionOrElement SVGRectElement
+instance IsHTMLCollectionOrElement SVGRadialGradientElement
+instance IsHTMLCollectionOrElement SVGPolylineElement
+instance IsHTMLCollectionOrElement SVGPolygonElement
+instance IsHTMLCollectionOrElement SVGPatternElement
+instance IsHTMLCollectionOrElement SVGPathElement
+instance IsHTMLCollectionOrElement SVGMissingGlyphElement
+instance IsHTMLCollectionOrElement SVGMetadataElement
+instance IsHTMLCollectionOrElement SVGMaskElement
+instance IsHTMLCollectionOrElement SVGMarkerElement
+instance IsHTMLCollectionOrElement SVGMPathElement
+instance IsHTMLCollectionOrElement SVGLinearGradientElement
+instance IsHTMLCollectionOrElement SVGLineElement
+instance IsHTMLCollectionOrElement SVGImageElement
+instance IsHTMLCollectionOrElement SVGHKernElement
+instance IsHTMLCollectionOrElement SVGGraphicsElement
+instance IsHTMLCollectionOrElement SVGGradientElement
+instance IsHTMLCollectionOrElement SVGGlyphRefElement
+instance IsHTMLCollectionOrElement SVGGlyphElement
+instance IsHTMLCollectionOrElement SVGGElement
+instance IsHTMLCollectionOrElement SVGForeignObjectElement
+instance IsHTMLCollectionOrElement SVGFontFaceUriElement
+instance IsHTMLCollectionOrElement SVGFontFaceSrcElement
+instance IsHTMLCollectionOrElement SVGFontFaceNameElement
+instance IsHTMLCollectionOrElement SVGFontFaceFormatElement
+instance IsHTMLCollectionOrElement SVGFontFaceElement
+instance IsHTMLCollectionOrElement SVGFontElement
+instance IsHTMLCollectionOrElement SVGFilterElement
+instance IsHTMLCollectionOrElement SVGFETurbulenceElement
+instance IsHTMLCollectionOrElement SVGFETileElement
+instance IsHTMLCollectionOrElement SVGFESpotLightElement
+instance IsHTMLCollectionOrElement SVGFESpecularLightingElement
+instance IsHTMLCollectionOrElement SVGFEPointLightElement
+instance IsHTMLCollectionOrElement SVGFEOffsetElement
+instance IsHTMLCollectionOrElement SVGFEMorphologyElement
+instance IsHTMLCollectionOrElement SVGFEMergeNodeElement
+instance IsHTMLCollectionOrElement SVGFEMergeElement
+instance IsHTMLCollectionOrElement SVGFEImageElement
+instance IsHTMLCollectionOrElement SVGFEGaussianBlurElement
+instance IsHTMLCollectionOrElement SVGFEFuncRElement
+instance IsHTMLCollectionOrElement SVGFEFuncGElement
+instance IsHTMLCollectionOrElement SVGFEFuncBElement
+instance IsHTMLCollectionOrElement SVGFEFuncAElement
+instance IsHTMLCollectionOrElement SVGFEFloodElement
+instance IsHTMLCollectionOrElement SVGFEDropShadowElement
+instance IsHTMLCollectionOrElement SVGFEDistantLightElement
+instance IsHTMLCollectionOrElement SVGFEDisplacementMapElement
+instance IsHTMLCollectionOrElement SVGFEDiffuseLightingElement
+instance IsHTMLCollectionOrElement SVGFEConvolveMatrixElement
+instance IsHTMLCollectionOrElement SVGFECompositeElement
+instance IsHTMLCollectionOrElement SVGFEComponentTransferElement
+instance IsHTMLCollectionOrElement SVGFEColorMatrixElement
+instance IsHTMLCollectionOrElement SVGFEBlendElement
+instance IsHTMLCollectionOrElement SVGEllipseElement
+instance IsHTMLCollectionOrElement SVGElement
+instance IsHTMLCollectionOrElement SVGDescElement
+instance IsHTMLCollectionOrElement SVGDefsElement
+instance IsHTMLCollectionOrElement SVGCursorElement
+instance IsHTMLCollectionOrElement SVGComponentTransferFunctionElement
+instance IsHTMLCollectionOrElement SVGClipPathElement
+instance IsHTMLCollectionOrElement SVGCircleElement
+instance IsHTMLCollectionOrElement SVGAnimationElement
+instance IsHTMLCollectionOrElement SVGAnimateTransformElement
+instance IsHTMLCollectionOrElement SVGAnimateMotionElement
+instance IsHTMLCollectionOrElement SVGAnimateElement
+instance IsHTMLCollectionOrElement SVGAnimateColorElement
+instance IsHTMLCollectionOrElement SVGAltGlyphItemElement
+instance IsHTMLCollectionOrElement SVGAltGlyphElement
+instance IsHTMLCollectionOrElement SVGAltGlyphDefElement
+instance IsHTMLCollectionOrElement SVGAElement
+instance IsHTMLCollectionOrElement HTMLVideoElement
+instance IsHTMLCollectionOrElement HTMLUnknownElement
+instance IsHTMLCollectionOrElement HTMLUListElement
+instance IsHTMLCollectionOrElement HTMLTrackElement
+instance IsHTMLCollectionOrElement HTMLTitleElement
+instance IsHTMLCollectionOrElement HTMLTimeElement
+instance IsHTMLCollectionOrElement HTMLTextAreaElement
+instance IsHTMLCollectionOrElement HTMLTemplateElement
+instance IsHTMLCollectionOrElement HTMLTableSectionElement
+instance IsHTMLCollectionOrElement HTMLTableRowElement
+instance IsHTMLCollectionOrElement HTMLTableElement
+instance IsHTMLCollectionOrElement HTMLTableColElement
+instance IsHTMLCollectionOrElement HTMLTableCellElement
+instance IsHTMLCollectionOrElement HTMLTableCaptionElement
+instance IsHTMLCollectionOrElement HTMLStyleElement
+instance IsHTMLCollectionOrElement HTMLSpanElement
+instance IsHTMLCollectionOrElement HTMLSourceElement
+instance IsHTMLCollectionOrElement HTMLSlotElement
+instance IsHTMLCollectionOrElement HTMLSelectElement
+instance IsHTMLCollectionOrElement HTMLScriptElement
+instance IsHTMLCollectionOrElement HTMLQuoteElement
+instance IsHTMLCollectionOrElement HTMLProgressElement
+instance IsHTMLCollectionOrElement HTMLPreElement
+instance IsHTMLCollectionOrElement HTMLPictureElement
+instance IsHTMLCollectionOrElement HTMLParamElement
+instance IsHTMLCollectionOrElement HTMLParagraphElement
+instance IsHTMLCollectionOrElement HTMLOutputElement
+instance IsHTMLCollectionOrElement HTMLOptionElement
+instance IsHTMLCollectionOrElement HTMLOptGroupElement
+instance IsHTMLCollectionOrElement HTMLObjectElement
+instance IsHTMLCollectionOrElement HTMLOListElement
+instance IsHTMLCollectionOrElement HTMLModElement
+instance IsHTMLCollectionOrElement HTMLMeterElement
+instance IsHTMLCollectionOrElement HTMLMetaElement
+instance IsHTMLCollectionOrElement HTMLMenuElement
+instance IsHTMLCollectionOrElement HTMLMediaElement
+instance IsHTMLCollectionOrElement HTMLMarqueeElement
+instance IsHTMLCollectionOrElement HTMLMapElement
+instance IsHTMLCollectionOrElement HTMLLinkElement
+instance IsHTMLCollectionOrElement HTMLLegendElement
+instance IsHTMLCollectionOrElement HTMLLabelElement
+instance IsHTMLCollectionOrElement HTMLLIElement
+instance IsHTMLCollectionOrElement HTMLKeygenElement
+instance IsHTMLCollectionOrElement HTMLInputElement
+instance IsHTMLCollectionOrElement HTMLImageElement
+instance IsHTMLCollectionOrElement HTMLIFrameElement
+instance IsHTMLCollectionOrElement HTMLHtmlElement
+instance IsHTMLCollectionOrElement HTMLHeadingElement
+instance IsHTMLCollectionOrElement HTMLHeadElement
+instance IsHTMLCollectionOrElement HTMLHRElement
+instance IsHTMLCollectionOrElement HTMLFrameSetElement
+instance IsHTMLCollectionOrElement HTMLFrameElement
+instance IsHTMLCollectionOrElement HTMLFormElement
+instance IsHTMLCollectionOrElement HTMLFontElement
+instance IsHTMLCollectionOrElement HTMLFieldSetElement
+instance IsHTMLCollectionOrElement HTMLEmbedElement
+instance IsHTMLCollectionOrElement HTMLElement
+instance IsHTMLCollectionOrElement HTMLDivElement
+instance IsHTMLCollectionOrElement HTMLDirectoryElement
+instance IsHTMLCollectionOrElement HTMLDetailsElement
+instance IsHTMLCollectionOrElement HTMLDataListElement
+instance IsHTMLCollectionOrElement HTMLDataElement
+instance IsHTMLCollectionOrElement HTMLDListElement
+instance IsHTMLCollectionOrElement HTMLCanvasElement
+instance IsHTMLCollectionOrElement HTMLButtonElement
+instance IsHTMLCollectionOrElement HTMLBodyElement
+instance IsHTMLCollectionOrElement HTMLBaseElement
+instance IsHTMLCollectionOrElement HTMLBRElement
+instance IsHTMLCollectionOrElement HTMLAudioElement
+instance IsHTMLCollectionOrElement HTMLAttachmentElement
+instance IsHTMLCollectionOrElement HTMLAreaElement
+instance IsHTMLCollectionOrElement HTMLAppletElement
+instance IsHTMLCollectionOrElement HTMLAnchorElement
+instance IsHTMLCollectionOrElement HTMLCollection
+instance IsHTMLCollectionOrElement HTMLOptionsCollection
+instance IsHTMLCollectionOrElement HTMLFormControlsCollection
+
+newtype HTMLElementOrLong = HTMLElementOrLong { unHTMLElementOrLong :: JSVal }
+
+instance PToJSVal HTMLElementOrLong where
+  pToJSVal = unHTMLElementOrLong
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLElementOrLong where
+  pFromJSVal = HTMLElementOrLong
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLElementOrLong where
+  toJSVal = return . unHTMLElementOrLong
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLElementOrLong where
+  fromJSVal = return . fmap HTMLElementOrLong . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsHTMLElementOrLong o
+
+instance IsHTMLElementOrLong HTMLElementOrLong
+instance IsHTMLElementOrLong Int
+instance IsHTMLElementOrLong HTMLElement
+instance IsHTMLElementOrLong HTMLVideoElement
+instance IsHTMLElementOrLong HTMLUnknownElement
+instance IsHTMLElementOrLong HTMLUListElement
+instance IsHTMLElementOrLong HTMLTrackElement
+instance IsHTMLElementOrLong HTMLTitleElement
+instance IsHTMLElementOrLong HTMLTimeElement
+instance IsHTMLElementOrLong HTMLTextAreaElement
+instance IsHTMLElementOrLong HTMLTemplateElement
+instance IsHTMLElementOrLong HTMLTableSectionElement
+instance IsHTMLElementOrLong HTMLTableRowElement
+instance IsHTMLElementOrLong HTMLTableElement
+instance IsHTMLElementOrLong HTMLTableColElement
+instance IsHTMLElementOrLong HTMLTableCellElement
+instance IsHTMLElementOrLong HTMLTableCaptionElement
+instance IsHTMLElementOrLong HTMLStyleElement
+instance IsHTMLElementOrLong HTMLSpanElement
+instance IsHTMLElementOrLong HTMLSourceElement
+instance IsHTMLElementOrLong HTMLSlotElement
+instance IsHTMLElementOrLong HTMLSelectElement
+instance IsHTMLElementOrLong HTMLScriptElement
+instance IsHTMLElementOrLong HTMLQuoteElement
+instance IsHTMLElementOrLong HTMLProgressElement
+instance IsHTMLElementOrLong HTMLPreElement
+instance IsHTMLElementOrLong HTMLPictureElement
+instance IsHTMLElementOrLong HTMLParamElement
+instance IsHTMLElementOrLong HTMLParagraphElement
+instance IsHTMLElementOrLong HTMLOutputElement
+instance IsHTMLElementOrLong HTMLOptionElement
+instance IsHTMLElementOrLong HTMLOptGroupElement
+instance IsHTMLElementOrLong HTMLObjectElement
+instance IsHTMLElementOrLong HTMLOListElement
+instance IsHTMLElementOrLong HTMLModElement
+instance IsHTMLElementOrLong HTMLMeterElement
+instance IsHTMLElementOrLong HTMLMetaElement
+instance IsHTMLElementOrLong HTMLMenuElement
+instance IsHTMLElementOrLong HTMLMediaElement
+instance IsHTMLElementOrLong HTMLMarqueeElement
+instance IsHTMLElementOrLong HTMLMapElement
+instance IsHTMLElementOrLong HTMLLinkElement
+instance IsHTMLElementOrLong HTMLLegendElement
+instance IsHTMLElementOrLong HTMLLabelElement
+instance IsHTMLElementOrLong HTMLLIElement
+instance IsHTMLElementOrLong HTMLKeygenElement
+instance IsHTMLElementOrLong HTMLInputElement
+instance IsHTMLElementOrLong HTMLImageElement
+instance IsHTMLElementOrLong HTMLIFrameElement
+instance IsHTMLElementOrLong HTMLHtmlElement
+instance IsHTMLElementOrLong HTMLHeadingElement
+instance IsHTMLElementOrLong HTMLHeadElement
+instance IsHTMLElementOrLong HTMLHRElement
+instance IsHTMLElementOrLong HTMLFrameSetElement
+instance IsHTMLElementOrLong HTMLFrameElement
+instance IsHTMLElementOrLong HTMLFormElement
+instance IsHTMLElementOrLong HTMLFontElement
+instance IsHTMLElementOrLong HTMLFieldSetElement
+instance IsHTMLElementOrLong HTMLEmbedElement
+instance IsHTMLElementOrLong HTMLDivElement
+instance IsHTMLElementOrLong HTMLDirectoryElement
+instance IsHTMLElementOrLong HTMLDetailsElement
+instance IsHTMLElementOrLong HTMLDataListElement
+instance IsHTMLElementOrLong HTMLDataElement
+instance IsHTMLElementOrLong HTMLDListElement
+instance IsHTMLElementOrLong HTMLCanvasElement
+instance IsHTMLElementOrLong HTMLButtonElement
+instance IsHTMLElementOrLong HTMLBodyElement
+instance IsHTMLElementOrLong HTMLBaseElement
+instance IsHTMLElementOrLong HTMLBRElement
+instance IsHTMLElementOrLong HTMLAudioElement
+instance IsHTMLElementOrLong HTMLAttachmentElement
+instance IsHTMLElementOrLong HTMLAreaElement
+instance IsHTMLElementOrLong HTMLAppletElement
+instance IsHTMLElementOrLong HTMLAnchorElement
+
+newtype HTMLOptionElementOrGroup = HTMLOptionElementOrGroup { unHTMLOptionElementOrGroup :: JSVal }
+
+instance PToJSVal HTMLOptionElementOrGroup where
+  pToJSVal = unHTMLOptionElementOrGroup
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionElementOrGroup where
+  pFromJSVal = HTMLOptionElementOrGroup
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionElementOrGroup where
+  toJSVal = return . unHTMLOptionElementOrGroup
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionElementOrGroup where
+  fromJSVal = return . fmap HTMLOptionElementOrGroup . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsHTMLOptionElementOrGroup o
+
+toHTMLOptionElementOrGroup :: IsHTMLOptionElementOrGroup o => o -> HTMLOptionElementOrGroup
+toHTMLOptionElementOrGroup = HTMLOptionElementOrGroup . coerce
+
+instance IsHTMLOptionElementOrGroup HTMLOptionElementOrGroup
+instance IsHTMLOptionElementOrGroup HTMLOptGroupElement
+instance IsHTMLOptionElementOrGroup HTMLOptionElement
+
+newtype IDBCursorSource = IDBCursorSource { unIDBCursorSource :: JSVal }
+
+instance PToJSVal IDBCursorSource where
+  pToJSVal = unIDBCursorSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursorSource where
+  pFromJSVal = IDBCursorSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursorSource where
+  toJSVal = return . unIDBCursorSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursorSource where
+  fromJSVal = return . fmap IDBCursorSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsIDBCursorSource o
+
+toIDBCursorSource :: IsIDBCursorSource o => o -> IDBCursorSource
+toIDBCursorSource = IDBCursorSource . coerce
+
+instance IsIDBCursorSource IDBCursorSource
+instance IsIDBCursorSource IDBIndex
+instance IsIDBCursorSource IDBObjectStore
+
+newtype IDBKeyPath = IDBKeyPath { unIDBKeyPath :: JSVal }
+
+instance PToJSVal IDBKeyPath where
+  pToJSVal = unIDBKeyPath
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBKeyPath where
+  pFromJSVal = IDBKeyPath
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBKeyPath where
+  toJSVal = return . unIDBKeyPath
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBKeyPath where
+  fromJSVal = return . fmap IDBKeyPath . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsIDBKeyPath o
+
+instance IsIDBKeyPath IDBKeyPath
+instance IsIDBKeyPath [Text]
+instance IsIDBKeyPath [JSString]
+instance IsIDBKeyPath [String]
+instance IsIDBKeyPath Text
+instance IsIDBKeyPath JSString
+instance IsIDBKeyPath String
+
+newtype IDBRequestResult = IDBRequestResult { unIDBRequestResult :: JSVal }
+
+instance PToJSVal IDBRequestResult where
+  pToJSVal = unIDBRequestResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBRequestResult where
+  pFromJSVal = IDBRequestResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBRequestResult where
+  toJSVal = return . unIDBRequestResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBRequestResult where
+  fromJSVal = return . fmap IDBRequestResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsIDBRequestResult o
+
+toIDBRequestResult :: IsIDBRequestResult o => o -> IDBRequestResult
+toIDBRequestResult = IDBRequestResult . coerce
+
+instance IsIDBRequestResult IDBRequestResult
+instance IsIDBRequestResult JSVal
+instance IsIDBRequestResult IDBDatabase
+instance IsIDBRequestResult IDBCursor
+instance IsIDBRequestResult IDBCursorWithValue
+
+newtype IDBRequestSource = IDBRequestSource { unIDBRequestSource :: JSVal }
+
+instance PToJSVal IDBRequestSource where
+  pToJSVal = unIDBRequestSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBRequestSource where
+  pFromJSVal = IDBRequestSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBRequestSource where
+  toJSVal = return . unIDBRequestSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBRequestSource where
+  fromJSVal = return . fmap IDBRequestSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsIDBRequestSource o
+
+toIDBRequestSource :: IsIDBRequestSource o => o -> IDBRequestSource
+toIDBRequestSource = IDBRequestSource . coerce
+
+instance IsIDBRequestSource IDBRequestSource
+instance IsIDBRequestSource IDBCursor
+instance IsIDBRequestSource IDBCursorWithValue
+instance IsIDBRequestSource IDBIndex
+instance IsIDBRequestSource IDBObjectStore
+
+newtype Int32List = Int32List { unInt32List :: JSVal }
+
+instance PToJSVal Int32List where
+  pToJSVal = unInt32List
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Int32List where
+  pFromJSVal = Int32List
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Int32List where
+  toJSVal = return . unInt32List
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Int32List where
+  fromJSVal = return . fmap Int32List . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsInt32List o
+
+instance IsInt32List Int32List
+instance IsInt32List [GLint]
+instance IsInt32List Int32Array
+
+newtype KeyData = KeyData { unKeyData :: JSVal }
+
+instance PToJSVal KeyData where
+  pToJSVal = unKeyData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyData where
+  pFromJSVal = KeyData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyData where
+  toJSVal = return . unKeyData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyData where
+  fromJSVal = return . fmap KeyData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsKeyData o
+
+toKeyData :: IsKeyData o => o -> KeyData
+toKeyData = KeyData . coerce
+
+instance IsKeyData KeyData
+instance IsKeyData JsonWebKey
+instance IsKeyData BinaryData
+instance IsKeyData BufferSource
+instance IsKeyData ArrayBufferView
+instance IsKeyData ArrayBuffer
+
+newtype MediaProvider = MediaProvider { unMediaProvider :: JSVal }
+
+instance PToJSVal MediaProvider where
+  pToJSVal = unMediaProvider
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaProvider where
+  pFromJSVal = MediaProvider
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaProvider where
+  toJSVal = return . unMediaProvider
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaProvider where
+  fromJSVal = return . fmap MediaProvider . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsMediaProvider o
+
+toMediaProvider :: IsMediaProvider o => o -> MediaProvider
+toMediaProvider = MediaProvider . coerce
+
+instance IsMediaProvider MediaProvider
+instance IsMediaProvider MediaStream
+instance IsMediaProvider MediaSource
+instance IsMediaProvider Blob
+instance IsMediaProvider File
+
+newtype MediaStreamTrackOrKind = MediaStreamTrackOrKind { unMediaStreamTrackOrKind :: JSVal }
+
+instance PToJSVal MediaStreamTrackOrKind where
+  pToJSVal = unMediaStreamTrackOrKind
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrackOrKind where
+  pFromJSVal = MediaStreamTrackOrKind
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrackOrKind where
+  toJSVal = return . unMediaStreamTrackOrKind
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrackOrKind where
+  fromJSVal = return . fmap MediaStreamTrackOrKind . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsMediaStreamTrackOrKind o
+
+instance IsMediaStreamTrackOrKind MediaStreamTrackOrKind
+instance IsMediaStreamTrackOrKind Text
+instance IsMediaStreamTrackOrKind JSString
+instance IsMediaStreamTrackOrKind String
+instance IsMediaStreamTrackOrKind MediaStreamTrack
+instance IsMediaStreamTrackOrKind CanvasCaptureMediaStreamTrack
+
+newtype MessageEventSource = MessageEventSource { unMessageEventSource :: JSVal }
+
+instance PToJSVal MessageEventSource where
+  pToJSVal = unMessageEventSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageEventSource where
+  pFromJSVal = MessageEventSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageEventSource where
+  toJSVal = return . unMessageEventSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageEventSource where
+  fromJSVal = return . fmap MessageEventSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsMessageEventSource o
+
+toMessageEventSource :: IsMessageEventSource o => o -> MessageEventSource
+toMessageEventSource = MessageEventSource . coerce
+
+instance IsMessageEventSource MessageEventSource
+instance IsMessageEventSource MessagePort
+instance IsMessageEventSource Window
+
+newtype NodeOrString = NodeOrString { unNodeOrString :: JSVal }
+
+instance PToJSVal NodeOrString where
+  pToJSVal = unNodeOrString
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeOrString where
+  pFromJSVal = NodeOrString
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeOrString where
+  toJSVal = return . unNodeOrString
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeOrString where
+  fromJSVal = return . fmap NodeOrString . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsNodeOrString o
+
+instance IsNodeOrString NodeOrString
+instance IsNodeOrString Text
+instance IsNodeOrString JSString
+instance IsNodeOrString String
+instance IsNodeOrString Node
+instance IsNodeOrString XMLDocument
+instance IsNodeOrString ShadowRoot
+instance IsNodeOrString SVGViewElement
+instance IsNodeOrString SVGVKernElement
+instance IsNodeOrString SVGUseElement
+instance IsNodeOrString SVGTitleElement
+instance IsNodeOrString SVGTextPositioningElement
+instance IsNodeOrString SVGTextPathElement
+instance IsNodeOrString SVGTextElement
+instance IsNodeOrString SVGTextContentElement
+instance IsNodeOrString SVGTSpanElement
+instance IsNodeOrString SVGTRefElement
+instance IsNodeOrString SVGSymbolElement
+instance IsNodeOrString SVGSwitchElement
+instance IsNodeOrString SVGStyleElement
+instance IsNodeOrString SVGStopElement
+instance IsNodeOrString SVGSetElement
+instance IsNodeOrString SVGScriptElement
+instance IsNodeOrString SVGSVGElement
+instance IsNodeOrString SVGRectElement
+instance IsNodeOrString SVGRadialGradientElement
+instance IsNodeOrString SVGPolylineElement
+instance IsNodeOrString SVGPolygonElement
+instance IsNodeOrString SVGPatternElement
+instance IsNodeOrString SVGPathElement
+instance IsNodeOrString SVGMissingGlyphElement
+instance IsNodeOrString SVGMetadataElement
+instance IsNodeOrString SVGMaskElement
+instance IsNodeOrString SVGMarkerElement
+instance IsNodeOrString SVGMPathElement
+instance IsNodeOrString SVGLinearGradientElement
+instance IsNodeOrString SVGLineElement
+instance IsNodeOrString SVGImageElement
+instance IsNodeOrString SVGHKernElement
+instance IsNodeOrString SVGGraphicsElement
+instance IsNodeOrString SVGGradientElement
+instance IsNodeOrString SVGGlyphRefElement
+instance IsNodeOrString SVGGlyphElement
+instance IsNodeOrString SVGGElement
+instance IsNodeOrString SVGForeignObjectElement
+instance IsNodeOrString SVGFontFaceUriElement
+instance IsNodeOrString SVGFontFaceSrcElement
+instance IsNodeOrString SVGFontFaceNameElement
+instance IsNodeOrString SVGFontFaceFormatElement
+instance IsNodeOrString SVGFontFaceElement
+instance IsNodeOrString SVGFontElement
+instance IsNodeOrString SVGFilterElement
+instance IsNodeOrString SVGFETurbulenceElement
+instance IsNodeOrString SVGFETileElement
+instance IsNodeOrString SVGFESpotLightElement
+instance IsNodeOrString SVGFESpecularLightingElement
+instance IsNodeOrString SVGFEPointLightElement
+instance IsNodeOrString SVGFEOffsetElement
+instance IsNodeOrString SVGFEMorphologyElement
+instance IsNodeOrString SVGFEMergeNodeElement
+instance IsNodeOrString SVGFEMergeElement
+instance IsNodeOrString SVGFEImageElement
+instance IsNodeOrString SVGFEGaussianBlurElement
+instance IsNodeOrString SVGFEFuncRElement
+instance IsNodeOrString SVGFEFuncGElement
+instance IsNodeOrString SVGFEFuncBElement
+instance IsNodeOrString SVGFEFuncAElement
+instance IsNodeOrString SVGFEFloodElement
+instance IsNodeOrString SVGFEDropShadowElement
+instance IsNodeOrString SVGFEDistantLightElement
+instance IsNodeOrString SVGFEDisplacementMapElement
+instance IsNodeOrString SVGFEDiffuseLightingElement
+instance IsNodeOrString SVGFEConvolveMatrixElement
+instance IsNodeOrString SVGFECompositeElement
+instance IsNodeOrString SVGFEComponentTransferElement
+instance IsNodeOrString SVGFEColorMatrixElement
+instance IsNodeOrString SVGFEBlendElement
+instance IsNodeOrString SVGEllipseElement
+instance IsNodeOrString SVGElement
+instance IsNodeOrString SVGDescElement
+instance IsNodeOrString SVGDefsElement
+instance IsNodeOrString SVGCursorElement
+instance IsNodeOrString SVGComponentTransferFunctionElement
+instance IsNodeOrString SVGClipPathElement
+instance IsNodeOrString SVGCircleElement
+instance IsNodeOrString SVGAnimationElement
+instance IsNodeOrString SVGAnimateTransformElement
+instance IsNodeOrString SVGAnimateMotionElement
+instance IsNodeOrString SVGAnimateElement
+instance IsNodeOrString SVGAnimateColorElement
+instance IsNodeOrString SVGAltGlyphItemElement
+instance IsNodeOrString SVGAltGlyphElement
+instance IsNodeOrString SVGAltGlyphDefElement
+instance IsNodeOrString SVGAElement
+instance IsNodeOrString ProcessingInstruction
+instance IsNodeOrString HTMLVideoElement
+instance IsNodeOrString HTMLUnknownElement
+instance IsNodeOrString HTMLUListElement
+instance IsNodeOrString HTMLTrackElement
+instance IsNodeOrString HTMLTitleElement
+instance IsNodeOrString HTMLTimeElement
+instance IsNodeOrString HTMLTextAreaElement
+instance IsNodeOrString HTMLTemplateElement
+instance IsNodeOrString HTMLTableSectionElement
+instance IsNodeOrString HTMLTableRowElement
+instance IsNodeOrString HTMLTableElement
+instance IsNodeOrString HTMLTableColElement
+instance IsNodeOrString HTMLTableCellElement
+instance IsNodeOrString HTMLTableCaptionElement
+instance IsNodeOrString HTMLStyleElement
+instance IsNodeOrString HTMLSpanElement
+instance IsNodeOrString HTMLSourceElement
+instance IsNodeOrString HTMLSlotElement
+instance IsNodeOrString HTMLSelectElement
+instance IsNodeOrString HTMLScriptElement
+instance IsNodeOrString HTMLQuoteElement
+instance IsNodeOrString HTMLProgressElement
+instance IsNodeOrString HTMLPreElement
+instance IsNodeOrString HTMLPictureElement
+instance IsNodeOrString HTMLParamElement
+instance IsNodeOrString HTMLParagraphElement
+instance IsNodeOrString HTMLOutputElement
+instance IsNodeOrString HTMLOptionElement
+instance IsNodeOrString HTMLOptGroupElement
+instance IsNodeOrString HTMLObjectElement
+instance IsNodeOrString HTMLOListElement
+instance IsNodeOrString HTMLModElement
+instance IsNodeOrString HTMLMeterElement
+instance IsNodeOrString HTMLMetaElement
+instance IsNodeOrString HTMLMenuElement
+instance IsNodeOrString HTMLMediaElement
+instance IsNodeOrString HTMLMarqueeElement
+instance IsNodeOrString HTMLMapElement
+instance IsNodeOrString HTMLLinkElement
+instance IsNodeOrString HTMLLegendElement
+instance IsNodeOrString HTMLLabelElement
+instance IsNodeOrString HTMLLIElement
+instance IsNodeOrString HTMLKeygenElement
+instance IsNodeOrString HTMLInputElement
+instance IsNodeOrString HTMLImageElement
+instance IsNodeOrString HTMLIFrameElement
+instance IsNodeOrString HTMLHtmlElement
+instance IsNodeOrString HTMLHeadingElement
+instance IsNodeOrString HTMLHeadElement
+instance IsNodeOrString HTMLHRElement
+instance IsNodeOrString HTMLFrameSetElement
+instance IsNodeOrString HTMLFrameElement
+instance IsNodeOrString HTMLFormElement
+instance IsNodeOrString HTMLFontElement
+instance IsNodeOrString HTMLFieldSetElement
+instance IsNodeOrString HTMLEmbedElement
+instance IsNodeOrString HTMLElement
+instance IsNodeOrString HTMLDocument
+instance IsNodeOrString HTMLDivElement
+instance IsNodeOrString HTMLDirectoryElement
+instance IsNodeOrString HTMLDetailsElement
+instance IsNodeOrString HTMLDataListElement
+instance IsNodeOrString HTMLDataElement
+instance IsNodeOrString HTMLDListElement
+instance IsNodeOrString HTMLCanvasElement
+instance IsNodeOrString HTMLButtonElement
+instance IsNodeOrString HTMLBodyElement
+instance IsNodeOrString HTMLBaseElement
+instance IsNodeOrString HTMLBRElement
+instance IsNodeOrString HTMLAudioElement
+instance IsNodeOrString HTMLAttachmentElement
+instance IsNodeOrString HTMLAreaElement
+instance IsNodeOrString HTMLAppletElement
+instance IsNodeOrString HTMLAnchorElement
+instance IsNodeOrString Element
+instance IsNodeOrString DocumentType
+instance IsNodeOrString DocumentFragment
+instance IsNodeOrString Document
+instance IsNodeOrString Comment
+instance IsNodeOrString CharacterData
+instance IsNodeOrString CDATASection
+instance IsNodeOrString Attr
+
+newtype RTCIceCandidateOrInit = RTCIceCandidateOrInit { unRTCIceCandidateOrInit :: JSVal }
+
+instance PToJSVal RTCIceCandidateOrInit where
+  pToJSVal = unRTCIceCandidateOrInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidateOrInit where
+  pFromJSVal = RTCIceCandidateOrInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidateOrInit where
+  toJSVal = return . unRTCIceCandidateOrInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidateOrInit where
+  fromJSVal = return . fmap RTCIceCandidateOrInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRTCIceCandidateOrInit o
+
+toRTCIceCandidateOrInit :: IsRTCIceCandidateOrInit o => o -> RTCIceCandidateOrInit
+toRTCIceCandidateOrInit = RTCIceCandidateOrInit . coerce
+
+instance IsRTCIceCandidateOrInit RTCIceCandidateOrInit
+instance IsRTCIceCandidateOrInit RTCIceCandidate
+instance IsRTCIceCandidateOrInit RTCIceCandidateInit
+
+newtype RadioNodeListOrElement = RadioNodeListOrElement { unRadioNodeListOrElement :: JSVal }
+
+instance PToJSVal RadioNodeListOrElement where
+  pToJSVal = unRadioNodeListOrElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RadioNodeListOrElement where
+  pFromJSVal = RadioNodeListOrElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RadioNodeListOrElement where
+  toJSVal = return . unRadioNodeListOrElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RadioNodeListOrElement where
+  fromJSVal = return . fmap RadioNodeListOrElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRadioNodeListOrElement o
+
+toRadioNodeListOrElement :: IsRadioNodeListOrElement o => o -> RadioNodeListOrElement
+toRadioNodeListOrElement = RadioNodeListOrElement . coerce
+
+instance IsRadioNodeListOrElement RadioNodeListOrElement
+instance IsRadioNodeListOrElement Element
+instance IsRadioNodeListOrElement SVGViewElement
+instance IsRadioNodeListOrElement SVGVKernElement
+instance IsRadioNodeListOrElement SVGUseElement
+instance IsRadioNodeListOrElement SVGTitleElement
+instance IsRadioNodeListOrElement SVGTextPositioningElement
+instance IsRadioNodeListOrElement SVGTextPathElement
+instance IsRadioNodeListOrElement SVGTextElement
+instance IsRadioNodeListOrElement SVGTextContentElement
+instance IsRadioNodeListOrElement SVGTSpanElement
+instance IsRadioNodeListOrElement SVGTRefElement
+instance IsRadioNodeListOrElement SVGSymbolElement
+instance IsRadioNodeListOrElement SVGSwitchElement
+instance IsRadioNodeListOrElement SVGStyleElement
+instance IsRadioNodeListOrElement SVGStopElement
+instance IsRadioNodeListOrElement SVGSetElement
+instance IsRadioNodeListOrElement SVGScriptElement
+instance IsRadioNodeListOrElement SVGSVGElement
+instance IsRadioNodeListOrElement SVGRectElement
+instance IsRadioNodeListOrElement SVGRadialGradientElement
+instance IsRadioNodeListOrElement SVGPolylineElement
+instance IsRadioNodeListOrElement SVGPolygonElement
+instance IsRadioNodeListOrElement SVGPatternElement
+instance IsRadioNodeListOrElement SVGPathElement
+instance IsRadioNodeListOrElement SVGMissingGlyphElement
+instance IsRadioNodeListOrElement SVGMetadataElement
+instance IsRadioNodeListOrElement SVGMaskElement
+instance IsRadioNodeListOrElement SVGMarkerElement
+instance IsRadioNodeListOrElement SVGMPathElement
+instance IsRadioNodeListOrElement SVGLinearGradientElement
+instance IsRadioNodeListOrElement SVGLineElement
+instance IsRadioNodeListOrElement SVGImageElement
+instance IsRadioNodeListOrElement SVGHKernElement
+instance IsRadioNodeListOrElement SVGGraphicsElement
+instance IsRadioNodeListOrElement SVGGradientElement
+instance IsRadioNodeListOrElement SVGGlyphRefElement
+instance IsRadioNodeListOrElement SVGGlyphElement
+instance IsRadioNodeListOrElement SVGGElement
+instance IsRadioNodeListOrElement SVGForeignObjectElement
+instance IsRadioNodeListOrElement SVGFontFaceUriElement
+instance IsRadioNodeListOrElement SVGFontFaceSrcElement
+instance IsRadioNodeListOrElement SVGFontFaceNameElement
+instance IsRadioNodeListOrElement SVGFontFaceFormatElement
+instance IsRadioNodeListOrElement SVGFontFaceElement
+instance IsRadioNodeListOrElement SVGFontElement
+instance IsRadioNodeListOrElement SVGFilterElement
+instance IsRadioNodeListOrElement SVGFETurbulenceElement
+instance IsRadioNodeListOrElement SVGFETileElement
+instance IsRadioNodeListOrElement SVGFESpotLightElement
+instance IsRadioNodeListOrElement SVGFESpecularLightingElement
+instance IsRadioNodeListOrElement SVGFEPointLightElement
+instance IsRadioNodeListOrElement SVGFEOffsetElement
+instance IsRadioNodeListOrElement SVGFEMorphologyElement
+instance IsRadioNodeListOrElement SVGFEMergeNodeElement
+instance IsRadioNodeListOrElement SVGFEMergeElement
+instance IsRadioNodeListOrElement SVGFEImageElement
+instance IsRadioNodeListOrElement SVGFEGaussianBlurElement
+instance IsRadioNodeListOrElement SVGFEFuncRElement
+instance IsRadioNodeListOrElement SVGFEFuncGElement
+instance IsRadioNodeListOrElement SVGFEFuncBElement
+instance IsRadioNodeListOrElement SVGFEFuncAElement
+instance IsRadioNodeListOrElement SVGFEFloodElement
+instance IsRadioNodeListOrElement SVGFEDropShadowElement
+instance IsRadioNodeListOrElement SVGFEDistantLightElement
+instance IsRadioNodeListOrElement SVGFEDisplacementMapElement
+instance IsRadioNodeListOrElement SVGFEDiffuseLightingElement
+instance IsRadioNodeListOrElement SVGFEConvolveMatrixElement
+instance IsRadioNodeListOrElement SVGFECompositeElement
+instance IsRadioNodeListOrElement SVGFEComponentTransferElement
+instance IsRadioNodeListOrElement SVGFEColorMatrixElement
+instance IsRadioNodeListOrElement SVGFEBlendElement
+instance IsRadioNodeListOrElement SVGEllipseElement
+instance IsRadioNodeListOrElement SVGElement
+instance IsRadioNodeListOrElement SVGDescElement
+instance IsRadioNodeListOrElement SVGDefsElement
+instance IsRadioNodeListOrElement SVGCursorElement
+instance IsRadioNodeListOrElement SVGComponentTransferFunctionElement
+instance IsRadioNodeListOrElement SVGClipPathElement
+instance IsRadioNodeListOrElement SVGCircleElement
+instance IsRadioNodeListOrElement SVGAnimationElement
+instance IsRadioNodeListOrElement SVGAnimateTransformElement
+instance IsRadioNodeListOrElement SVGAnimateMotionElement
+instance IsRadioNodeListOrElement SVGAnimateElement
+instance IsRadioNodeListOrElement SVGAnimateColorElement
+instance IsRadioNodeListOrElement SVGAltGlyphItemElement
+instance IsRadioNodeListOrElement SVGAltGlyphElement
+instance IsRadioNodeListOrElement SVGAltGlyphDefElement
+instance IsRadioNodeListOrElement SVGAElement
+instance IsRadioNodeListOrElement HTMLVideoElement
+instance IsRadioNodeListOrElement HTMLUnknownElement
+instance IsRadioNodeListOrElement HTMLUListElement
+instance IsRadioNodeListOrElement HTMLTrackElement
+instance IsRadioNodeListOrElement HTMLTitleElement
+instance IsRadioNodeListOrElement HTMLTimeElement
+instance IsRadioNodeListOrElement HTMLTextAreaElement
+instance IsRadioNodeListOrElement HTMLTemplateElement
+instance IsRadioNodeListOrElement HTMLTableSectionElement
+instance IsRadioNodeListOrElement HTMLTableRowElement
+instance IsRadioNodeListOrElement HTMLTableElement
+instance IsRadioNodeListOrElement HTMLTableColElement
+instance IsRadioNodeListOrElement HTMLTableCellElement
+instance IsRadioNodeListOrElement HTMLTableCaptionElement
+instance IsRadioNodeListOrElement HTMLStyleElement
+instance IsRadioNodeListOrElement HTMLSpanElement
+instance IsRadioNodeListOrElement HTMLSourceElement
+instance IsRadioNodeListOrElement HTMLSlotElement
+instance IsRadioNodeListOrElement HTMLSelectElement
+instance IsRadioNodeListOrElement HTMLScriptElement
+instance IsRadioNodeListOrElement HTMLQuoteElement
+instance IsRadioNodeListOrElement HTMLProgressElement
+instance IsRadioNodeListOrElement HTMLPreElement
+instance IsRadioNodeListOrElement HTMLPictureElement
+instance IsRadioNodeListOrElement HTMLParamElement
+instance IsRadioNodeListOrElement HTMLParagraphElement
+instance IsRadioNodeListOrElement HTMLOutputElement
+instance IsRadioNodeListOrElement HTMLOptionElement
+instance IsRadioNodeListOrElement HTMLOptGroupElement
+instance IsRadioNodeListOrElement HTMLObjectElement
+instance IsRadioNodeListOrElement HTMLOListElement
+instance IsRadioNodeListOrElement HTMLModElement
+instance IsRadioNodeListOrElement HTMLMeterElement
+instance IsRadioNodeListOrElement HTMLMetaElement
+instance IsRadioNodeListOrElement HTMLMenuElement
+instance IsRadioNodeListOrElement HTMLMediaElement
+instance IsRadioNodeListOrElement HTMLMarqueeElement
+instance IsRadioNodeListOrElement HTMLMapElement
+instance IsRadioNodeListOrElement HTMLLinkElement
+instance IsRadioNodeListOrElement HTMLLegendElement
+instance IsRadioNodeListOrElement HTMLLabelElement
+instance IsRadioNodeListOrElement HTMLLIElement
+instance IsRadioNodeListOrElement HTMLKeygenElement
+instance IsRadioNodeListOrElement HTMLInputElement
+instance IsRadioNodeListOrElement HTMLImageElement
+instance IsRadioNodeListOrElement HTMLIFrameElement
+instance IsRadioNodeListOrElement HTMLHtmlElement
+instance IsRadioNodeListOrElement HTMLHeadingElement
+instance IsRadioNodeListOrElement HTMLHeadElement
+instance IsRadioNodeListOrElement HTMLHRElement
+instance IsRadioNodeListOrElement HTMLFrameSetElement
+instance IsRadioNodeListOrElement HTMLFrameElement
+instance IsRadioNodeListOrElement HTMLFormElement
+instance IsRadioNodeListOrElement HTMLFontElement
+instance IsRadioNodeListOrElement HTMLFieldSetElement
+instance IsRadioNodeListOrElement HTMLEmbedElement
+instance IsRadioNodeListOrElement HTMLElement
+instance IsRadioNodeListOrElement HTMLDivElement
+instance IsRadioNodeListOrElement HTMLDirectoryElement
+instance IsRadioNodeListOrElement HTMLDetailsElement
+instance IsRadioNodeListOrElement HTMLDataListElement
+instance IsRadioNodeListOrElement HTMLDataElement
+instance IsRadioNodeListOrElement HTMLDListElement
+instance IsRadioNodeListOrElement HTMLCanvasElement
+instance IsRadioNodeListOrElement HTMLButtonElement
+instance IsRadioNodeListOrElement HTMLBodyElement
+instance IsRadioNodeListOrElement HTMLBaseElement
+instance IsRadioNodeListOrElement HTMLBRElement
+instance IsRadioNodeListOrElement HTMLAudioElement
+instance IsRadioNodeListOrElement HTMLAttachmentElement
+instance IsRadioNodeListOrElement HTMLAreaElement
+instance IsRadioNodeListOrElement HTMLAppletElement
+instance IsRadioNodeListOrElement HTMLAnchorElement
+instance IsRadioNodeListOrElement RadioNodeList
+
+newtype RenderingContext = RenderingContext { unRenderingContext :: JSVal }
+
+instance PToJSVal RenderingContext where
+  pToJSVal = unRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RenderingContext where
+  pFromJSVal = RenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RenderingContext where
+  toJSVal = return . unRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RenderingContext where
+  fromJSVal = return . fmap RenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsRenderingContext o
+
+toRenderingContext :: IsRenderingContext o => o -> RenderingContext
+toRenderingContext = RenderingContext . coerce
+
+instance IsRenderingContext RenderingContext
+instance IsRenderingContext WebGLRenderingContextBase
+instance IsRenderingContext WebGLRenderingContext
+instance IsRenderingContext WebGL2RenderingContext
+instance IsRenderingContext CanvasRenderingContext2D
+
+newtype SQLValue = SQLValue { unSQLValue :: JSVal }
+
+instance PToJSVal SQLValue where
+  pToJSVal = unSQLValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLValue where
+  pFromJSVal = SQLValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLValue where
+  toJSVal = return . unSQLValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLValue where
+  fromJSVal = return . fmap SQLValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsSQLValue o
+
+instance IsSQLValue SQLValue
+instance IsSQLValue (Maybe Text)
+instance IsSQLValue (Maybe JSString)
+instance IsSQLValue (Maybe String)
+instance IsSQLValue Double
+
+newtype StringOrArrayBuffer = StringOrArrayBuffer { unStringOrArrayBuffer :: JSVal }
+
+instance PToJSVal StringOrArrayBuffer where
+  pToJSVal = unStringOrArrayBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StringOrArrayBuffer where
+  pFromJSVal = StringOrArrayBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StringOrArrayBuffer where
+  toJSVal = return . unStringOrArrayBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StringOrArrayBuffer where
+  fromJSVal = return . fmap StringOrArrayBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsStringOrArrayBuffer o
+
+instance IsStringOrArrayBuffer StringOrArrayBuffer
+instance IsStringOrArrayBuffer ArrayBuffer
+instance IsStringOrArrayBuffer Text
+instance IsStringOrArrayBuffer JSString
+instance IsStringOrArrayBuffer String
+
+newtype StringOrBinaryData = StringOrBinaryData { unStringOrBinaryData :: JSVal }
+
+instance PToJSVal StringOrBinaryData where
+  pToJSVal = unStringOrBinaryData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StringOrBinaryData where
+  pFromJSVal = StringOrBinaryData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StringOrBinaryData where
+  toJSVal = return . unStringOrBinaryData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StringOrBinaryData where
+  fromJSVal = return . fmap StringOrBinaryData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsStringOrBinaryData o
+
+instance IsStringOrBinaryData StringOrBinaryData
+instance IsStringOrBinaryData BinaryData
+instance IsStringOrBinaryData BufferSource
+instance IsStringOrBinaryData ArrayBufferView
+instance IsStringOrBinaryData ArrayBuffer
+instance IsStringOrBinaryData Text
+instance IsStringOrBinaryData JSString
+instance IsStringOrBinaryData String
+
+newtype StringOrStrings = StringOrStrings { unStringOrStrings :: JSVal }
+
+instance PToJSVal StringOrStrings where
+  pToJSVal = unStringOrStrings
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StringOrStrings where
+  pFromJSVal = StringOrStrings
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StringOrStrings where
+  toJSVal = return . unStringOrStrings
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StringOrStrings where
+  fromJSVal = return . fmap StringOrStrings . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsStringOrStrings o
+
+instance IsStringOrStrings StringOrStrings
+instance IsStringOrStrings [Text]
+instance IsStringOrStrings [JSString]
+instance IsStringOrStrings [String]
+instance IsStringOrStrings Text
+instance IsStringOrStrings JSString
+instance IsStringOrStrings String
+
+newtype TexImageSource = TexImageSource { unTexImageSource :: JSVal }
+
+instance PToJSVal TexImageSource where
+  pToJSVal = unTexImageSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TexImageSource where
+  pFromJSVal = TexImageSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TexImageSource where
+  toJSVal = return . unTexImageSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TexImageSource where
+  fromJSVal = return . fmap TexImageSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsTexImageSource o
+
+toTexImageSource :: IsTexImageSource o => o -> TexImageSource
+toTexImageSource = TexImageSource . coerce
+
+instance IsTexImageSource TexImageSource
+instance IsTexImageSource ImageData
+instance IsTexImageSource HTMLImageElement
+instance IsTexImageSource HTMLVideoElement
+instance IsTexImageSource HTMLCanvasElement
+
+newtype Track = Track { unTrack :: JSVal }
+
+instance PToJSVal Track where
+  pToJSVal = unTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Track where
+  pFromJSVal = Track
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Track where
+  toJSVal = return . unTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Track where
+  fromJSVal = return . fmap Track . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o, PFromJSVal o, PToJSVal o, Coercible o JSVal) => IsTrack o
+
+toTrack :: IsTrack o => o -> Track
+toTrack = Track . coerce
+
+instance IsTrack Track
+instance IsTrack TextTrack
+instance IsTrack AudioTrack
+instance IsTrack VideoTrack
+
+newtype URLSearchParamsInit = URLSearchParamsInit { unURLSearchParamsInit :: JSVal }
+
+instance PToJSVal URLSearchParamsInit where
+  pToJSVal = unURLSearchParamsInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URLSearchParamsInit where
+  pFromJSVal = URLSearchParamsInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URLSearchParamsInit where
+  toJSVal = return . unURLSearchParamsInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URLSearchParamsInit where
+  fromJSVal = return . fmap URLSearchParamsInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsURLSearchParamsInit o
+
+instance IsURLSearchParamsInit URLSearchParamsInit
+instance IsURLSearchParamsInit Text
+instance IsURLSearchParamsInit JSString
+instance IsURLSearchParamsInit String
+instance IsURLSearchParamsInit [[Text]]
+instance IsURLSearchParamsInit [[JSString]]
+instance IsURLSearchParamsInit [[String]]
+
+newtype XMLHttpRequestBody = XMLHttpRequestBody { unXMLHttpRequestBody :: JSVal }
+
+instance PToJSVal XMLHttpRequestBody where
+  pToJSVal = unXMLHttpRequestBody
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestBody where
+  pFromJSVal = XMLHttpRequestBody
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestBody where
+  toJSVal = return . unXMLHttpRequestBody
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestBody where
+  fromJSVal = return . fmap XMLHttpRequestBody . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+class (FromJSVal o, ToJSVal o) => IsXMLHttpRequestBody o
+
+instance IsXMLHttpRequestBody XMLHttpRequestBody
+instance IsXMLHttpRequestBody BodyInit
+instance IsXMLHttpRequestBody Blob
+instance IsXMLHttpRequestBody BinaryData
+instance IsXMLHttpRequestBody BufferSource
+instance IsXMLHttpRequestBody ArrayBufferView
+instance IsXMLHttpRequestBody ArrayBuffer
+instance IsXMLHttpRequestBody FormData
+instance IsXMLHttpRequestBody Text
+instance IsXMLHttpRequestBody JSString
+instance IsXMLHttpRequestBody String
+instance IsXMLHttpRequestBody Document
+instance IsXMLHttpRequestBody XMLDocument
+instance IsXMLHttpRequestBody HTMLDocument
+
+
+-- | Functions for this inteface are in "GHCJS.DOM.ANGLEInstancedArrays".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ANGLEInstancedArrays Mozilla ANGLEInstancedArrays documentation>
+newtype ANGLEInstancedArrays = ANGLEInstancedArrays { unANGLEInstancedArrays :: JSVal }
+
+instance Eq (ANGLEInstancedArrays) where
+  (ANGLEInstancedArrays a) == (ANGLEInstancedArrays b) = js_eq a b
+
+instance PToJSVal ANGLEInstancedArrays where
+  pToJSVal = unANGLEInstancedArrays
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ANGLEInstancedArrays where
+  pFromJSVal = ANGLEInstancedArrays
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ANGLEInstancedArrays where
+  toJSVal = return . unANGLEInstancedArrays
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ANGLEInstancedArrays where
+  fromJSVal = return . fmap ANGLEInstancedArrays . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ANGLEInstancedArrays where
+  typeGType _ = gTypeANGLEInstancedArrays
+  {-# INLINE typeGType #-}
+noANGLEInstancedArrays :: Maybe ANGLEInstancedArrays
+noANGLEInstancedArrays = Nothing
+{-# INLINE noANGLEInstancedArrays #-}
+
+foreign import javascript unsafe "window[\"ANGLEInstancedArrays\"]" gTypeANGLEInstancedArrays :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AbstractWorker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AbstractWorker Mozilla AbstractWorker documentation>
+newtype AbstractWorker = AbstractWorker { unAbstractWorker :: JSVal }
+
+instance Eq (AbstractWorker) where
+  (AbstractWorker a) == (AbstractWorker b) = js_eq a b
+
+instance PToJSVal AbstractWorker where
+  pToJSVal = unAbstractWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AbstractWorker where
+  pFromJSVal = AbstractWorker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AbstractWorker where
+  toJSVal = return . unAbstractWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AbstractWorker where
+  fromJSVal = return . fmap AbstractWorker . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsAbstractWorker o
+toAbstractWorker :: IsAbstractWorker o => o -> AbstractWorker
+toAbstractWorker = AbstractWorker . coerce
+
+instance IsAbstractWorker AbstractWorker
+instance IsGObject AbstractWorker where
+  typeGType _ = gTypeAbstractWorker
+  {-# INLINE typeGType #-}
+noAbstractWorker :: Maybe AbstractWorker
+noAbstractWorker = Nothing
+{-# INLINE noAbstractWorker #-}
+
+foreign import javascript unsafe "window[\"AbstractWorker\"]" gTypeAbstractWorker :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Acceleration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Acceleration Mozilla Acceleration documentation>
+newtype Acceleration = Acceleration { unAcceleration :: JSVal }
+
+instance Eq (Acceleration) where
+  (Acceleration a) == (Acceleration b) = js_eq a b
+
+instance PToJSVal Acceleration where
+  pToJSVal = unAcceleration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Acceleration where
+  pFromJSVal = Acceleration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Acceleration where
+  toJSVal = return . unAcceleration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Acceleration where
+  fromJSVal = return . fmap Acceleration . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Acceleration where
+  typeGType _ = gTypeAcceleration
+  {-# INLINE typeGType #-}
+noAcceleration :: Maybe Acceleration
+noAcceleration = Nothing
+{-# INLINE noAcceleration #-}
+
+foreign import javascript unsafe "window[\"Acceleration\"]" gTypeAcceleration :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AddEventListenerOptions".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventListenerOptions"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AddEventListenerOptions Mozilla AddEventListenerOptions documentation>
+newtype AddEventListenerOptions = AddEventListenerOptions { unAddEventListenerOptions :: JSVal }
+
+instance Eq (AddEventListenerOptions) where
+  (AddEventListenerOptions a) == (AddEventListenerOptions b) = js_eq a b
+
+instance PToJSVal AddEventListenerOptions where
+  pToJSVal = unAddEventListenerOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AddEventListenerOptions where
+  pFromJSVal = AddEventListenerOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AddEventListenerOptions where
+  toJSVal = return . unAddEventListenerOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AddEventListenerOptions where
+  fromJSVal = return . fmap AddEventListenerOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventListenerOptions AddEventListenerOptions
+instance IsGObject AddEventListenerOptions where
+  typeGType _ = gTypeAddEventListenerOptions
+  {-# INLINE typeGType #-}
+noAddEventListenerOptions :: Maybe AddEventListenerOptions
+noAddEventListenerOptions = Nothing
+{-# INLINE noAddEventListenerOptions #-}
+
+foreign import javascript unsafe "window[\"AddEventListenerOptions\"]" gTypeAddEventListenerOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AesCbcCfbParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AesCbcCfbParams Mozilla AesCbcCfbParams documentation>
+newtype AesCbcCfbParams = AesCbcCfbParams { unAesCbcCfbParams :: JSVal }
+
+instance Eq (AesCbcCfbParams) where
+  (AesCbcCfbParams a) == (AesCbcCfbParams b) = js_eq a b
+
+instance PToJSVal AesCbcCfbParams where
+  pToJSVal = unAesCbcCfbParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AesCbcCfbParams where
+  pFromJSVal = AesCbcCfbParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AesCbcCfbParams where
+  toJSVal = return . unAesCbcCfbParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AesCbcCfbParams where
+  fromJSVal = return . fmap AesCbcCfbParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters AesCbcCfbParams
+instance IsGObject AesCbcCfbParams where
+  typeGType _ = gTypeAesCbcCfbParams
+  {-# INLINE typeGType #-}
+noAesCbcCfbParams :: Maybe AesCbcCfbParams
+noAesCbcCfbParams = Nothing
+{-# INLINE noAesCbcCfbParams #-}
+
+foreign import javascript unsafe "window[\"AesCbcCfbParams\"]" gTypeAesCbcCfbParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AesCtrParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AesCtrParams Mozilla AesCtrParams documentation>
+newtype AesCtrParams = AesCtrParams { unAesCtrParams :: JSVal }
+
+instance Eq (AesCtrParams) where
+  (AesCtrParams a) == (AesCtrParams b) = js_eq a b
+
+instance PToJSVal AesCtrParams where
+  pToJSVal = unAesCtrParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AesCtrParams where
+  pFromJSVal = AesCtrParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AesCtrParams where
+  toJSVal = return . unAesCtrParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AesCtrParams where
+  fromJSVal = return . fmap AesCtrParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters AesCtrParams
+instance IsGObject AesCtrParams where
+  typeGType _ = gTypeAesCtrParams
+  {-# INLINE typeGType #-}
+noAesCtrParams :: Maybe AesCtrParams
+noAesCtrParams = Nothing
+{-# INLINE noAesCtrParams #-}
+
+foreign import javascript unsafe "window[\"AesCtrParams\"]" gTypeAesCtrParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AesGcmParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AesGcmParams Mozilla AesGcmParams documentation>
+newtype AesGcmParams = AesGcmParams { unAesGcmParams :: JSVal }
+
+instance Eq (AesGcmParams) where
+  (AesGcmParams a) == (AesGcmParams b) = js_eq a b
+
+instance PToJSVal AesGcmParams where
+  pToJSVal = unAesGcmParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AesGcmParams where
+  pFromJSVal = AesGcmParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AesGcmParams where
+  toJSVal = return . unAesGcmParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AesGcmParams where
+  fromJSVal = return . fmap AesGcmParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters AesGcmParams
+instance IsGObject AesGcmParams where
+  typeGType _ = gTypeAesGcmParams
+  {-# INLINE typeGType #-}
+noAesGcmParams :: Maybe AesGcmParams
+noAesGcmParams = Nothing
+{-# INLINE noAesGcmParams #-}
+
+foreign import javascript unsafe "window[\"AesGcmParams\"]" gTypeAesGcmParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AesKeyParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AesKeyParams Mozilla AesKeyParams documentation>
+newtype AesKeyParams = AesKeyParams { unAesKeyParams :: JSVal }
+
+instance Eq (AesKeyParams) where
+  (AesKeyParams a) == (AesKeyParams b) = js_eq a b
+
+instance PToJSVal AesKeyParams where
+  pToJSVal = unAesKeyParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AesKeyParams where
+  pFromJSVal = AesKeyParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AesKeyParams where
+  toJSVal = return . unAesKeyParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AesKeyParams where
+  fromJSVal = return . fmap AesKeyParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters AesKeyParams
+instance IsGObject AesKeyParams where
+  typeGType _ = gTypeAesKeyParams
+  {-# INLINE typeGType #-}
+noAesKeyParams :: Maybe AesKeyParams
+noAesKeyParams = Nothing
+{-# INLINE noAesKeyParams #-}
+
+foreign import javascript unsafe "window[\"AesKeyParams\"]" gTypeAesKeyParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AnalyserNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode Mozilla AnalyserNode documentation>
+newtype AnalyserNode = AnalyserNode { unAnalyserNode :: JSVal }
+
+instance Eq (AnalyserNode) where
+  (AnalyserNode a) == (AnalyserNode b) = js_eq a b
+
+instance PToJSVal AnalyserNode where
+  pToJSVal = unAnalyserNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnalyserNode where
+  pFromJSVal = AnalyserNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnalyserNode where
+  toJSVal = return . unAnalyserNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnalyserNode where
+  fromJSVal = return . fmap AnalyserNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode AnalyserNode
+instance IsEventTarget AnalyserNode
+instance IsGObject AnalyserNode where
+  typeGType _ = gTypeAnalyserNode
+  {-# INLINE typeGType #-}
+noAnalyserNode :: Maybe AnalyserNode
+noAnalyserNode = Nothing
+{-# INLINE noAnalyserNode #-}
+
+foreign import javascript unsafe "window[\"AnalyserNode\"]" gTypeAnalyserNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Animatable".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Animatable Mozilla Animatable documentation>
+newtype Animatable = Animatable { unAnimatable :: JSVal }
+
+instance Eq (Animatable) where
+  (Animatable a) == (Animatable b) = js_eq a b
+
+instance PToJSVal Animatable where
+  pToJSVal = unAnimatable
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Animatable where
+  pFromJSVal = Animatable
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Animatable where
+  toJSVal = return . unAnimatable
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Animatable where
+  fromJSVal = return . fmap Animatable . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsAnimatable o
+toAnimatable :: IsAnimatable o => o -> Animatable
+toAnimatable = Animatable . coerce
+
+instance IsAnimatable Animatable
+instance IsGObject Animatable where
+  typeGType _ = gTypeAnimatable
+  {-# INLINE typeGType #-}
+noAnimatable :: Maybe Animatable
+noAnimatable = Nothing
+{-# INLINE noAnimatable #-}
+
+foreign import javascript unsafe "window[\"Animatable\"]" gTypeAnimatable :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Animation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Animation Mozilla Animation documentation>
+newtype Animation = Animation { unAnimation :: JSVal }
+
+instance Eq (Animation) where
+  (Animation a) == (Animation b) = js_eq a b
+
+instance PToJSVal Animation where
+  pToJSVal = unAnimation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Animation where
+  pFromJSVal = Animation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Animation where
+  toJSVal = return . unAnimation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Animation where
+  fromJSVal = return . fmap Animation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Animation where
+  typeGType _ = gTypeAnimation
+  {-# INLINE typeGType #-}
+noAnimation :: Maybe Animation
+noAnimation = Nothing
+{-# INLINE noAnimation #-}
+
+foreign import javascript unsafe "window[\"Animation\"]" gTypeAnimation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AnimationEffect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEffect Mozilla AnimationEffect documentation>
+newtype AnimationEffect = AnimationEffect { unAnimationEffect :: JSVal }
+
+instance Eq (AnimationEffect) where
+  (AnimationEffect a) == (AnimationEffect b) = js_eq a b
+
+instance PToJSVal AnimationEffect where
+  pToJSVal = unAnimationEffect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationEffect where
+  pFromJSVal = AnimationEffect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationEffect where
+  toJSVal = return . unAnimationEffect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationEffect where
+  fromJSVal = return . fmap AnimationEffect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsAnimationEffect o
+toAnimationEffect :: IsAnimationEffect o => o -> AnimationEffect
+toAnimationEffect = AnimationEffect . coerce
+
+instance IsAnimationEffect AnimationEffect
+instance IsGObject AnimationEffect where
+  typeGType _ = gTypeAnimationEffect
+  {-# INLINE typeGType #-}
+noAnimationEffect :: Maybe AnimationEffect
+noAnimationEffect = Nothing
+{-# INLINE noAnimationEffect #-}
+
+foreign import javascript unsafe "window[\"AnimationEffect\"]" gTypeAnimationEffect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AnimationEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent Mozilla AnimationEvent documentation>
+newtype AnimationEvent = AnimationEvent { unAnimationEvent :: JSVal }
+
+instance Eq (AnimationEvent) where
+  (AnimationEvent a) == (AnimationEvent b) = js_eq a b
+
+instance PToJSVal AnimationEvent where
+  pToJSVal = unAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationEvent where
+  pFromJSVal = AnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationEvent where
+  toJSVal = return . unAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationEvent where
+  fromJSVal = return . fmap AnimationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent AnimationEvent
+instance IsGObject AnimationEvent where
+  typeGType _ = gTypeAnimationEvent
+  {-# INLINE typeGType #-}
+noAnimationEvent :: Maybe AnimationEvent
+noAnimationEvent = Nothing
+{-# INLINE noAnimationEvent #-}
+
+foreign import javascript unsafe "window[\"AnimationEvent\"]" gTypeAnimationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AnimationEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationEventInit Mozilla AnimationEventInit documentation>
+newtype AnimationEventInit = AnimationEventInit { unAnimationEventInit :: JSVal }
+
+instance Eq (AnimationEventInit) where
+  (AnimationEventInit a) == (AnimationEventInit b) = js_eq a b
+
+instance PToJSVal AnimationEventInit where
+  pToJSVal = unAnimationEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationEventInit where
+  pFromJSVal = AnimationEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationEventInit where
+  toJSVal = return . unAnimationEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationEventInit where
+  fromJSVal = return . fmap AnimationEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit AnimationEventInit
+instance IsGObject AnimationEventInit where
+  typeGType _ = gTypeAnimationEventInit
+  {-# INLINE typeGType #-}
+noAnimationEventInit :: Maybe AnimationEventInit
+noAnimationEventInit = Nothing
+{-# INLINE noAnimationEventInit #-}
+
+foreign import javascript unsafe "window[\"AnimationEventInit\"]" gTypeAnimationEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AnimationTimeline".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AnimationTimeline Mozilla AnimationTimeline documentation>
+newtype AnimationTimeline = AnimationTimeline { unAnimationTimeline :: JSVal }
+
+instance Eq (AnimationTimeline) where
+  (AnimationTimeline a) == (AnimationTimeline b) = js_eq a b
+
+instance PToJSVal AnimationTimeline where
+  pToJSVal = unAnimationTimeline
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AnimationTimeline where
+  pFromJSVal = AnimationTimeline
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AnimationTimeline where
+  toJSVal = return . unAnimationTimeline
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AnimationTimeline where
+  fromJSVal = return . fmap AnimationTimeline . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsAnimationTimeline o
+toAnimationTimeline :: IsAnimationTimeline o => o -> AnimationTimeline
+toAnimationTimeline = AnimationTimeline . coerce
+
+instance IsAnimationTimeline AnimationTimeline
+instance IsGObject AnimationTimeline where
+  typeGType _ = gTypeAnimationTimeline
+  {-# INLINE typeGType #-}
+noAnimationTimeline :: Maybe AnimationTimeline
+noAnimationTimeline = Nothing
+{-# INLINE noAnimationTimeline #-}
+
+foreign import javascript unsafe "window[\"AnimationTimeline\"]" gTypeAnimationTimeline :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayError Mozilla ApplePayError documentation>
+newtype ApplePayError = ApplePayError { unApplePayError :: JSVal }
+
+instance Eq (ApplePayError) where
+  (ApplePayError a) == (ApplePayError b) = js_eq a b
+
+instance PToJSVal ApplePayError where
+  pToJSVal = unApplePayError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayError where
+  pFromJSVal = ApplePayError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayError where
+  toJSVal = return . unApplePayError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayError where
+  fromJSVal = return . fmap ApplePayError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayError where
+  typeGType _ = gTypeApplePayError
+  {-# INLINE typeGType #-}
+noApplePayError :: Maybe ApplePayError
+noApplePayError = Nothing
+{-# INLINE noApplePayError #-}
+
+foreign import javascript unsafe "window[\"ApplePayError\"]" gTypeApplePayError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayLineItem".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayLineItem Mozilla ApplePayLineItem documentation>
+newtype ApplePayLineItem = ApplePayLineItem { unApplePayLineItem :: JSVal }
+
+instance Eq (ApplePayLineItem) where
+  (ApplePayLineItem a) == (ApplePayLineItem b) = js_eq a b
+
+instance PToJSVal ApplePayLineItem where
+  pToJSVal = unApplePayLineItem
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayLineItem where
+  pFromJSVal = ApplePayLineItem
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayLineItem where
+  toJSVal = return . unApplePayLineItem
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayLineItem where
+  fromJSVal = return . fmap ApplePayLineItem . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayLineItem where
+  typeGType _ = gTypeApplePayLineItem
+  {-# INLINE typeGType #-}
+noApplePayLineItem :: Maybe ApplePayLineItem
+noApplePayLineItem = Nothing
+{-# INLINE noApplePayLineItem #-}
+
+foreign import javascript unsafe "window[\"ApplePayLineItem\"]" gTypeApplePayLineItem :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPayment".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPayment Mozilla ApplePayPayment documentation>
+newtype ApplePayPayment = ApplePayPayment { unApplePayPayment :: JSVal }
+
+instance Eq (ApplePayPayment) where
+  (ApplePayPayment a) == (ApplePayPayment b) = js_eq a b
+
+instance PToJSVal ApplePayPayment where
+  pToJSVal = unApplePayPayment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPayment where
+  pFromJSVal = ApplePayPayment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPayment where
+  toJSVal = return . unApplePayPayment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPayment where
+  fromJSVal = return . fmap ApplePayPayment . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPayment where
+  typeGType _ = gTypeApplePayPayment
+  {-# INLINE typeGType #-}
+noApplePayPayment :: Maybe ApplePayPayment
+noApplePayPayment = Nothing
+{-# INLINE noApplePayPayment #-}
+
+foreign import javascript unsafe "window[\"ApplePayPayment\"]" gTypeApplePayPayment :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentAuthorizationResult".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizationResult Mozilla ApplePayPaymentAuthorizationResult documentation>
+newtype ApplePayPaymentAuthorizationResult = ApplePayPaymentAuthorizationResult { unApplePayPaymentAuthorizationResult :: JSVal }
+
+instance Eq (ApplePayPaymentAuthorizationResult) where
+  (ApplePayPaymentAuthorizationResult a) == (ApplePayPaymentAuthorizationResult b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentAuthorizationResult where
+  pToJSVal = unApplePayPaymentAuthorizationResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentAuthorizationResult where
+  pFromJSVal = ApplePayPaymentAuthorizationResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentAuthorizationResult where
+  toJSVal = return . unApplePayPaymentAuthorizationResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentAuthorizationResult where
+  fromJSVal = return . fmap ApplePayPaymentAuthorizationResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentAuthorizationResult where
+  typeGType _ = gTypeApplePayPaymentAuthorizationResult
+  {-# INLINE typeGType #-}
+noApplePayPaymentAuthorizationResult :: Maybe ApplePayPaymentAuthorizationResult
+noApplePayPaymentAuthorizationResult = Nothing
+{-# INLINE noApplePayPaymentAuthorizationResult #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentAuthorizationResult\"]" gTypeApplePayPaymentAuthorizationResult :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentAuthorizedEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentAuthorizedEvent Mozilla ApplePayPaymentAuthorizedEvent documentation>
+newtype ApplePayPaymentAuthorizedEvent = ApplePayPaymentAuthorizedEvent { unApplePayPaymentAuthorizedEvent :: JSVal }
+
+instance Eq (ApplePayPaymentAuthorizedEvent) where
+  (ApplePayPaymentAuthorizedEvent a) == (ApplePayPaymentAuthorizedEvent b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentAuthorizedEvent where
+  pToJSVal = unApplePayPaymentAuthorizedEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentAuthorizedEvent where
+  pFromJSVal = ApplePayPaymentAuthorizedEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentAuthorizedEvent where
+  toJSVal = return . unApplePayPaymentAuthorizedEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentAuthorizedEvent where
+  fromJSVal = return . fmap ApplePayPaymentAuthorizedEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ApplePayPaymentAuthorizedEvent
+instance IsGObject ApplePayPaymentAuthorizedEvent where
+  typeGType _ = gTypeApplePayPaymentAuthorizedEvent
+  {-# INLINE typeGType #-}
+noApplePayPaymentAuthorizedEvent :: Maybe ApplePayPaymentAuthorizedEvent
+noApplePayPaymentAuthorizedEvent = Nothing
+{-# INLINE noApplePayPaymentAuthorizedEvent #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentAuthorizedEvent\"]" gTypeApplePayPaymentAuthorizedEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentContact".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentContact Mozilla ApplePayPaymentContact documentation>
+newtype ApplePayPaymentContact = ApplePayPaymentContact { unApplePayPaymentContact :: JSVal }
+
+instance Eq (ApplePayPaymentContact) where
+  (ApplePayPaymentContact a) == (ApplePayPaymentContact b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentContact where
+  pToJSVal = unApplePayPaymentContact
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentContact where
+  pFromJSVal = ApplePayPaymentContact
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentContact where
+  toJSVal = return . unApplePayPaymentContact
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentContact where
+  fromJSVal = return . fmap ApplePayPaymentContact . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentContact where
+  typeGType _ = gTypeApplePayPaymentContact
+  {-# INLINE typeGType #-}
+noApplePayPaymentContact :: Maybe ApplePayPaymentContact
+noApplePayPaymentContact = Nothing
+{-# INLINE noApplePayPaymentContact #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentContact\"]" gTypeApplePayPaymentContact :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentMethod".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethod Mozilla ApplePayPaymentMethod documentation>
+newtype ApplePayPaymentMethod = ApplePayPaymentMethod { unApplePayPaymentMethod :: JSVal }
+
+instance Eq (ApplePayPaymentMethod) where
+  (ApplePayPaymentMethod a) == (ApplePayPaymentMethod b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentMethod where
+  pToJSVal = unApplePayPaymentMethod
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentMethod where
+  pFromJSVal = ApplePayPaymentMethod
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentMethod where
+  toJSVal = return . unApplePayPaymentMethod
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentMethod where
+  fromJSVal = return . fmap ApplePayPaymentMethod . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentMethod where
+  typeGType _ = gTypeApplePayPaymentMethod
+  {-# INLINE typeGType #-}
+noApplePayPaymentMethod :: Maybe ApplePayPaymentMethod
+noApplePayPaymentMethod = Nothing
+{-# INLINE noApplePayPaymentMethod #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentMethod\"]" gTypeApplePayPaymentMethod :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentMethodSelectedEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodSelectedEvent Mozilla ApplePayPaymentMethodSelectedEvent documentation>
+newtype ApplePayPaymentMethodSelectedEvent = ApplePayPaymentMethodSelectedEvent { unApplePayPaymentMethodSelectedEvent :: JSVal }
+
+instance Eq (ApplePayPaymentMethodSelectedEvent) where
+  (ApplePayPaymentMethodSelectedEvent a) == (ApplePayPaymentMethodSelectedEvent b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentMethodSelectedEvent where
+  pToJSVal = unApplePayPaymentMethodSelectedEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentMethodSelectedEvent where
+  pFromJSVal = ApplePayPaymentMethodSelectedEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentMethodSelectedEvent where
+  toJSVal = return . unApplePayPaymentMethodSelectedEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentMethodSelectedEvent where
+  fromJSVal = return . fmap ApplePayPaymentMethodSelectedEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ApplePayPaymentMethodSelectedEvent
+instance IsGObject ApplePayPaymentMethodSelectedEvent where
+  typeGType _ = gTypeApplePayPaymentMethodSelectedEvent
+  {-# INLINE typeGType #-}
+noApplePayPaymentMethodSelectedEvent :: Maybe ApplePayPaymentMethodSelectedEvent
+noApplePayPaymentMethodSelectedEvent = Nothing
+{-# INLINE noApplePayPaymentMethodSelectedEvent #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentMethodSelectedEvent\"]" gTypeApplePayPaymentMethodSelectedEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentMethodUpdate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentMethodUpdate Mozilla ApplePayPaymentMethodUpdate documentation>
+newtype ApplePayPaymentMethodUpdate = ApplePayPaymentMethodUpdate { unApplePayPaymentMethodUpdate :: JSVal }
+
+instance Eq (ApplePayPaymentMethodUpdate) where
+  (ApplePayPaymentMethodUpdate a) == (ApplePayPaymentMethodUpdate b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentMethodUpdate where
+  pToJSVal = unApplePayPaymentMethodUpdate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentMethodUpdate where
+  pFromJSVal = ApplePayPaymentMethodUpdate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentMethodUpdate where
+  toJSVal = return . unApplePayPaymentMethodUpdate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentMethodUpdate where
+  fromJSVal = return . fmap ApplePayPaymentMethodUpdate . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentMethodUpdate where
+  typeGType _ = gTypeApplePayPaymentMethodUpdate
+  {-# INLINE typeGType #-}
+noApplePayPaymentMethodUpdate :: Maybe ApplePayPaymentMethodUpdate
+noApplePayPaymentMethodUpdate = Nothing
+{-# INLINE noApplePayPaymentMethodUpdate #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentMethodUpdate\"]" gTypeApplePayPaymentMethodUpdate :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentPass".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentPass Mozilla ApplePayPaymentPass documentation>
+newtype ApplePayPaymentPass = ApplePayPaymentPass { unApplePayPaymentPass :: JSVal }
+
+instance Eq (ApplePayPaymentPass) where
+  (ApplePayPaymentPass a) == (ApplePayPaymentPass b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentPass where
+  pToJSVal = unApplePayPaymentPass
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentPass where
+  pFromJSVal = ApplePayPaymentPass
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentPass where
+  toJSVal = return . unApplePayPaymentPass
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentPass where
+  fromJSVal = return . fmap ApplePayPaymentPass . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentPass where
+  typeGType _ = gTypeApplePayPaymentPass
+  {-# INLINE typeGType #-}
+noApplePayPaymentPass :: Maybe ApplePayPaymentPass
+noApplePayPaymentPass = Nothing
+{-# INLINE noApplePayPaymentPass #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentPass\"]" gTypeApplePayPaymentPass :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentRequest".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentRequest Mozilla ApplePayPaymentRequest documentation>
+newtype ApplePayPaymentRequest = ApplePayPaymentRequest { unApplePayPaymentRequest :: JSVal }
+
+instance Eq (ApplePayPaymentRequest) where
+  (ApplePayPaymentRequest a) == (ApplePayPaymentRequest b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentRequest where
+  pToJSVal = unApplePayPaymentRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentRequest where
+  pFromJSVal = ApplePayPaymentRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentRequest where
+  toJSVal = return . unApplePayPaymentRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentRequest where
+  fromJSVal = return . fmap ApplePayPaymentRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentRequest where
+  typeGType _ = gTypeApplePayPaymentRequest
+  {-# INLINE typeGType #-}
+noApplePayPaymentRequest :: Maybe ApplePayPaymentRequest
+noApplePayPaymentRequest = Nothing
+{-# INLINE noApplePayPaymentRequest #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentRequest\"]" gTypeApplePayPaymentRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayPaymentToken".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayPaymentToken Mozilla ApplePayPaymentToken documentation>
+newtype ApplePayPaymentToken = ApplePayPaymentToken { unApplePayPaymentToken :: JSVal }
+
+instance Eq (ApplePayPaymentToken) where
+  (ApplePayPaymentToken a) == (ApplePayPaymentToken b) = js_eq a b
+
+instance PToJSVal ApplePayPaymentToken where
+  pToJSVal = unApplePayPaymentToken
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayPaymentToken where
+  pFromJSVal = ApplePayPaymentToken
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayPaymentToken where
+  toJSVal = return . unApplePayPaymentToken
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayPaymentToken where
+  fromJSVal = return . fmap ApplePayPaymentToken . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayPaymentToken where
+  typeGType _ = gTypeApplePayPaymentToken
+  {-# INLINE typeGType #-}
+noApplePayPaymentToken :: Maybe ApplePayPaymentToken
+noApplePayPaymentToken = Nothing
+{-# INLINE noApplePayPaymentToken #-}
+
+foreign import javascript unsafe "window[\"ApplePayPaymentToken\"]" gTypeApplePayPaymentToken :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePaySession".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePaySession Mozilla ApplePaySession documentation>
+newtype ApplePaySession = ApplePaySession { unApplePaySession :: JSVal }
+
+instance Eq (ApplePaySession) where
+  (ApplePaySession a) == (ApplePaySession b) = js_eq a b
+
+instance PToJSVal ApplePaySession where
+  pToJSVal = unApplePaySession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePaySession where
+  pFromJSVal = ApplePaySession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePaySession where
+  toJSVal = return . unApplePaySession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePaySession where
+  fromJSVal = return . fmap ApplePaySession . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget ApplePaySession
+instance IsGObject ApplePaySession where
+  typeGType _ = gTypeApplePaySession
+  {-# INLINE typeGType #-}
+noApplePaySession :: Maybe ApplePaySession
+noApplePaySession = Nothing
+{-# INLINE noApplePaySession #-}
+
+foreign import javascript unsafe "window[\"ApplePaySession\"]" gTypeApplePaySession :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayShippingContactSelectedEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactSelectedEvent Mozilla ApplePayShippingContactSelectedEvent documentation>
+newtype ApplePayShippingContactSelectedEvent = ApplePayShippingContactSelectedEvent { unApplePayShippingContactSelectedEvent :: JSVal }
+
+instance Eq (ApplePayShippingContactSelectedEvent) where
+  (ApplePayShippingContactSelectedEvent a) == (ApplePayShippingContactSelectedEvent b) = js_eq a b
+
+instance PToJSVal ApplePayShippingContactSelectedEvent where
+  pToJSVal = unApplePayShippingContactSelectedEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayShippingContactSelectedEvent where
+  pFromJSVal = ApplePayShippingContactSelectedEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayShippingContactSelectedEvent where
+  toJSVal = return . unApplePayShippingContactSelectedEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayShippingContactSelectedEvent where
+  fromJSVal = return . fmap ApplePayShippingContactSelectedEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ApplePayShippingContactSelectedEvent
+instance IsGObject ApplePayShippingContactSelectedEvent where
+  typeGType _ = gTypeApplePayShippingContactSelectedEvent
+  {-# INLINE typeGType #-}
+noApplePayShippingContactSelectedEvent :: Maybe ApplePayShippingContactSelectedEvent
+noApplePayShippingContactSelectedEvent = Nothing
+{-# INLINE noApplePayShippingContactSelectedEvent #-}
+
+foreign import javascript unsafe "window[\"ApplePayShippingContactSelectedEvent\"]" gTypeApplePayShippingContactSelectedEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayShippingContactUpdate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingContactUpdate Mozilla ApplePayShippingContactUpdate documentation>
+newtype ApplePayShippingContactUpdate = ApplePayShippingContactUpdate { unApplePayShippingContactUpdate :: JSVal }
+
+instance Eq (ApplePayShippingContactUpdate) where
+  (ApplePayShippingContactUpdate a) == (ApplePayShippingContactUpdate b) = js_eq a b
+
+instance PToJSVal ApplePayShippingContactUpdate where
+  pToJSVal = unApplePayShippingContactUpdate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayShippingContactUpdate where
+  pFromJSVal = ApplePayShippingContactUpdate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayShippingContactUpdate where
+  toJSVal = return . unApplePayShippingContactUpdate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayShippingContactUpdate where
+  fromJSVal = return . fmap ApplePayShippingContactUpdate . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayShippingContactUpdate where
+  typeGType _ = gTypeApplePayShippingContactUpdate
+  {-# INLINE typeGType #-}
+noApplePayShippingContactUpdate :: Maybe ApplePayShippingContactUpdate
+noApplePayShippingContactUpdate = Nothing
+{-# INLINE noApplePayShippingContactUpdate #-}
+
+foreign import javascript unsafe "window[\"ApplePayShippingContactUpdate\"]" gTypeApplePayShippingContactUpdate :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayShippingMethod".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethod Mozilla ApplePayShippingMethod documentation>
+newtype ApplePayShippingMethod = ApplePayShippingMethod { unApplePayShippingMethod :: JSVal }
+
+instance Eq (ApplePayShippingMethod) where
+  (ApplePayShippingMethod a) == (ApplePayShippingMethod b) = js_eq a b
+
+instance PToJSVal ApplePayShippingMethod where
+  pToJSVal = unApplePayShippingMethod
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayShippingMethod where
+  pFromJSVal = ApplePayShippingMethod
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayShippingMethod where
+  toJSVal = return . unApplePayShippingMethod
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayShippingMethod where
+  fromJSVal = return . fmap ApplePayShippingMethod . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayShippingMethod where
+  typeGType _ = gTypeApplePayShippingMethod
+  {-# INLINE typeGType #-}
+noApplePayShippingMethod :: Maybe ApplePayShippingMethod
+noApplePayShippingMethod = Nothing
+{-# INLINE noApplePayShippingMethod #-}
+
+foreign import javascript unsafe "window[\"ApplePayShippingMethod\"]" gTypeApplePayShippingMethod :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayShippingMethodSelectedEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodSelectedEvent Mozilla ApplePayShippingMethodSelectedEvent documentation>
+newtype ApplePayShippingMethodSelectedEvent = ApplePayShippingMethodSelectedEvent { unApplePayShippingMethodSelectedEvent :: JSVal }
+
+instance Eq (ApplePayShippingMethodSelectedEvent) where
+  (ApplePayShippingMethodSelectedEvent a) == (ApplePayShippingMethodSelectedEvent b) = js_eq a b
+
+instance PToJSVal ApplePayShippingMethodSelectedEvent where
+  pToJSVal = unApplePayShippingMethodSelectedEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayShippingMethodSelectedEvent where
+  pFromJSVal = ApplePayShippingMethodSelectedEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayShippingMethodSelectedEvent where
+  toJSVal = return . unApplePayShippingMethodSelectedEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayShippingMethodSelectedEvent where
+  fromJSVal = return . fmap ApplePayShippingMethodSelectedEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ApplePayShippingMethodSelectedEvent
+instance IsGObject ApplePayShippingMethodSelectedEvent where
+  typeGType _ = gTypeApplePayShippingMethodSelectedEvent
+  {-# INLINE typeGType #-}
+noApplePayShippingMethodSelectedEvent :: Maybe ApplePayShippingMethodSelectedEvent
+noApplePayShippingMethodSelectedEvent = Nothing
+{-# INLINE noApplePayShippingMethodSelectedEvent #-}
+
+foreign import javascript unsafe "window[\"ApplePayShippingMethodSelectedEvent\"]" gTypeApplePayShippingMethodSelectedEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayShippingMethodUpdate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayShippingMethodUpdate Mozilla ApplePayShippingMethodUpdate documentation>
+newtype ApplePayShippingMethodUpdate = ApplePayShippingMethodUpdate { unApplePayShippingMethodUpdate :: JSVal }
+
+instance Eq (ApplePayShippingMethodUpdate) where
+  (ApplePayShippingMethodUpdate a) == (ApplePayShippingMethodUpdate b) = js_eq a b
+
+instance PToJSVal ApplePayShippingMethodUpdate where
+  pToJSVal = unApplePayShippingMethodUpdate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayShippingMethodUpdate where
+  pFromJSVal = ApplePayShippingMethodUpdate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayShippingMethodUpdate where
+  toJSVal = return . unApplePayShippingMethodUpdate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayShippingMethodUpdate where
+  fromJSVal = return . fmap ApplePayShippingMethodUpdate . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ApplePayShippingMethodUpdate where
+  typeGType _ = gTypeApplePayShippingMethodUpdate
+  {-# INLINE typeGType #-}
+noApplePayShippingMethodUpdate :: Maybe ApplePayShippingMethodUpdate
+noApplePayShippingMethodUpdate = Nothing
+{-# INLINE noApplePayShippingMethodUpdate #-}
+
+foreign import javascript unsafe "window[\"ApplePayShippingMethodUpdate\"]" gTypeApplePayShippingMethodUpdate :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplePayValidateMerchantEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplePayValidateMerchantEvent Mozilla ApplePayValidateMerchantEvent documentation>
+newtype ApplePayValidateMerchantEvent = ApplePayValidateMerchantEvent { unApplePayValidateMerchantEvent :: JSVal }
+
+instance Eq (ApplePayValidateMerchantEvent) where
+  (ApplePayValidateMerchantEvent a) == (ApplePayValidateMerchantEvent b) = js_eq a b
+
+instance PToJSVal ApplePayValidateMerchantEvent where
+  pToJSVal = unApplePayValidateMerchantEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplePayValidateMerchantEvent where
+  pFromJSVal = ApplePayValidateMerchantEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplePayValidateMerchantEvent where
+  toJSVal = return . unApplePayValidateMerchantEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplePayValidateMerchantEvent where
+  fromJSVal = return . fmap ApplePayValidateMerchantEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ApplePayValidateMerchantEvent
+instance IsGObject ApplePayValidateMerchantEvent where
+  typeGType _ = gTypeApplePayValidateMerchantEvent
+  {-# INLINE typeGType #-}
+noApplePayValidateMerchantEvent :: Maybe ApplePayValidateMerchantEvent
+noApplePayValidateMerchantEvent = Nothing
+{-# INLINE noApplePayValidateMerchantEvent #-}
+
+foreign import javascript unsafe "window[\"ApplePayValidateMerchantEvent\"]" gTypeApplePayValidateMerchantEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ApplicationCache".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ApplicationCache Mozilla ApplicationCache documentation>
+newtype ApplicationCache = ApplicationCache { unApplicationCache :: JSVal }
+
+instance Eq (ApplicationCache) where
+  (ApplicationCache a) == (ApplicationCache b) = js_eq a b
+
+instance PToJSVal ApplicationCache where
+  pToJSVal = unApplicationCache
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ApplicationCache where
+  pFromJSVal = ApplicationCache
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ApplicationCache where
+  toJSVal = return . unApplicationCache
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ApplicationCache where
+  fromJSVal = return . fmap ApplicationCache . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget ApplicationCache
+instance IsGObject ApplicationCache where
+  typeGType _ = gTypeApplicationCache
+  {-# INLINE typeGType #-}
+noApplicationCache :: Maybe ApplicationCache
+noApplicationCache = Nothing
+{-# INLINE noApplicationCache #-}
+
+foreign import javascript unsafe "window[\"ApplicationCache\"]" gTypeApplicationCache :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AssignedNodesOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AssignedNodesOptions Mozilla AssignedNodesOptions documentation>
+newtype AssignedNodesOptions = AssignedNodesOptions { unAssignedNodesOptions :: JSVal }
+
+instance Eq (AssignedNodesOptions) where
+  (AssignedNodesOptions a) == (AssignedNodesOptions b) = js_eq a b
+
+instance PToJSVal AssignedNodesOptions where
+  pToJSVal = unAssignedNodesOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AssignedNodesOptions where
+  pFromJSVal = AssignedNodesOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AssignedNodesOptions where
+  toJSVal = return . unAssignedNodesOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AssignedNodesOptions where
+  fromJSVal = return . fmap AssignedNodesOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AssignedNodesOptions where
+  typeGType _ = gTypeAssignedNodesOptions
+  {-# INLINE typeGType #-}
+noAssignedNodesOptions :: Maybe AssignedNodesOptions
+noAssignedNodesOptions = Nothing
+{-# INLINE noAssignedNodesOptions #-}
+
+foreign import javascript unsafe "window[\"AssignedNodesOptions\"]" gTypeAssignedNodesOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Attr".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Attr Mozilla Attr documentation>
+newtype Attr = Attr { unAttr :: JSVal }
+
+instance Eq (Attr) where
+  (Attr a) == (Attr b) = js_eq a b
+
+instance PToJSVal Attr where
+  pToJSVal = unAttr
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Attr where
+  pFromJSVal = Attr
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Attr where
+  toJSVal = return . unAttr
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Attr where
+  fromJSVal = return . fmap Attr . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNode Attr
+instance IsEventTarget Attr
+instance IsGObject Attr where
+  typeGType _ = gTypeAttr
+  {-# INLINE typeGType #-}
+noAttr :: Maybe Attr
+noAttr = Nothing
+{-# INLINE noAttr #-}
+
+foreign import javascript unsafe "window[\"Attr\"]" gTypeAttr :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBuffer Mozilla AudioBuffer documentation>
+newtype AudioBuffer = AudioBuffer { unAudioBuffer :: JSVal }
+
+instance Eq (AudioBuffer) where
+  (AudioBuffer a) == (AudioBuffer b) = js_eq a b
+
+instance PToJSVal AudioBuffer where
+  pToJSVal = unAudioBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBuffer where
+  pFromJSVal = AudioBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBuffer where
+  toJSVal = return . unAudioBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBuffer where
+  fromJSVal = return . fmap AudioBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AudioBuffer where
+  typeGType _ = gTypeAudioBuffer
+  {-# INLINE typeGType #-}
+noAudioBuffer :: Maybe AudioBuffer
+noAudioBuffer = Nothing
+{-# INLINE noAudioBuffer #-}
+
+foreign import javascript unsafe "window[\"AudioBuffer\"]" gTypeAudioBuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioBufferSourceNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode Mozilla AudioBufferSourceNode documentation>
+newtype AudioBufferSourceNode = AudioBufferSourceNode { unAudioBufferSourceNode :: JSVal }
+
+instance Eq (AudioBufferSourceNode) where
+  (AudioBufferSourceNode a) == (AudioBufferSourceNode b) = js_eq a b
+
+instance PToJSVal AudioBufferSourceNode where
+  pToJSVal = unAudioBufferSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioBufferSourceNode where
+  pFromJSVal = AudioBufferSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioBufferSourceNode where
+  toJSVal = return . unAudioBufferSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioBufferSourceNode where
+  fromJSVal = return . fmap AudioBufferSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode AudioBufferSourceNode
+instance IsEventTarget AudioBufferSourceNode
+instance IsGObject AudioBufferSourceNode where
+  typeGType _ = gTypeAudioBufferSourceNode
+  {-# INLINE typeGType #-}
+noAudioBufferSourceNode :: Maybe AudioBufferSourceNode
+noAudioBufferSourceNode = Nothing
+{-# INLINE noAudioBufferSourceNode #-}
+
+foreign import javascript unsafe "window[\"AudioBufferSourceNode\"]" gTypeAudioBufferSourceNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioContext".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioContext Mozilla AudioContext documentation>
+newtype AudioContext = AudioContext { unAudioContext :: JSVal }
+
+instance Eq (AudioContext) where
+  (AudioContext a) == (AudioContext b) = js_eq a b
+
+instance PToJSVal AudioContext where
+  pToJSVal = unAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioContext where
+  pFromJSVal = AudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioContext where
+  toJSVal = return . unAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioContext where
+  fromJSVal = return . fmap AudioContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsAudioContext o
+toAudioContext :: IsAudioContext o => o -> AudioContext
+toAudioContext = AudioContext . coerce
+
+instance IsAudioContext AudioContext
+instance IsEventTarget AudioContext
+instance IsGObject AudioContext where
+  typeGType _ = gTypeAudioContext
+  {-# INLINE typeGType #-}
+noAudioContext :: Maybe AudioContext
+noAudioContext = Nothing
+{-# INLINE noAudioContext #-}
+
+foreign import javascript unsafe "window[\"AudioContext\"]" gTypeAudioContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioDestinationNode Mozilla AudioDestinationNode documentation>
+newtype AudioDestinationNode = AudioDestinationNode { unAudioDestinationNode :: JSVal }
+
+instance Eq (AudioDestinationNode) where
+  (AudioDestinationNode a) == (AudioDestinationNode b) = js_eq a b
+
+instance PToJSVal AudioDestinationNode where
+  pToJSVal = unAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioDestinationNode where
+  pFromJSVal = AudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioDestinationNode where
+  toJSVal = return . unAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioDestinationNode where
+  fromJSVal = return . fmap AudioDestinationNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode AudioDestinationNode
+instance IsEventTarget AudioDestinationNode
+instance IsGObject AudioDestinationNode where
+  typeGType _ = gTypeAudioDestinationNode
+  {-# INLINE typeGType #-}
+noAudioDestinationNode :: Maybe AudioDestinationNode
+noAudioDestinationNode = Nothing
+{-# INLINE noAudioDestinationNode #-}
+
+foreign import javascript unsafe "window[\"AudioDestinationNode\"]" gTypeAudioDestinationNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioListener Mozilla AudioListener documentation>
+newtype AudioListener = AudioListener { unAudioListener :: JSVal }
+
+instance Eq (AudioListener) where
+  (AudioListener a) == (AudioListener b) = js_eq a b
+
+instance PToJSVal AudioListener where
+  pToJSVal = unAudioListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioListener where
+  pFromJSVal = AudioListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioListener where
+  toJSVal = return . unAudioListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioListener where
+  fromJSVal = return . fmap AudioListener . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AudioListener where
+  typeGType _ = gTypeAudioListener
+  {-# INLINE typeGType #-}
+noAudioListener :: Maybe AudioListener
+noAudioListener = Nothing
+{-# INLINE noAudioListener #-}
+
+foreign import javascript unsafe "window[\"AudioListener\"]" gTypeAudioListener :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioNode Mozilla AudioNode documentation>
+newtype AudioNode = AudioNode { unAudioNode :: JSVal }
+
+instance Eq (AudioNode) where
+  (AudioNode a) == (AudioNode b) = js_eq a b
+
+instance PToJSVal AudioNode where
+  pToJSVal = unAudioNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioNode where
+  pFromJSVal = AudioNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioNode where
+  toJSVal = return . unAudioNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioNode where
+  fromJSVal = return . fmap AudioNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsAudioNode o
+toAudioNode :: IsAudioNode o => o -> AudioNode
+toAudioNode = AudioNode . coerce
+
+instance IsAudioNode AudioNode
+instance IsEventTarget AudioNode
+instance IsGObject AudioNode where
+  typeGType _ = gTypeAudioNode
+  {-# INLINE typeGType #-}
+noAudioNode :: Maybe AudioNode
+noAudioNode = Nothing
+{-# INLINE noAudioNode #-}
+
+foreign import javascript unsafe "window[\"AudioNode\"]" gTypeAudioNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioParam".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioParam Mozilla AudioParam documentation>
+newtype AudioParam = AudioParam { unAudioParam :: JSVal }
+
+instance Eq (AudioParam) where
+  (AudioParam a) == (AudioParam b) = js_eq a b
+
+instance PToJSVal AudioParam where
+  pToJSVal = unAudioParam
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioParam where
+  pFromJSVal = AudioParam
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioParam where
+  toJSVal = return . unAudioParam
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioParam where
+  fromJSVal = return . fmap AudioParam . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AudioParam where
+  typeGType _ = gTypeAudioParam
+  {-# INLINE typeGType #-}
+noAudioParam :: Maybe AudioParam
+noAudioParam = Nothing
+{-# INLINE noAudioParam #-}
+
+foreign import javascript unsafe "window[\"AudioParam\"]" gTypeAudioParam :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioProcessingEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioProcessingEvent Mozilla AudioProcessingEvent documentation>
+newtype AudioProcessingEvent = AudioProcessingEvent { unAudioProcessingEvent :: JSVal }
+
+instance Eq (AudioProcessingEvent) where
+  (AudioProcessingEvent a) == (AudioProcessingEvent b) = js_eq a b
+
+instance PToJSVal AudioProcessingEvent where
+  pToJSVal = unAudioProcessingEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioProcessingEvent where
+  pFromJSVal = AudioProcessingEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioProcessingEvent where
+  toJSVal = return . unAudioProcessingEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioProcessingEvent where
+  fromJSVal = return . fmap AudioProcessingEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent AudioProcessingEvent
+instance IsGObject AudioProcessingEvent where
+  typeGType _ = gTypeAudioProcessingEvent
+  {-# INLINE typeGType #-}
+noAudioProcessingEvent :: Maybe AudioProcessingEvent
+noAudioProcessingEvent = Nothing
+{-# INLINE noAudioProcessingEvent #-}
+
+foreign import javascript unsafe "window[\"AudioProcessingEvent\"]" gTypeAudioProcessingEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrack Mozilla AudioTrack documentation>
+newtype AudioTrack = AudioTrack { unAudioTrack :: JSVal }
+
+instance Eq (AudioTrack) where
+  (AudioTrack a) == (AudioTrack b) = js_eq a b
+
+instance PToJSVal AudioTrack where
+  pToJSVal = unAudioTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrack where
+  pFromJSVal = AudioTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrack where
+  toJSVal = return . unAudioTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrack where
+  fromJSVal = return . fmap AudioTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject AudioTrack where
+  typeGType _ = gTypeAudioTrack
+  {-# INLINE typeGType #-}
+noAudioTrack :: Maybe AudioTrack
+noAudioTrack = Nothing
+{-# INLINE noAudioTrack #-}
+
+foreign import javascript unsafe "window[\"AudioTrack\"]" gTypeAudioTrack :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AudioTrackList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AudioTrackList Mozilla AudioTrackList documentation>
+newtype AudioTrackList = AudioTrackList { unAudioTrackList :: JSVal }
+
+instance Eq (AudioTrackList) where
+  (AudioTrackList a) == (AudioTrackList b) = js_eq a b
+
+instance PToJSVal AudioTrackList where
+  pToJSVal = unAudioTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AudioTrackList where
+  pFromJSVal = AudioTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AudioTrackList where
+  toJSVal = return . unAudioTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AudioTrackList where
+  fromJSVal = return . fmap AudioTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget AudioTrackList
+instance IsGObject AudioTrackList where
+  typeGType _ = gTypeAudioTrackList
+  {-# INLINE typeGType #-}
+noAudioTrackList :: Maybe AudioTrackList
+noAudioTrackList = Nothing
+{-# INLINE noAudioTrackList #-}
+
+foreign import javascript unsafe "window[\"AudioTrackList\"]" gTypeAudioTrackList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AutocompleteErrorEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEvent Mozilla AutocompleteErrorEvent documentation>
+newtype AutocompleteErrorEvent = AutocompleteErrorEvent { unAutocompleteErrorEvent :: JSVal }
+
+instance Eq (AutocompleteErrorEvent) where
+  (AutocompleteErrorEvent a) == (AutocompleteErrorEvent b) = js_eq a b
+
+instance PToJSVal AutocompleteErrorEvent where
+  pToJSVal = unAutocompleteErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AutocompleteErrorEvent where
+  pFromJSVal = AutocompleteErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AutocompleteErrorEvent where
+  toJSVal = return . unAutocompleteErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AutocompleteErrorEvent where
+  fromJSVal = return . fmap AutocompleteErrorEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent AutocompleteErrorEvent
+instance IsGObject AutocompleteErrorEvent where
+  typeGType _ = gTypeAutocompleteErrorEvent
+  {-# INLINE typeGType #-}
+noAutocompleteErrorEvent :: Maybe AutocompleteErrorEvent
+noAutocompleteErrorEvent = Nothing
+{-# INLINE noAutocompleteErrorEvent #-}
+
+foreign import javascript unsafe "window[\"AutocompleteErrorEvent\"]" gTypeAutocompleteErrorEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.AutocompleteErrorEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/AutocompleteErrorEventInit Mozilla AutocompleteErrorEventInit documentation>
+newtype AutocompleteErrorEventInit = AutocompleteErrorEventInit { unAutocompleteErrorEventInit :: JSVal }
+
+instance Eq (AutocompleteErrorEventInit) where
+  (AutocompleteErrorEventInit a) == (AutocompleteErrorEventInit b) = js_eq a b
+
+instance PToJSVal AutocompleteErrorEventInit where
+  pToJSVal = unAutocompleteErrorEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal AutocompleteErrorEventInit where
+  pFromJSVal = AutocompleteErrorEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal AutocompleteErrorEventInit where
+  toJSVal = return . unAutocompleteErrorEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal AutocompleteErrorEventInit where
+  fromJSVal = return . fmap AutocompleteErrorEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit AutocompleteErrorEventInit
+instance IsGObject AutocompleteErrorEventInit where
+  typeGType _ = gTypeAutocompleteErrorEventInit
+  {-# INLINE typeGType #-}
+noAutocompleteErrorEventInit :: Maybe AutocompleteErrorEventInit
+noAutocompleteErrorEventInit = Nothing
+{-# INLINE noAutocompleteErrorEventInit #-}
+
+foreign import javascript unsafe "window[\"AutocompleteErrorEventInit\"]" gTypeAutocompleteErrorEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BarProp".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BarProp Mozilla BarProp documentation>
+newtype BarProp = BarProp { unBarProp :: JSVal }
+
+instance Eq (BarProp) where
+  (BarProp a) == (BarProp b) = js_eq a b
+
+instance PToJSVal BarProp where
+  pToJSVal = unBarProp
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BarProp where
+  pFromJSVal = BarProp
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BarProp where
+  toJSVal = return . unBarProp
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BarProp where
+  fromJSVal = return . fmap BarProp . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject BarProp where
+  typeGType _ = gTypeBarProp
+  {-# INLINE typeGType #-}
+noBarProp :: Maybe BarProp
+noBarProp = Nothing
+{-# INLINE noBarProp #-}
+
+foreign import javascript unsafe "window[\"BarProp\"]" gTypeBarProp :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BasicCredential".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BasicCredential Mozilla BasicCredential documentation>
+newtype BasicCredential = BasicCredential { unBasicCredential :: JSVal }
+
+instance Eq (BasicCredential) where
+  (BasicCredential a) == (BasicCredential b) = js_eq a b
+
+instance PToJSVal BasicCredential where
+  pToJSVal = unBasicCredential
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BasicCredential where
+  pFromJSVal = BasicCredential
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BasicCredential where
+  toJSVal = return . unBasicCredential
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BasicCredential where
+  fromJSVal = return . fmap BasicCredential . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsBasicCredential o
+toBasicCredential :: IsBasicCredential o => o -> BasicCredential
+toBasicCredential = BasicCredential . coerce
+
+instance IsBasicCredential BasicCredential
+instance IsGObject BasicCredential where
+  typeGType _ = gTypeBasicCredential
+  {-# INLINE typeGType #-}
+noBasicCredential :: Maybe BasicCredential
+noBasicCredential = Nothing
+{-# INLINE noBasicCredential #-}
+
+foreign import javascript unsafe "window[\"BasicCredential\"]" gTypeBasicCredential :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BeforeLoadEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEvent Mozilla BeforeLoadEvent documentation>
+newtype BeforeLoadEvent = BeforeLoadEvent { unBeforeLoadEvent :: JSVal }
+
+instance Eq (BeforeLoadEvent) where
+  (BeforeLoadEvent a) == (BeforeLoadEvent b) = js_eq a b
+
+instance PToJSVal BeforeLoadEvent where
+  pToJSVal = unBeforeLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeLoadEvent where
+  pFromJSVal = BeforeLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeLoadEvent where
+  toJSVal = return . unBeforeLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeLoadEvent where
+  fromJSVal = return . fmap BeforeLoadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent BeforeLoadEvent
+instance IsGObject BeforeLoadEvent where
+  typeGType _ = gTypeBeforeLoadEvent
+  {-# INLINE typeGType #-}
+noBeforeLoadEvent :: Maybe BeforeLoadEvent
+noBeforeLoadEvent = Nothing
+{-# INLINE noBeforeLoadEvent #-}
+
+foreign import javascript unsafe "window[\"BeforeLoadEvent\"]" gTypeBeforeLoadEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BeforeLoadEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeLoadEventInit Mozilla BeforeLoadEventInit documentation>
+newtype BeforeLoadEventInit = BeforeLoadEventInit { unBeforeLoadEventInit :: JSVal }
+
+instance Eq (BeforeLoadEventInit) where
+  (BeforeLoadEventInit a) == (BeforeLoadEventInit b) = js_eq a b
+
+instance PToJSVal BeforeLoadEventInit where
+  pToJSVal = unBeforeLoadEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeLoadEventInit where
+  pFromJSVal = BeforeLoadEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeLoadEventInit where
+  toJSVal = return . unBeforeLoadEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeLoadEventInit where
+  fromJSVal = return . fmap BeforeLoadEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit BeforeLoadEventInit
+instance IsGObject BeforeLoadEventInit where
+  typeGType _ = gTypeBeforeLoadEventInit
+  {-# INLINE typeGType #-}
+noBeforeLoadEventInit :: Maybe BeforeLoadEventInit
+noBeforeLoadEventInit = Nothing
+{-# INLINE noBeforeLoadEventInit #-}
+
+foreign import javascript unsafe "window[\"BeforeLoadEventInit\"]" gTypeBeforeLoadEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BeforeUnloadEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BeforeUnloadEvent Mozilla BeforeUnloadEvent documentation>
+newtype BeforeUnloadEvent = BeforeUnloadEvent { unBeforeUnloadEvent :: JSVal }
+
+instance Eq (BeforeUnloadEvent) where
+  (BeforeUnloadEvent a) == (BeforeUnloadEvent b) = js_eq a b
+
+instance PToJSVal BeforeUnloadEvent where
+  pToJSVal = unBeforeUnloadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BeforeUnloadEvent where
+  pFromJSVal = BeforeUnloadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BeforeUnloadEvent where
+  toJSVal = return . unBeforeUnloadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BeforeUnloadEvent where
+  fromJSVal = return . fmap BeforeUnloadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent BeforeUnloadEvent
+instance IsGObject BeforeUnloadEvent where
+  typeGType _ = gTypeBeforeUnloadEvent
+  {-# INLINE typeGType #-}
+noBeforeUnloadEvent :: Maybe BeforeUnloadEvent
+noBeforeUnloadEvent = Nothing
+{-# INLINE noBeforeUnloadEvent #-}
+
+foreign import javascript unsafe "window[\"BeforeUnloadEvent\"]" gTypeBeforeUnloadEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BiquadFilterNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode Mozilla BiquadFilterNode documentation>
+newtype BiquadFilterNode = BiquadFilterNode { unBiquadFilterNode :: JSVal }
+
+instance Eq (BiquadFilterNode) where
+  (BiquadFilterNode a) == (BiquadFilterNode b) = js_eq a b
+
+instance PToJSVal BiquadFilterNode where
+  pToJSVal = unBiquadFilterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BiquadFilterNode where
+  pFromJSVal = BiquadFilterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BiquadFilterNode where
+  toJSVal = return . unBiquadFilterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BiquadFilterNode where
+  fromJSVal = return . fmap BiquadFilterNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode BiquadFilterNode
+instance IsEventTarget BiquadFilterNode
+instance IsGObject BiquadFilterNode where
+  typeGType _ = gTypeBiquadFilterNode
+  {-# INLINE typeGType #-}
+noBiquadFilterNode :: Maybe BiquadFilterNode
+noBiquadFilterNode = Nothing
+{-# INLINE noBiquadFilterNode #-}
+
+foreign import javascript unsafe "window[\"BiquadFilterNode\"]" gTypeBiquadFilterNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Blob".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Blob Mozilla Blob documentation>
+newtype Blob = Blob { unBlob :: JSVal }
+
+instance Eq (Blob) where
+  (Blob a) == (Blob b) = js_eq a b
+
+instance PToJSVal Blob where
+  pToJSVal = unBlob
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Blob where
+  pFromJSVal = Blob
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Blob where
+  toJSVal = return . unBlob
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Blob where
+  fromJSVal = return . fmap Blob . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsBlob o
+toBlob :: IsBlob o => o -> Blob
+toBlob = Blob . coerce
+
+instance IsBlob Blob
+instance IsGObject Blob where
+  typeGType _ = gTypeBlob
+  {-# INLINE typeGType #-}
+noBlob :: Maybe Blob
+noBlob = Nothing
+{-# INLINE noBlob #-}
+
+foreign import javascript unsafe "window[\"Blob\"]" gTypeBlob :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.BlobPropertyBag".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/BlobPropertyBag Mozilla BlobPropertyBag documentation>
+newtype BlobPropertyBag = BlobPropertyBag { unBlobPropertyBag :: JSVal }
+
+instance Eq (BlobPropertyBag) where
+  (BlobPropertyBag a) == (BlobPropertyBag b) = js_eq a b
+
+instance PToJSVal BlobPropertyBag where
+  pToJSVal = unBlobPropertyBag
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal BlobPropertyBag where
+  pFromJSVal = BlobPropertyBag
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal BlobPropertyBag where
+  toJSVal = return . unBlobPropertyBag
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal BlobPropertyBag where
+  fromJSVal = return . fmap BlobPropertyBag . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsBlobPropertyBag o
+toBlobPropertyBag :: IsBlobPropertyBag o => o -> BlobPropertyBag
+toBlobPropertyBag = BlobPropertyBag . coerce
+
+instance IsBlobPropertyBag BlobPropertyBag
+instance IsGObject BlobPropertyBag where
+  typeGType _ = gTypeBlobPropertyBag
+  {-# INLINE typeGType #-}
+noBlobPropertyBag :: Maybe BlobPropertyBag
+noBlobPropertyBag = Nothing
+{-# INLINE noBlobPropertyBag #-}
+
+foreign import javascript unsafe "window[\"BlobPropertyBag\"]" gTypeBlobPropertyBag :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Body".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Body Mozilla Body documentation>
+newtype Body = Body { unBody :: JSVal }
+
+instance Eq (Body) where
+  (Body a) == (Body b) = js_eq a b
+
+instance PToJSVal Body where
+  pToJSVal = unBody
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Body where
+  pFromJSVal = Body
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Body where
+  toJSVal = return . unBody
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Body where
+  fromJSVal = return . fmap Body . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsBody o
+toBody :: IsBody o => o -> Body
+toBody = Body . coerce
+
+instance IsBody Body
+instance IsGObject Body where
+  typeGType _ = gTypeBody
+  {-# INLINE typeGType #-}
+noBody :: Maybe Body
+noBody = Nothing
+{-# INLINE noBody #-}
+
+foreign import javascript unsafe "window[\"Body\"]" gTypeBody :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ByteLengthQueuingStrategy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ByteLengthQueuingStrategy Mozilla ByteLengthQueuingStrategy documentation>
+newtype ByteLengthQueuingStrategy = ByteLengthQueuingStrategy { unByteLengthQueuingStrategy :: JSVal }
+
+instance Eq (ByteLengthQueuingStrategy) where
+  (ByteLengthQueuingStrategy a) == (ByteLengthQueuingStrategy b) = js_eq a b
+
+instance PToJSVal ByteLengthQueuingStrategy where
+  pToJSVal = unByteLengthQueuingStrategy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ByteLengthQueuingStrategy where
+  pFromJSVal = ByteLengthQueuingStrategy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ByteLengthQueuingStrategy where
+  toJSVal = return . unByteLengthQueuingStrategy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ByteLengthQueuingStrategy where
+  fromJSVal = return . fmap ByteLengthQueuingStrategy . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ByteLengthQueuingStrategy where
+  typeGType _ = gTypeByteLengthQueuingStrategy
+  {-# INLINE typeGType #-}
+noByteLengthQueuingStrategy :: Maybe ByteLengthQueuingStrategy
+noByteLengthQueuingStrategy = Nothing
+{-# INLINE noByteLengthQueuingStrategy #-}
+
+foreign import javascript unsafe "window[\"ByteLengthQueuingStrategy\"]" gTypeByteLengthQueuingStrategy :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CDATASection".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Text"
+--     * "GHCJS.DOM.CharacterData"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Slotable"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CDATASection Mozilla CDATASection documentation>
+newtype CDATASection = CDATASection { unCDATASection :: JSVal }
+
+instance Eq (CDATASection) where
+  (CDATASection a) == (CDATASection b) = js_eq a b
+
+instance PToJSVal CDATASection where
+  pToJSVal = unCDATASection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CDATASection where
+  pFromJSVal = CDATASection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CDATASection where
+  toJSVal = return . unCDATASection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CDATASection where
+  fromJSVal = return . fmap CDATASection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsText CDATASection
+instance IsCharacterData CDATASection
+instance IsNode CDATASection
+instance IsEventTarget CDATASection
+instance IsNonDocumentTypeChildNode CDATASection
+instance IsChildNode CDATASection
+instance IsSlotable CDATASection
+instance IsGObject CDATASection where
+  typeGType _ = gTypeCDATASection
+  {-# INLINE typeGType #-}
+noCDATASection :: Maybe CDATASection
+noCDATASection = Nothing
+{-# INLINE noCDATASection #-}
+
+foreign import javascript unsafe "window[\"CDATASection\"]" gTypeCDATASection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSS".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSS Mozilla CSS documentation>
+newtype CSS = CSS { unCSS :: JSVal }
+
+instance Eq (CSS) where
+  (CSS a) == (CSS b) = js_eq a b
+
+instance PToJSVal CSS where
+  pToJSVal = unCSS
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSS where
+  pFromJSVal = CSS
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSS where
+  toJSVal = return . unCSS
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSS where
+  fromJSVal = return . fmap CSS . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CSS where
+  typeGType _ = gTypeCSS
+  {-# INLINE typeGType #-}
+noCSS :: Maybe CSS
+noCSS = Nothing
+{-# INLINE noCSS #-}
+
+foreign import javascript unsafe "window[\"CSS\"]" gTypeCSS :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSFontFaceLoadEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEvent Mozilla CSSFontFaceLoadEvent documentation>
+newtype CSSFontFaceLoadEvent = CSSFontFaceLoadEvent { unCSSFontFaceLoadEvent :: JSVal }
+
+instance Eq (CSSFontFaceLoadEvent) where
+  (CSSFontFaceLoadEvent a) == (CSSFontFaceLoadEvent b) = js_eq a b
+
+instance PToJSVal CSSFontFaceLoadEvent where
+  pToJSVal = unCSSFontFaceLoadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceLoadEvent where
+  pFromJSVal = CSSFontFaceLoadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceLoadEvent where
+  toJSVal = return . unCSSFontFaceLoadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceLoadEvent where
+  fromJSVal = return . fmap CSSFontFaceLoadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent CSSFontFaceLoadEvent
+instance IsGObject CSSFontFaceLoadEvent where
+  typeGType _ = gTypeCSSFontFaceLoadEvent
+  {-# INLINE typeGType #-}
+noCSSFontFaceLoadEvent :: Maybe CSSFontFaceLoadEvent
+noCSSFontFaceLoadEvent = Nothing
+{-# INLINE noCSSFontFaceLoadEvent #-}
+
+foreign import javascript unsafe "window[\"CSSFontFaceLoadEvent\"]" gTypeCSSFontFaceLoadEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSFontFaceLoadEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceLoadEventInit Mozilla CSSFontFaceLoadEventInit documentation>
+newtype CSSFontFaceLoadEventInit = CSSFontFaceLoadEventInit { unCSSFontFaceLoadEventInit :: JSVal }
+
+instance Eq (CSSFontFaceLoadEventInit) where
+  (CSSFontFaceLoadEventInit a) == (CSSFontFaceLoadEventInit b) = js_eq a b
+
+instance PToJSVal CSSFontFaceLoadEventInit where
+  pToJSVal = unCSSFontFaceLoadEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceLoadEventInit where
+  pFromJSVal = CSSFontFaceLoadEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceLoadEventInit where
+  toJSVal = return . unCSSFontFaceLoadEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceLoadEventInit where
+  fromJSVal = return . fmap CSSFontFaceLoadEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit CSSFontFaceLoadEventInit
+instance IsGObject CSSFontFaceLoadEventInit where
+  typeGType _ = gTypeCSSFontFaceLoadEventInit
+  {-# INLINE typeGType #-}
+noCSSFontFaceLoadEventInit :: Maybe CSSFontFaceLoadEventInit
+noCSSFontFaceLoadEventInit = Nothing
+{-# INLINE noCSSFontFaceLoadEventInit #-}
+
+foreign import javascript unsafe "window[\"CSSFontFaceLoadEventInit\"]" gTypeCSSFontFaceLoadEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSFontFaceRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSFontFaceRule Mozilla CSSFontFaceRule documentation>
+newtype CSSFontFaceRule = CSSFontFaceRule { unCSSFontFaceRule :: JSVal }
+
+instance Eq (CSSFontFaceRule) where
+  (CSSFontFaceRule a) == (CSSFontFaceRule b) = js_eq a b
+
+instance PToJSVal CSSFontFaceRule where
+  pToJSVal = unCSSFontFaceRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSFontFaceRule where
+  pFromJSVal = CSSFontFaceRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSFontFaceRule where
+  toJSVal = return . unCSSFontFaceRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSFontFaceRule where
+  fromJSVal = return . fmap CSSFontFaceRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSFontFaceRule
+instance IsGObject CSSFontFaceRule where
+  typeGType _ = gTypeCSSFontFaceRule
+  {-# INLINE typeGType #-}
+noCSSFontFaceRule :: Maybe CSSFontFaceRule
+noCSSFontFaceRule = Nothing
+{-# INLINE noCSSFontFaceRule #-}
+
+foreign import javascript unsafe "window[\"CSSFontFaceRule\"]" gTypeCSSFontFaceRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSImportRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSImportRule Mozilla CSSImportRule documentation>
+newtype CSSImportRule = CSSImportRule { unCSSImportRule :: JSVal }
+
+instance Eq (CSSImportRule) where
+  (CSSImportRule a) == (CSSImportRule b) = js_eq a b
+
+instance PToJSVal CSSImportRule where
+  pToJSVal = unCSSImportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSImportRule where
+  pFromJSVal = CSSImportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSImportRule where
+  toJSVal = return . unCSSImportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSImportRule where
+  fromJSVal = return . fmap CSSImportRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSImportRule
+instance IsGObject CSSImportRule where
+  typeGType _ = gTypeCSSImportRule
+  {-# INLINE typeGType #-}
+noCSSImportRule :: Maybe CSSImportRule
+noCSSImportRule = Nothing
+{-# INLINE noCSSImportRule #-}
+
+foreign import javascript unsafe "window[\"CSSImportRule\"]" gTypeCSSImportRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSKeyframeRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframeRule Mozilla CSSKeyframeRule documentation>
+newtype CSSKeyframeRule = CSSKeyframeRule { unCSSKeyframeRule :: JSVal }
+
+instance Eq (CSSKeyframeRule) where
+  (CSSKeyframeRule a) == (CSSKeyframeRule b) = js_eq a b
+
+instance PToJSVal CSSKeyframeRule where
+  pToJSVal = unCSSKeyframeRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframeRule where
+  pFromJSVal = CSSKeyframeRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframeRule where
+  toJSVal = return . unCSSKeyframeRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframeRule where
+  fromJSVal = return . fmap CSSKeyframeRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSKeyframeRule
+instance IsGObject CSSKeyframeRule where
+  typeGType _ = gTypeCSSKeyframeRule
+  {-# INLINE typeGType #-}
+noCSSKeyframeRule :: Maybe CSSKeyframeRule
+noCSSKeyframeRule = Nothing
+{-# INLINE noCSSKeyframeRule #-}
+
+foreign import javascript unsafe "window[\"CSSKeyframeRule\"]" gTypeCSSKeyframeRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSKeyframesRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSKeyframesRule Mozilla CSSKeyframesRule documentation>
+newtype CSSKeyframesRule = CSSKeyframesRule { unCSSKeyframesRule :: JSVal }
+
+instance Eq (CSSKeyframesRule) where
+  (CSSKeyframesRule a) == (CSSKeyframesRule b) = js_eq a b
+
+instance PToJSVal CSSKeyframesRule where
+  pToJSVal = unCSSKeyframesRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSKeyframesRule where
+  pFromJSVal = CSSKeyframesRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSKeyframesRule where
+  toJSVal = return . unCSSKeyframesRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSKeyframesRule where
+  fromJSVal = return . fmap CSSKeyframesRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSKeyframesRule
+instance IsGObject CSSKeyframesRule where
+  typeGType _ = gTypeCSSKeyframesRule
+  {-# INLINE typeGType #-}
+noCSSKeyframesRule :: Maybe CSSKeyframesRule
+noCSSKeyframesRule = Nothing
+{-# INLINE noCSSKeyframesRule #-}
+
+foreign import javascript unsafe "window[\"CSSKeyframesRule\"]" gTypeCSSKeyframesRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSMediaRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSMediaRule Mozilla CSSMediaRule documentation>
+newtype CSSMediaRule = CSSMediaRule { unCSSMediaRule :: JSVal }
+
+instance Eq (CSSMediaRule) where
+  (CSSMediaRule a) == (CSSMediaRule b) = js_eq a b
+
+instance PToJSVal CSSMediaRule where
+  pToJSVal = unCSSMediaRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSMediaRule where
+  pFromJSVal = CSSMediaRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSMediaRule where
+  toJSVal = return . unCSSMediaRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSMediaRule where
+  fromJSVal = return . fmap CSSMediaRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSMediaRule
+instance IsGObject CSSMediaRule where
+  typeGType _ = gTypeCSSMediaRule
+  {-# INLINE typeGType #-}
+noCSSMediaRule :: Maybe CSSMediaRule
+noCSSMediaRule = Nothing
+{-# INLINE noCSSMediaRule #-}
+
+foreign import javascript unsafe "window[\"CSSMediaRule\"]" gTypeCSSMediaRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSNamespaceRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSNamespaceRule Mozilla CSSNamespaceRule documentation>
+newtype CSSNamespaceRule = CSSNamespaceRule { unCSSNamespaceRule :: JSVal }
+
+instance Eq (CSSNamespaceRule) where
+  (CSSNamespaceRule a) == (CSSNamespaceRule b) = js_eq a b
+
+instance PToJSVal CSSNamespaceRule where
+  pToJSVal = unCSSNamespaceRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSNamespaceRule where
+  pFromJSVal = CSSNamespaceRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSNamespaceRule where
+  toJSVal = return . unCSSNamespaceRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSNamespaceRule where
+  fromJSVal = return . fmap CSSNamespaceRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSNamespaceRule
+instance IsGObject CSSNamespaceRule where
+  typeGType _ = gTypeCSSNamespaceRule
+  {-# INLINE typeGType #-}
+noCSSNamespaceRule :: Maybe CSSNamespaceRule
+noCSSNamespaceRule = Nothing
+{-# INLINE noCSSNamespaceRule #-}
+
+foreign import javascript unsafe "window[\"CSSNamespaceRule\"]" gTypeCSSNamespaceRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSPageRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPageRule Mozilla CSSPageRule documentation>
+newtype CSSPageRule = CSSPageRule { unCSSPageRule :: JSVal }
+
+instance Eq (CSSPageRule) where
+  (CSSPageRule a) == (CSSPageRule b) = js_eq a b
+
+instance PToJSVal CSSPageRule where
+  pToJSVal = unCSSPageRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPageRule where
+  pFromJSVal = CSSPageRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPageRule where
+  toJSVal = return . unCSSPageRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPageRule where
+  fromJSVal = return . fmap CSSPageRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSPageRule
+instance IsGObject CSSPageRule where
+  typeGType _ = gTypeCSSPageRule
+  {-# INLINE typeGType #-}
+noCSSPageRule :: Maybe CSSPageRule
+noCSSPageRule = Nothing
+{-# INLINE noCSSPageRule #-}
+
+foreign import javascript unsafe "window[\"CSSPageRule\"]" gTypeCSSPageRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSPrimitiveValue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSPrimitiveValue Mozilla CSSPrimitiveValue documentation>
+newtype CSSPrimitiveValue = CSSPrimitiveValue { unCSSPrimitiveValue :: JSVal }
+
+instance Eq (CSSPrimitiveValue) where
+  (CSSPrimitiveValue a) == (CSSPrimitiveValue b) = js_eq a b
+
+instance PToJSVal CSSPrimitiveValue where
+  pToJSVal = unCSSPrimitiveValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSPrimitiveValue where
+  pFromJSVal = CSSPrimitiveValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSPrimitiveValue where
+  toJSVal = return . unCSSPrimitiveValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSPrimitiveValue where
+  fromJSVal = return . fmap CSSPrimitiveValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSValue CSSPrimitiveValue
+instance IsGObject CSSPrimitiveValue where
+  typeGType _ = gTypeCSSPrimitiveValue
+  {-# INLINE typeGType #-}
+noCSSPrimitiveValue :: Maybe CSSPrimitiveValue
+noCSSPrimitiveValue = Nothing
+{-# INLINE noCSSPrimitiveValue #-}
+
+foreign import javascript unsafe "window[\"CSSPrimitiveValue\"]" gTypeCSSPrimitiveValue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSRule".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRule Mozilla CSSRule documentation>
+newtype CSSRule = CSSRule { unCSSRule :: JSVal }
+
+instance Eq (CSSRule) where
+  (CSSRule a) == (CSSRule b) = js_eq a b
+
+instance PToJSVal CSSRule where
+  pToJSVal = unCSSRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRule where
+  pFromJSVal = CSSRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRule where
+  toJSVal = return . unCSSRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRule where
+  fromJSVal = return . fmap CSSRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsCSSRule o
+toCSSRule :: IsCSSRule o => o -> CSSRule
+toCSSRule = CSSRule . coerce
+
+instance IsCSSRule CSSRule
+instance IsGObject CSSRule where
+  typeGType _ = gTypeCSSRule
+  {-# INLINE typeGType #-}
+noCSSRule :: Maybe CSSRule
+noCSSRule = Nothing
+{-# INLINE noCSSRule #-}
+
+foreign import javascript unsafe "window[\"CSSRule\"]" gTypeCSSRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSRuleList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSRuleList Mozilla CSSRuleList documentation>
+newtype CSSRuleList = CSSRuleList { unCSSRuleList :: JSVal }
+
+instance Eq (CSSRuleList) where
+  (CSSRuleList a) == (CSSRuleList b) = js_eq a b
+
+instance PToJSVal CSSRuleList where
+  pToJSVal = unCSSRuleList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSRuleList where
+  pFromJSVal = CSSRuleList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSRuleList where
+  toJSVal = return . unCSSRuleList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSRuleList where
+  fromJSVal = return . fmap CSSRuleList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CSSRuleList where
+  typeGType _ = gTypeCSSRuleList
+  {-# INLINE typeGType #-}
+noCSSRuleList :: Maybe CSSRuleList
+noCSSRuleList = Nothing
+{-# INLINE noCSSRuleList #-}
+
+foreign import javascript unsafe "window[\"CSSRuleList\"]" gTypeCSSRuleList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSStyleDeclaration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration Mozilla CSSStyleDeclaration documentation>
+newtype CSSStyleDeclaration = CSSStyleDeclaration { unCSSStyleDeclaration :: JSVal }
+
+instance Eq (CSSStyleDeclaration) where
+  (CSSStyleDeclaration a) == (CSSStyleDeclaration b) = js_eq a b
+
+instance PToJSVal CSSStyleDeclaration where
+  pToJSVal = unCSSStyleDeclaration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleDeclaration where
+  pFromJSVal = CSSStyleDeclaration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleDeclaration where
+  toJSVal = return . unCSSStyleDeclaration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleDeclaration where
+  fromJSVal = return . fmap CSSStyleDeclaration . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CSSStyleDeclaration where
+  typeGType _ = gTypeCSSStyleDeclaration
+  {-# INLINE typeGType #-}
+noCSSStyleDeclaration :: Maybe CSSStyleDeclaration
+noCSSStyleDeclaration = Nothing
+{-# INLINE noCSSStyleDeclaration #-}
+
+foreign import javascript unsafe "window[\"CSSStyleDeclaration\"]" gTypeCSSStyleDeclaration :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSStyleRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleRule Mozilla CSSStyleRule documentation>
+newtype CSSStyleRule = CSSStyleRule { unCSSStyleRule :: JSVal }
+
+instance Eq (CSSStyleRule) where
+  (CSSStyleRule a) == (CSSStyleRule b) = js_eq a b
+
+instance PToJSVal CSSStyleRule where
+  pToJSVal = unCSSStyleRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleRule where
+  pFromJSVal = CSSStyleRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleRule where
+  toJSVal = return . unCSSStyleRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleRule where
+  fromJSVal = return . fmap CSSStyleRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSStyleRule
+instance IsGObject CSSStyleRule where
+  typeGType _ = gTypeCSSStyleRule
+  {-# INLINE typeGType #-}
+noCSSStyleRule :: Maybe CSSStyleRule
+noCSSStyleRule = Nothing
+{-# INLINE noCSSStyleRule #-}
+
+foreign import javascript unsafe "window[\"CSSStyleRule\"]" gTypeCSSStyleRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSStyleSheet".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.StyleSheet"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleSheet Mozilla CSSStyleSheet documentation>
+newtype CSSStyleSheet = CSSStyleSheet { unCSSStyleSheet :: JSVal }
+
+instance Eq (CSSStyleSheet) where
+  (CSSStyleSheet a) == (CSSStyleSheet b) = js_eq a b
+
+instance PToJSVal CSSStyleSheet where
+  pToJSVal = unCSSStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSStyleSheet where
+  pFromJSVal = CSSStyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSStyleSheet where
+  toJSVal = return . unCSSStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSStyleSheet where
+  fromJSVal = return . fmap CSSStyleSheet . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsStyleSheet CSSStyleSheet
+instance IsGObject CSSStyleSheet where
+  typeGType _ = gTypeCSSStyleSheet
+  {-# INLINE typeGType #-}
+noCSSStyleSheet :: Maybe CSSStyleSheet
+noCSSStyleSheet = Nothing
+{-# INLINE noCSSStyleSheet #-}
+
+foreign import javascript unsafe "window[\"CSSStyleSheet\"]" gTypeCSSStyleSheet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSSupportsRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSSupportsRule Mozilla CSSSupportsRule documentation>
+newtype CSSSupportsRule = CSSSupportsRule { unCSSSupportsRule :: JSVal }
+
+instance Eq (CSSSupportsRule) where
+  (CSSSupportsRule a) == (CSSSupportsRule b) = js_eq a b
+
+instance PToJSVal CSSSupportsRule where
+  pToJSVal = unCSSSupportsRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSSupportsRule where
+  pFromJSVal = CSSSupportsRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSSupportsRule where
+  toJSVal = return . unCSSSupportsRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSSupportsRule where
+  fromJSVal = return . fmap CSSSupportsRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSSupportsRule
+instance IsGObject CSSSupportsRule where
+  typeGType _ = gTypeCSSSupportsRule
+  {-# INLINE typeGType #-}
+noCSSSupportsRule :: Maybe CSSSupportsRule
+noCSSSupportsRule = Nothing
+{-# INLINE noCSSSupportsRule #-}
+
+foreign import javascript unsafe "window[\"CSSSupportsRule\"]" gTypeCSSSupportsRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSUnknownRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSUnknownRule Mozilla CSSUnknownRule documentation>
+newtype CSSUnknownRule = CSSUnknownRule { unCSSUnknownRule :: JSVal }
+
+instance Eq (CSSUnknownRule) where
+  (CSSUnknownRule a) == (CSSUnknownRule b) = js_eq a b
+
+instance PToJSVal CSSUnknownRule where
+  pToJSVal = unCSSUnknownRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSUnknownRule where
+  pFromJSVal = CSSUnknownRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSUnknownRule where
+  toJSVal = return . unCSSUnknownRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSUnknownRule where
+  fromJSVal = return . fmap CSSUnknownRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule CSSUnknownRule
+instance IsGObject CSSUnknownRule where
+  typeGType _ = gTypeCSSUnknownRule
+  {-# INLINE typeGType #-}
+noCSSUnknownRule :: Maybe CSSUnknownRule
+noCSSUnknownRule = Nothing
+{-# INLINE noCSSUnknownRule #-}
+
+foreign import javascript unsafe "window[\"CSSUnknownRule\"]" gTypeCSSUnknownRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSValue".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValue Mozilla CSSValue documentation>
+newtype CSSValue = CSSValue { unCSSValue :: JSVal }
+
+instance Eq (CSSValue) where
+  (CSSValue a) == (CSSValue b) = js_eq a b
+
+instance PToJSVal CSSValue where
+  pToJSVal = unCSSValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValue where
+  pFromJSVal = CSSValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValue where
+  toJSVal = return . unCSSValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValue where
+  fromJSVal = return . fmap CSSValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsCSSValue o
+toCSSValue :: IsCSSValue o => o -> CSSValue
+toCSSValue = CSSValue . coerce
+
+instance IsCSSValue CSSValue
+instance IsGObject CSSValue where
+  typeGType _ = gTypeCSSValue
+  {-# INLINE typeGType #-}
+noCSSValue :: Maybe CSSValue
+noCSSValue = Nothing
+{-# INLINE noCSSValue #-}
+
+foreign import javascript unsafe "window[\"CSSValue\"]" gTypeCSSValue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CSSValueList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSValue"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CSSValueList Mozilla CSSValueList documentation>
+newtype CSSValueList = CSSValueList { unCSSValueList :: JSVal }
+
+instance Eq (CSSValueList) where
+  (CSSValueList a) == (CSSValueList b) = js_eq a b
+
+instance PToJSVal CSSValueList where
+  pToJSVal = unCSSValueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CSSValueList where
+  pFromJSVal = CSSValueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CSSValueList where
+  toJSVal = return . unCSSValueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CSSValueList where
+  fromJSVal = return . fmap CSSValueList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSValue CSSValueList
+instance IsGObject CSSValueList where
+  typeGType _ = gTypeCSSValueList
+  {-# INLINE typeGType #-}
+noCSSValueList :: Maybe CSSValueList
+noCSSValueList = Nothing
+{-# INLINE noCSSValueList #-}
+
+foreign import javascript unsafe "window[\"CSSValueList\"]" gTypeCSSValueList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasCaptureMediaStreamTrack".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaStreamTrack"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasCaptureMediaStreamTrack Mozilla CanvasCaptureMediaStreamTrack documentation>
+newtype CanvasCaptureMediaStreamTrack = CanvasCaptureMediaStreamTrack { unCanvasCaptureMediaStreamTrack :: JSVal }
+
+instance Eq (CanvasCaptureMediaStreamTrack) where
+  (CanvasCaptureMediaStreamTrack a) == (CanvasCaptureMediaStreamTrack b) = js_eq a b
+
+instance PToJSVal CanvasCaptureMediaStreamTrack where
+  pToJSVal = unCanvasCaptureMediaStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasCaptureMediaStreamTrack where
+  pFromJSVal = CanvasCaptureMediaStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasCaptureMediaStreamTrack where
+  toJSVal = return . unCanvasCaptureMediaStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasCaptureMediaStreamTrack where
+  fromJSVal = return . fmap CanvasCaptureMediaStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaStreamTrack CanvasCaptureMediaStreamTrack
+instance IsEventTarget CanvasCaptureMediaStreamTrack
+instance IsGObject CanvasCaptureMediaStreamTrack where
+  typeGType _ = gTypeCanvasCaptureMediaStreamTrack
+  {-# INLINE typeGType #-}
+noCanvasCaptureMediaStreamTrack :: Maybe CanvasCaptureMediaStreamTrack
+noCanvasCaptureMediaStreamTrack = Nothing
+{-# INLINE noCanvasCaptureMediaStreamTrack #-}
+
+foreign import javascript unsafe "window[\"CanvasCaptureMediaStreamTrack\"]" gTypeCanvasCaptureMediaStreamTrack :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasGradient".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasGradient Mozilla CanvasGradient documentation>
+newtype CanvasGradient = CanvasGradient { unCanvasGradient :: JSVal }
+
+instance Eq (CanvasGradient) where
+  (CanvasGradient a) == (CanvasGradient b) = js_eq a b
+
+instance PToJSVal CanvasGradient where
+  pToJSVal = unCanvasGradient
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasGradient where
+  pFromJSVal = CanvasGradient
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasGradient where
+  toJSVal = return . unCanvasGradient
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasGradient where
+  fromJSVal = return . fmap CanvasGradient . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CanvasGradient where
+  typeGType _ = gTypeCanvasGradient
+  {-# INLINE typeGType #-}
+noCanvasGradient :: Maybe CanvasGradient
+noCanvasGradient = Nothing
+{-# INLINE noCanvasGradient #-}
+
+foreign import javascript unsafe "window[\"CanvasGradient\"]" gTypeCanvasGradient :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasPath".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPath Mozilla CanvasPath documentation>
+newtype CanvasPath = CanvasPath { unCanvasPath :: JSVal }
+
+instance Eq (CanvasPath) where
+  (CanvasPath a) == (CanvasPath b) = js_eq a b
+
+instance PToJSVal CanvasPath where
+  pToJSVal = unCanvasPath
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasPath where
+  pFromJSVal = CanvasPath
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasPath where
+  toJSVal = return . unCanvasPath
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasPath where
+  fromJSVal = return . fmap CanvasPath . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsCanvasPath o
+toCanvasPath :: IsCanvasPath o => o -> CanvasPath
+toCanvasPath = CanvasPath . coerce
+
+instance IsCanvasPath CanvasPath
+instance IsGObject CanvasPath where
+  typeGType _ = gTypeCanvasPath
+  {-# INLINE typeGType #-}
+noCanvasPath :: Maybe CanvasPath
+noCanvasPath = Nothing
+{-# INLINE noCanvasPath #-}
+
+foreign import javascript unsafe "window[\"CanvasPath\"]" gTypeCanvasPath :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasPattern".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasPattern Mozilla CanvasPattern documentation>
+newtype CanvasPattern = CanvasPattern { unCanvasPattern :: JSVal }
+
+instance Eq (CanvasPattern) where
+  (CanvasPattern a) == (CanvasPattern b) = js_eq a b
+
+instance PToJSVal CanvasPattern where
+  pToJSVal = unCanvasPattern
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasPattern where
+  pFromJSVal = CanvasPattern
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasPattern where
+  toJSVal = return . unCanvasPattern
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasPattern where
+  fromJSVal = return . fmap CanvasPattern . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CanvasPattern where
+  typeGType _ = gTypeCanvasPattern
+  {-# INLINE typeGType #-}
+noCanvasPattern :: Maybe CanvasPattern
+noCanvasPattern = Nothing
+{-# INLINE noCanvasPattern #-}
+
+foreign import javascript unsafe "window[\"CanvasPattern\"]" gTypeCanvasPattern :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasProxy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasProxy Mozilla CanvasProxy documentation>
+newtype CanvasProxy = CanvasProxy { unCanvasProxy :: JSVal }
+
+instance Eq (CanvasProxy) where
+  (CanvasProxy a) == (CanvasProxy b) = js_eq a b
+
+instance PToJSVal CanvasProxy where
+  pToJSVal = unCanvasProxy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasProxy where
+  pFromJSVal = CanvasProxy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasProxy where
+  toJSVal = return . unCanvasProxy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasProxy where
+  fromJSVal = return . fmap CanvasProxy . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CanvasProxy where
+  typeGType _ = gTypeCanvasProxy
+  {-# INLINE typeGType #-}
+noCanvasProxy :: Maybe CanvasProxy
+noCanvasProxy = Nothing
+{-# INLINE noCanvasProxy #-}
+
+foreign import javascript unsafe "window[\"CanvasProxy\"]" gTypeCanvasProxy :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CanvasRenderingContext2D".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CanvasPath"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CanvasRenderingContext2D Mozilla CanvasRenderingContext2D documentation>
+newtype CanvasRenderingContext2D = CanvasRenderingContext2D { unCanvasRenderingContext2D :: JSVal }
+
+instance Eq (CanvasRenderingContext2D) where
+  (CanvasRenderingContext2D a) == (CanvasRenderingContext2D b) = js_eq a b
+
+instance PToJSVal CanvasRenderingContext2D where
+  pToJSVal = unCanvasRenderingContext2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CanvasRenderingContext2D where
+  pFromJSVal = CanvasRenderingContext2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CanvasRenderingContext2D where
+  toJSVal = return . unCanvasRenderingContext2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CanvasRenderingContext2D where
+  fromJSVal = return . fmap CanvasRenderingContext2D . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCanvasPath CanvasRenderingContext2D
+instance IsGObject CanvasRenderingContext2D where
+  typeGType _ = gTypeCanvasRenderingContext2D
+  {-# INLINE typeGType #-}
+noCanvasRenderingContext2D :: Maybe CanvasRenderingContext2D
+noCanvasRenderingContext2D = Nothing
+{-# INLINE noCanvasRenderingContext2D #-}
+
+foreign import javascript unsafe "window[\"CanvasRenderingContext2D\"]" gTypeCanvasRenderingContext2D :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ChannelMergerNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelMergerNode Mozilla ChannelMergerNode documentation>
+newtype ChannelMergerNode = ChannelMergerNode { unChannelMergerNode :: JSVal }
+
+instance Eq (ChannelMergerNode) where
+  (ChannelMergerNode a) == (ChannelMergerNode b) = js_eq a b
+
+instance PToJSVal ChannelMergerNode where
+  pToJSVal = unChannelMergerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelMergerNode where
+  pFromJSVal = ChannelMergerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelMergerNode where
+  toJSVal = return . unChannelMergerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelMergerNode where
+  fromJSVal = return . fmap ChannelMergerNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode ChannelMergerNode
+instance IsEventTarget ChannelMergerNode
+instance IsGObject ChannelMergerNode where
+  typeGType _ = gTypeChannelMergerNode
+  {-# INLINE typeGType #-}
+noChannelMergerNode :: Maybe ChannelMergerNode
+noChannelMergerNode = Nothing
+{-# INLINE noChannelMergerNode #-}
+
+foreign import javascript unsafe "window[\"ChannelMergerNode\"]" gTypeChannelMergerNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ChannelSplitterNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChannelSplitterNode Mozilla ChannelSplitterNode documentation>
+newtype ChannelSplitterNode = ChannelSplitterNode { unChannelSplitterNode :: JSVal }
+
+instance Eq (ChannelSplitterNode) where
+  (ChannelSplitterNode a) == (ChannelSplitterNode b) = js_eq a b
+
+instance PToJSVal ChannelSplitterNode where
+  pToJSVal = unChannelSplitterNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChannelSplitterNode where
+  pFromJSVal = ChannelSplitterNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChannelSplitterNode where
+  toJSVal = return . unChannelSplitterNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChannelSplitterNode where
+  fromJSVal = return . fmap ChannelSplitterNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode ChannelSplitterNode
+instance IsEventTarget ChannelSplitterNode
+instance IsGObject ChannelSplitterNode where
+  typeGType _ = gTypeChannelSplitterNode
+  {-# INLINE typeGType #-}
+noChannelSplitterNode :: Maybe ChannelSplitterNode
+noChannelSplitterNode = Nothing
+{-# INLINE noChannelSplitterNode #-}
+
+foreign import javascript unsafe "window[\"ChannelSplitterNode\"]" gTypeChannelSplitterNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CharacterData".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.ChildNode"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CharacterData Mozilla CharacterData documentation>
+newtype CharacterData = CharacterData { unCharacterData :: JSVal }
+
+instance Eq (CharacterData) where
+  (CharacterData a) == (CharacterData b) = js_eq a b
+
+instance PToJSVal CharacterData where
+  pToJSVal = unCharacterData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CharacterData where
+  pFromJSVal = CharacterData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CharacterData where
+  toJSVal = return . unCharacterData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CharacterData where
+  fromJSVal = return . fmap CharacterData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsGObject o) => IsCharacterData o
+toCharacterData :: IsCharacterData o => o -> CharacterData
+toCharacterData = CharacterData . coerce
+
+instance IsCharacterData CharacterData
+instance IsNode CharacterData
+instance IsEventTarget CharacterData
+instance IsNonDocumentTypeChildNode CharacterData
+instance IsChildNode CharacterData
+instance IsGObject CharacterData where
+  typeGType _ = gTypeCharacterData
+  {-# INLINE typeGType #-}
+noCharacterData :: Maybe CharacterData
+noCharacterData = Nothing
+{-# INLINE noCharacterData #-}
+
+foreign import javascript unsafe "window[\"CharacterData\"]" gTypeCharacterData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ChildNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ChildNode Mozilla ChildNode documentation>
+newtype ChildNode = ChildNode { unChildNode :: JSVal }
+
+instance Eq (ChildNode) where
+  (ChildNode a) == (ChildNode b) = js_eq a b
+
+instance PToJSVal ChildNode where
+  pToJSVal = unChildNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ChildNode where
+  pFromJSVal = ChildNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ChildNode where
+  toJSVal = return . unChildNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ChildNode where
+  fromJSVal = return . fmap ChildNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsChildNode o
+toChildNode :: IsChildNode o => o -> ChildNode
+toChildNode = ChildNode . coerce
+
+instance IsChildNode ChildNode
+instance IsGObject ChildNode where
+  typeGType _ = gTypeChildNode
+  {-# INLINE typeGType #-}
+noChildNode :: Maybe ChildNode
+noChildNode = Nothing
+{-# INLINE noChildNode #-}
+
+foreign import javascript unsafe "window[\"ChildNode\"]" gTypeChildNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ClipboardEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEvent Mozilla ClipboardEvent documentation>
+newtype ClipboardEvent = ClipboardEvent { unClipboardEvent :: JSVal }
+
+instance Eq (ClipboardEvent) where
+  (ClipboardEvent a) == (ClipboardEvent b) = js_eq a b
+
+instance PToJSVal ClipboardEvent where
+  pToJSVal = unClipboardEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClipboardEvent where
+  pFromJSVal = ClipboardEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClipboardEvent where
+  toJSVal = return . unClipboardEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClipboardEvent where
+  fromJSVal = return . fmap ClipboardEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ClipboardEvent
+instance IsGObject ClipboardEvent where
+  typeGType _ = gTypeClipboardEvent
+  {-# INLINE typeGType #-}
+noClipboardEvent :: Maybe ClipboardEvent
+noClipboardEvent = Nothing
+{-# INLINE noClipboardEvent #-}
+
+foreign import javascript unsafe "window[\"ClipboardEvent\"]" gTypeClipboardEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ClipboardEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ClipboardEventInit Mozilla ClipboardEventInit documentation>
+newtype ClipboardEventInit = ClipboardEventInit { unClipboardEventInit :: JSVal }
+
+instance Eq (ClipboardEventInit) where
+  (ClipboardEventInit a) == (ClipboardEventInit b) = js_eq a b
+
+instance PToJSVal ClipboardEventInit where
+  pToJSVal = unClipboardEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ClipboardEventInit where
+  pFromJSVal = ClipboardEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ClipboardEventInit where
+  toJSVal = return . unClipboardEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ClipboardEventInit where
+  fromJSVal = return . fmap ClipboardEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit ClipboardEventInit
+instance IsGObject ClipboardEventInit where
+  typeGType _ = gTypeClipboardEventInit
+  {-# INLINE typeGType #-}
+noClipboardEventInit :: Maybe ClipboardEventInit
+noClipboardEventInit = Nothing
+{-# INLINE noClipboardEventInit #-}
+
+foreign import javascript unsafe "window[\"ClipboardEventInit\"]" gTypeClipboardEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CloseEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent Mozilla CloseEvent documentation>
+newtype CloseEvent = CloseEvent { unCloseEvent :: JSVal }
+
+instance Eq (CloseEvent) where
+  (CloseEvent a) == (CloseEvent b) = js_eq a b
+
+instance PToJSVal CloseEvent where
+  pToJSVal = unCloseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CloseEvent where
+  pFromJSVal = CloseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CloseEvent where
+  toJSVal = return . unCloseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CloseEvent where
+  fromJSVal = return . fmap CloseEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent CloseEvent
+instance IsGObject CloseEvent where
+  typeGType _ = gTypeCloseEvent
+  {-# INLINE typeGType #-}
+noCloseEvent :: Maybe CloseEvent
+noCloseEvent = Nothing
+{-# INLINE noCloseEvent #-}
+
+foreign import javascript unsafe "window[\"CloseEvent\"]" gTypeCloseEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CloseEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CloseEventInit Mozilla CloseEventInit documentation>
+newtype CloseEventInit = CloseEventInit { unCloseEventInit :: JSVal }
+
+instance Eq (CloseEventInit) where
+  (CloseEventInit a) == (CloseEventInit b) = js_eq a b
+
+instance PToJSVal CloseEventInit where
+  pToJSVal = unCloseEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CloseEventInit where
+  pFromJSVal = CloseEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CloseEventInit where
+  toJSVal = return . unCloseEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CloseEventInit where
+  fromJSVal = return . fmap CloseEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit CloseEventInit
+instance IsGObject CloseEventInit where
+  typeGType _ = gTypeCloseEventInit
+  {-# INLINE typeGType #-}
+noCloseEventInit :: Maybe CloseEventInit
+noCloseEventInit = Nothing
+{-# INLINE noCloseEventInit #-}
+
+foreign import javascript unsafe "window[\"CloseEventInit\"]" gTypeCloseEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CommandLineAPIHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CommandLineAPIHost Mozilla CommandLineAPIHost documentation>
+newtype CommandLineAPIHost = CommandLineAPIHost { unCommandLineAPIHost :: JSVal }
+
+instance Eq (CommandLineAPIHost) where
+  (CommandLineAPIHost a) == (CommandLineAPIHost b) = js_eq a b
+
+instance PToJSVal CommandLineAPIHost where
+  pToJSVal = unCommandLineAPIHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CommandLineAPIHost where
+  pFromJSVal = CommandLineAPIHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CommandLineAPIHost where
+  toJSVal = return . unCommandLineAPIHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CommandLineAPIHost where
+  fromJSVal = return . fmap CommandLineAPIHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CommandLineAPIHost where
+  typeGType _ = gTypeCommandLineAPIHost
+  {-# INLINE typeGType #-}
+noCommandLineAPIHost :: Maybe CommandLineAPIHost
+noCommandLineAPIHost = Nothing
+{-# INLINE noCommandLineAPIHost #-}
+
+foreign import javascript unsafe "window[\"CommandLineAPIHost\"]" gTypeCommandLineAPIHost :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Comment".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CharacterData"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.ChildNode"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Comment Mozilla Comment documentation>
+newtype Comment = Comment { unComment :: JSVal }
+
+instance Eq (Comment) where
+  (Comment a) == (Comment b) = js_eq a b
+
+instance PToJSVal Comment where
+  pToJSVal = unComment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Comment where
+  pFromJSVal = Comment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Comment where
+  toJSVal = return . unComment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Comment where
+  fromJSVal = return . fmap Comment . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCharacterData Comment
+instance IsNode Comment
+instance IsEventTarget Comment
+instance IsNonDocumentTypeChildNode Comment
+instance IsChildNode Comment
+instance IsGObject Comment where
+  typeGType _ = gTypeComment
+  {-# INLINE typeGType #-}
+noComment :: Maybe Comment
+noComment = Nothing
+{-# INLINE noComment #-}
+
+foreign import javascript unsafe "window[\"Comment\"]" gTypeComment :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CompositionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEvent Mozilla CompositionEvent documentation>
+newtype CompositionEvent = CompositionEvent { unCompositionEvent :: JSVal }
+
+instance Eq (CompositionEvent) where
+  (CompositionEvent a) == (CompositionEvent b) = js_eq a b
+
+instance PToJSVal CompositionEvent where
+  pToJSVal = unCompositionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CompositionEvent where
+  pFromJSVal = CompositionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CompositionEvent where
+  toJSVal = return . unCompositionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CompositionEvent where
+  fromJSVal = return . fmap CompositionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent CompositionEvent
+instance IsEvent CompositionEvent
+instance IsGObject CompositionEvent where
+  typeGType _ = gTypeCompositionEvent
+  {-# INLINE typeGType #-}
+noCompositionEvent :: Maybe CompositionEvent
+noCompositionEvent = Nothing
+{-# INLINE noCompositionEvent #-}
+
+foreign import javascript unsafe "window[\"CompositionEvent\"]" gTypeCompositionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CompositionEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CompositionEventInit Mozilla CompositionEventInit documentation>
+newtype CompositionEventInit = CompositionEventInit { unCompositionEventInit :: JSVal }
+
+instance Eq (CompositionEventInit) where
+  (CompositionEventInit a) == (CompositionEventInit b) = js_eq a b
+
+instance PToJSVal CompositionEventInit where
+  pToJSVal = unCompositionEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CompositionEventInit where
+  pFromJSVal = CompositionEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CompositionEventInit where
+  toJSVal = return . unCompositionEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CompositionEventInit where
+  fromJSVal = return . fmap CompositionEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEventInit CompositionEventInit
+instance IsEventInit CompositionEventInit
+instance IsGObject CompositionEventInit where
+  typeGType _ = gTypeCompositionEventInit
+  {-# INLINE typeGType #-}
+noCompositionEventInit :: Maybe CompositionEventInit
+noCompositionEventInit = Nothing
+{-# INLINE noCompositionEventInit #-}
+
+foreign import javascript unsafe "window[\"CompositionEventInit\"]" gTypeCompositionEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ConstrainBooleanParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConstrainBooleanParameters Mozilla ConstrainBooleanParameters documentation>
+newtype ConstrainBooleanParameters = ConstrainBooleanParameters { unConstrainBooleanParameters :: JSVal }
+
+instance Eq (ConstrainBooleanParameters) where
+  (ConstrainBooleanParameters a) == (ConstrainBooleanParameters b) = js_eq a b
+
+instance PToJSVal ConstrainBooleanParameters where
+  pToJSVal = unConstrainBooleanParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConstrainBooleanParameters where
+  pFromJSVal = ConstrainBooleanParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConstrainBooleanParameters where
+  toJSVal = return . unConstrainBooleanParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConstrainBooleanParameters where
+  fromJSVal = return . fmap ConstrainBooleanParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ConstrainBooleanParameters where
+  typeGType _ = gTypeConstrainBooleanParameters
+  {-# INLINE typeGType #-}
+noConstrainBooleanParameters :: Maybe ConstrainBooleanParameters
+noConstrainBooleanParameters = Nothing
+{-# INLINE noConstrainBooleanParameters #-}
+
+foreign import javascript unsafe "window[\"ConstrainBooleanParameters\"]" gTypeConstrainBooleanParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ConstrainDOMStringParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConstrainDOMStringParameters Mozilla ConstrainDOMStringParameters documentation>
+newtype ConstrainDOMStringParameters = ConstrainDOMStringParameters { unConstrainDOMStringParameters :: JSVal }
+
+instance Eq (ConstrainDOMStringParameters) where
+  (ConstrainDOMStringParameters a) == (ConstrainDOMStringParameters b) = js_eq a b
+
+instance PToJSVal ConstrainDOMStringParameters where
+  pToJSVal = unConstrainDOMStringParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConstrainDOMStringParameters where
+  pFromJSVal = ConstrainDOMStringParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConstrainDOMStringParameters where
+  toJSVal = return . unConstrainDOMStringParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConstrainDOMStringParameters where
+  fromJSVal = return . fmap ConstrainDOMStringParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ConstrainDOMStringParameters where
+  typeGType _ = gTypeConstrainDOMStringParameters
+  {-# INLINE typeGType #-}
+noConstrainDOMStringParameters :: Maybe ConstrainDOMStringParameters
+noConstrainDOMStringParameters = Nothing
+{-# INLINE noConstrainDOMStringParameters #-}
+
+foreign import javascript unsafe "window[\"ConstrainDOMStringParameters\"]" gTypeConstrainDOMStringParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ConstrainDoubleRange".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DoubleRange"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConstrainDoubleRange Mozilla ConstrainDoubleRange documentation>
+newtype ConstrainDoubleRange = ConstrainDoubleRange { unConstrainDoubleRange :: JSVal }
+
+instance Eq (ConstrainDoubleRange) where
+  (ConstrainDoubleRange a) == (ConstrainDoubleRange b) = js_eq a b
+
+instance PToJSVal ConstrainDoubleRange where
+  pToJSVal = unConstrainDoubleRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConstrainDoubleRange where
+  pFromJSVal = ConstrainDoubleRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConstrainDoubleRange where
+  toJSVal = return . unConstrainDoubleRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConstrainDoubleRange where
+  fromJSVal = return . fmap ConstrainDoubleRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDoubleRange ConstrainDoubleRange
+instance IsGObject ConstrainDoubleRange where
+  typeGType _ = gTypeConstrainDoubleRange
+  {-# INLINE typeGType #-}
+noConstrainDoubleRange :: Maybe ConstrainDoubleRange
+noConstrainDoubleRange = Nothing
+{-# INLINE noConstrainDoubleRange #-}
+
+foreign import javascript unsafe "window[\"ConstrainDoubleRange\"]" gTypeConstrainDoubleRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ConstrainLongRange".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.LongRange"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConstrainLongRange Mozilla ConstrainLongRange documentation>
+newtype ConstrainLongRange = ConstrainLongRange { unConstrainLongRange :: JSVal }
+
+instance Eq (ConstrainLongRange) where
+  (ConstrainLongRange a) == (ConstrainLongRange b) = js_eq a b
+
+instance PToJSVal ConstrainLongRange where
+  pToJSVal = unConstrainLongRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConstrainLongRange where
+  pFromJSVal = ConstrainLongRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConstrainLongRange where
+  toJSVal = return . unConstrainLongRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConstrainLongRange where
+  fromJSVal = return . fmap ConstrainLongRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsLongRange ConstrainLongRange
+instance IsGObject ConstrainLongRange where
+  typeGType _ = gTypeConstrainLongRange
+  {-# INLINE typeGType #-}
+noConstrainLongRange :: Maybe ConstrainLongRange
+noConstrainLongRange = Nothing
+{-# INLINE noConstrainLongRange #-}
+
+foreign import javascript unsafe "window[\"ConstrainLongRange\"]" gTypeConstrainLongRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ConvolverNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ConvolverNode Mozilla ConvolverNode documentation>
+newtype ConvolverNode = ConvolverNode { unConvolverNode :: JSVal }
+
+instance Eq (ConvolverNode) where
+  (ConvolverNode a) == (ConvolverNode b) = js_eq a b
+
+instance PToJSVal ConvolverNode where
+  pToJSVal = unConvolverNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ConvolverNode where
+  pFromJSVal = ConvolverNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ConvolverNode where
+  toJSVal = return . unConvolverNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ConvolverNode where
+  fromJSVal = return . fmap ConvolverNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode ConvolverNode
+instance IsEventTarget ConvolverNode
+instance IsGObject ConvolverNode where
+  typeGType _ = gTypeConvolverNode
+  {-# INLINE typeGType #-}
+noConvolverNode :: Maybe ConvolverNode
+noConvolverNode = Nothing
+{-# INLINE noConvolverNode #-}
+
+foreign import javascript unsafe "window[\"ConvolverNode\"]" gTypeConvolverNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Coordinates".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Coordinates Mozilla Coordinates documentation>
+newtype Coordinates = Coordinates { unCoordinates :: JSVal }
+
+instance Eq (Coordinates) where
+  (Coordinates a) == (Coordinates b) = js_eq a b
+
+instance PToJSVal Coordinates where
+  pToJSVal = unCoordinates
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Coordinates where
+  pFromJSVal = Coordinates
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Coordinates where
+  toJSVal = return . unCoordinates
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Coordinates where
+  fromJSVal = return . fmap Coordinates . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Coordinates where
+  typeGType _ = gTypeCoordinates
+  {-# INLINE typeGType #-}
+noCoordinates :: Maybe Coordinates
+noCoordinates = Nothing
+{-# INLINE noCoordinates #-}
+
+foreign import javascript unsafe "window[\"Coordinates\"]" gTypeCoordinates :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CountQueuingStrategy".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CountQueuingStrategy Mozilla CountQueuingStrategy documentation>
+newtype CountQueuingStrategy = CountQueuingStrategy { unCountQueuingStrategy :: JSVal }
+
+instance Eq (CountQueuingStrategy) where
+  (CountQueuingStrategy a) == (CountQueuingStrategy b) = js_eq a b
+
+instance PToJSVal CountQueuingStrategy where
+  pToJSVal = unCountQueuingStrategy
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CountQueuingStrategy where
+  pFromJSVal = CountQueuingStrategy
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CountQueuingStrategy where
+  toJSVal = return . unCountQueuingStrategy
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CountQueuingStrategy where
+  fromJSVal = return . fmap CountQueuingStrategy . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CountQueuingStrategy where
+  typeGType _ = gTypeCountQueuingStrategy
+  {-# INLINE typeGType #-}
+noCountQueuingStrategy :: Maybe CountQueuingStrategy
+noCountQueuingStrategy = Nothing
+{-# INLINE noCountQueuingStrategy #-}
+
+foreign import javascript unsafe "window[\"CountQueuingStrategy\"]" gTypeCountQueuingStrategy :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Counter".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Counter Mozilla Counter documentation>
+newtype Counter = Counter { unCounter :: JSVal }
+
+instance Eq (Counter) where
+  (Counter a) == (Counter b) = js_eq a b
+
+instance PToJSVal Counter where
+  pToJSVal = unCounter
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Counter where
+  pFromJSVal = Counter
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Counter where
+  toJSVal = return . unCounter
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Counter where
+  fromJSVal = return . fmap Counter . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Counter where
+  typeGType _ = gTypeCounter
+  {-# INLINE typeGType #-}
+noCounter :: Maybe Counter
+noCounter = Nothing
+{-# INLINE noCounter #-}
+
+foreign import javascript unsafe "window[\"Counter\"]" gTypeCounter :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CredentialData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CredentialData Mozilla CredentialData documentation>
+newtype CredentialData = CredentialData { unCredentialData :: JSVal }
+
+instance Eq (CredentialData) where
+  (CredentialData a) == (CredentialData b) = js_eq a b
+
+instance PToJSVal CredentialData where
+  pToJSVal = unCredentialData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CredentialData where
+  pFromJSVal = CredentialData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CredentialData where
+  toJSVal = return . unCredentialData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CredentialData where
+  fromJSVal = return . fmap CredentialData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsCredentialData o
+toCredentialData :: IsCredentialData o => o -> CredentialData
+toCredentialData = CredentialData . coerce
+
+instance IsCredentialData CredentialData
+instance IsGObject CredentialData where
+  typeGType _ = gTypeCredentialData
+  {-# INLINE typeGType #-}
+noCredentialData :: Maybe CredentialData
+noCredentialData = Nothing
+{-# INLINE noCredentialData #-}
+
+foreign import javascript unsafe "window[\"CredentialData\"]" gTypeCredentialData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Crypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Crypto Mozilla Crypto documentation>
+newtype Crypto = Crypto { unCrypto :: JSVal }
+
+instance Eq (Crypto) where
+  (Crypto a) == (Crypto b) = js_eq a b
+
+instance PToJSVal Crypto where
+  pToJSVal = unCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Crypto where
+  pFromJSVal = Crypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Crypto where
+  toJSVal = return . unCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Crypto where
+  fromJSVal = return . fmap Crypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Crypto where
+  typeGType _ = gTypeCrypto
+  {-# INLINE typeGType #-}
+noCrypto :: Maybe Crypto
+noCrypto = Nothing
+{-# INLINE noCrypto #-}
+
+foreign import javascript unsafe "window[\"Crypto\"]" gTypeCrypto :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CryptoAlgorithmParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoAlgorithmParameters Mozilla CryptoAlgorithmParameters documentation>
+newtype CryptoAlgorithmParameters = CryptoAlgorithmParameters { unCryptoAlgorithmParameters :: JSVal }
+
+instance Eq (CryptoAlgorithmParameters) where
+  (CryptoAlgorithmParameters a) == (CryptoAlgorithmParameters b) = js_eq a b
+
+instance PToJSVal CryptoAlgorithmParameters where
+  pToJSVal = unCryptoAlgorithmParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoAlgorithmParameters where
+  pFromJSVal = CryptoAlgorithmParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoAlgorithmParameters where
+  toJSVal = return . unCryptoAlgorithmParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoAlgorithmParameters where
+  fromJSVal = return . fmap CryptoAlgorithmParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsCryptoAlgorithmParameters o
+toCryptoAlgorithmParameters :: IsCryptoAlgorithmParameters o => o -> CryptoAlgorithmParameters
+toCryptoAlgorithmParameters = CryptoAlgorithmParameters . coerce
+
+instance IsCryptoAlgorithmParameters CryptoAlgorithmParameters
+instance IsGObject CryptoAlgorithmParameters where
+  typeGType _ = gTypeCryptoAlgorithmParameters
+  {-# INLINE typeGType #-}
+noCryptoAlgorithmParameters :: Maybe CryptoAlgorithmParameters
+noCryptoAlgorithmParameters = Nothing
+{-# INLINE noCryptoAlgorithmParameters #-}
+
+foreign import javascript unsafe "window[\"CryptoAlgorithmParameters\"]" gTypeCryptoAlgorithmParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CryptoKey".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKey Mozilla CryptoKey documentation>
+newtype CryptoKey = CryptoKey { unCryptoKey :: JSVal }
+
+instance Eq (CryptoKey) where
+  (CryptoKey a) == (CryptoKey b) = js_eq a b
+
+instance PToJSVal CryptoKey where
+  pToJSVal = unCryptoKey
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKey where
+  pFromJSVal = CryptoKey
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKey where
+  toJSVal = return . unCryptoKey
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKey where
+  fromJSVal = return . fmap CryptoKey . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CryptoKey where
+  typeGType _ = gTypeCryptoKey
+  {-# INLINE typeGType #-}
+noCryptoKey :: Maybe CryptoKey
+noCryptoKey = Nothing
+{-# INLINE noCryptoKey #-}
+
+foreign import javascript unsafe "window[\"CryptoKey\"]" gTypeCryptoKey :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CryptoKeyPair".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CryptoKeyPair Mozilla CryptoKeyPair documentation>
+newtype CryptoKeyPair = CryptoKeyPair { unCryptoKeyPair :: JSVal }
+
+instance Eq (CryptoKeyPair) where
+  (CryptoKeyPair a) == (CryptoKeyPair b) = js_eq a b
+
+instance PToJSVal CryptoKeyPair where
+  pToJSVal = unCryptoKeyPair
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CryptoKeyPair where
+  pFromJSVal = CryptoKeyPair
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CryptoKeyPair where
+  toJSVal = return . unCryptoKeyPair
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CryptoKeyPair where
+  fromJSVal = return . fmap CryptoKeyPair . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CryptoKeyPair where
+  typeGType _ = gTypeCryptoKeyPair
+  {-# INLINE typeGType #-}
+noCryptoKeyPair :: Maybe CryptoKeyPair
+noCryptoKeyPair = Nothing
+{-# INLINE noCryptoKeyPair #-}
+
+foreign import javascript unsafe "window[\"CryptoKeyPair\"]" gTypeCryptoKeyPair :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CustomElementRegistry".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CustomElementRegistry Mozilla CustomElementRegistry documentation>
+newtype CustomElementRegistry = CustomElementRegistry { unCustomElementRegistry :: JSVal }
+
+instance Eq (CustomElementRegistry) where
+  (CustomElementRegistry a) == (CustomElementRegistry b) = js_eq a b
+
+instance PToJSVal CustomElementRegistry where
+  pToJSVal = unCustomElementRegistry
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CustomElementRegistry where
+  pFromJSVal = CustomElementRegistry
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CustomElementRegistry where
+  toJSVal = return . unCustomElementRegistry
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CustomElementRegistry where
+  fromJSVal = return . fmap CustomElementRegistry . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject CustomElementRegistry where
+  typeGType _ = gTypeCustomElementRegistry
+  {-# INLINE typeGType #-}
+noCustomElementRegistry :: Maybe CustomElementRegistry
+noCustomElementRegistry = Nothing
+{-# INLINE noCustomElementRegistry #-}
+
+foreign import javascript unsafe "window[\"CustomElementRegistry\"]" gTypeCustomElementRegistry :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CustomEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent Mozilla CustomEvent documentation>
+newtype CustomEvent = CustomEvent { unCustomEvent :: JSVal }
+
+instance Eq (CustomEvent) where
+  (CustomEvent a) == (CustomEvent b) = js_eq a b
+
+instance PToJSVal CustomEvent where
+  pToJSVal = unCustomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CustomEvent where
+  pFromJSVal = CustomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CustomEvent where
+  toJSVal = return . unCustomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CustomEvent where
+  fromJSVal = return . fmap CustomEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent CustomEvent
+instance IsGObject CustomEvent where
+  typeGType _ = gTypeCustomEvent
+  {-# INLINE typeGType #-}
+noCustomEvent :: Maybe CustomEvent
+noCustomEvent = Nothing
+{-# INLINE noCustomEvent #-}
+
+foreign import javascript unsafe "window[\"CustomEvent\"]" gTypeCustomEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.CustomEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/CustomEventInit Mozilla CustomEventInit documentation>
+newtype CustomEventInit = CustomEventInit { unCustomEventInit :: JSVal }
+
+instance Eq (CustomEventInit) where
+  (CustomEventInit a) == (CustomEventInit b) = js_eq a b
+
+instance PToJSVal CustomEventInit where
+  pToJSVal = unCustomEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal CustomEventInit where
+  pFromJSVal = CustomEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal CustomEventInit where
+  toJSVal = return . unCustomEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal CustomEventInit where
+  fromJSVal = return . fmap CustomEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit CustomEventInit
+instance IsGObject CustomEventInit where
+  typeGType _ = gTypeCustomEventInit
+  {-# INLINE typeGType #-}
+noCustomEventInit :: Maybe CustomEventInit
+noCustomEventInit = Nothing
+{-# INLINE noCustomEventInit #-}
+
+foreign import javascript unsafe "window[\"CustomEventInit\"]" gTypeCustomEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMError Mozilla DOMError documentation>
+newtype DOMError = DOMError { unDOMError :: JSVal }
+
+instance Eq (DOMError) where
+  (DOMError a) == (DOMError b) = js_eq a b
+
+instance PToJSVal DOMError where
+  pToJSVal = unDOMError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMError where
+  pFromJSVal = DOMError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMError where
+  toJSVal = return . unDOMError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMError where
+  fromJSVal = return . fmap DOMError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDOMError o
+toDOMError :: IsDOMError o => o -> DOMError
+toDOMError = DOMError . coerce
+
+instance IsDOMError DOMError
+instance IsGObject DOMError where
+  typeGType _ = gTypeDOMError
+  {-# INLINE typeGType #-}
+noDOMError :: Maybe DOMError
+noDOMError = Nothing
+{-# INLINE noDOMError #-}
+
+foreign import javascript unsafe "window[\"DOMError\"]" gTypeDOMError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMException".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMException Mozilla DOMException documentation>
+newtype DOMException = DOMException { unDOMException :: JSVal }
+
+instance Eq (DOMException) where
+  (DOMException a) == (DOMException b) = js_eq a b
+
+instance PToJSVal DOMException where
+  pToJSVal = unDOMException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMException where
+  pFromJSVal = DOMException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMException where
+  toJSVal = return . unDOMException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMException where
+  fromJSVal = return . fmap DOMException . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMException where
+  typeGType _ = gTypeDOMException
+  {-# INLINE typeGType #-}
+noDOMException :: Maybe DOMException
+noDOMException = Nothing
+{-# INLINE noDOMException #-}
+
+foreign import javascript unsafe "window[\"DOMException\"]" gTypeDOMException :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMImplementation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMImplementation Mozilla DOMImplementation documentation>
+newtype DOMImplementation = DOMImplementation { unDOMImplementation :: JSVal }
+
+instance Eq (DOMImplementation) where
+  (DOMImplementation a) == (DOMImplementation b) = js_eq a b
+
+instance PToJSVal DOMImplementation where
+  pToJSVal = unDOMImplementation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMImplementation where
+  pFromJSVal = DOMImplementation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMImplementation where
+  toJSVal = return . unDOMImplementation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMImplementation where
+  fromJSVal = return . fmap DOMImplementation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMImplementation where
+  typeGType _ = gTypeDOMImplementation
+  {-# INLINE typeGType #-}
+noDOMImplementation :: Maybe DOMImplementation
+noDOMImplementation = Nothing
+{-# INLINE noDOMImplementation #-}
+
+foreign import javascript unsafe "window[\"DOMImplementation\"]" gTypeDOMImplementation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMNamedFlowCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlowCollection Mozilla WebKitNamedFlowCollection documentation>
+newtype DOMNamedFlowCollection = DOMNamedFlowCollection { unDOMNamedFlowCollection :: JSVal }
+
+instance Eq (DOMNamedFlowCollection) where
+  (DOMNamedFlowCollection a) == (DOMNamedFlowCollection b) = js_eq a b
+
+instance PToJSVal DOMNamedFlowCollection where
+  pToJSVal = unDOMNamedFlowCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMNamedFlowCollection where
+  pFromJSVal = DOMNamedFlowCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMNamedFlowCollection where
+  toJSVal = return . unDOMNamedFlowCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMNamedFlowCollection where
+  fromJSVal = return . fmap DOMNamedFlowCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMNamedFlowCollection where
+  typeGType _ = gTypeDOMNamedFlowCollection
+  {-# INLINE typeGType #-}
+noDOMNamedFlowCollection :: Maybe DOMNamedFlowCollection
+noDOMNamedFlowCollection = Nothing
+{-# INLINE noDOMNamedFlowCollection #-}
+
+foreign import javascript unsafe "window[\"WebKitNamedFlowCollection\"]" gTypeDOMNamedFlowCollection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMParser".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMParser Mozilla DOMParser documentation>
+newtype DOMParser = DOMParser { unDOMParser :: JSVal }
+
+instance Eq (DOMParser) where
+  (DOMParser a) == (DOMParser b) = js_eq a b
+
+instance PToJSVal DOMParser where
+  pToJSVal = unDOMParser
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMParser where
+  pFromJSVal = DOMParser
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMParser where
+  toJSVal = return . unDOMParser
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMParser where
+  fromJSVal = return . fmap DOMParser . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMParser where
+  typeGType _ = gTypeDOMParser
+  {-# INLINE typeGType #-}
+noDOMParser :: Maybe DOMParser
+noDOMParser = Nothing
+{-# INLINE noDOMParser #-}
+
+foreign import javascript unsafe "window[\"DOMParser\"]" gTypeDOMParser :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMPoint".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DOMPointReadOnly"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMPoint Mozilla DOMPoint documentation>
+newtype DOMPoint = DOMPoint { unDOMPoint :: JSVal }
+
+instance Eq (DOMPoint) where
+  (DOMPoint a) == (DOMPoint b) = js_eq a b
+
+instance PToJSVal DOMPoint where
+  pToJSVal = unDOMPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMPoint where
+  pFromJSVal = DOMPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMPoint where
+  toJSVal = return . unDOMPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMPoint where
+  fromJSVal = return . fmap DOMPoint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDOMPointReadOnly DOMPoint
+instance IsGObject DOMPoint where
+  typeGType _ = gTypeDOMPoint
+  {-# INLINE typeGType #-}
+noDOMPoint :: Maybe DOMPoint
+noDOMPoint = Nothing
+{-# INLINE noDOMPoint #-}
+
+foreign import javascript unsafe "window[\"DOMPoint\"]" gTypeDOMPoint :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMPointInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointInit Mozilla DOMPointInit documentation>
+newtype DOMPointInit = DOMPointInit { unDOMPointInit :: JSVal }
+
+instance Eq (DOMPointInit) where
+  (DOMPointInit a) == (DOMPointInit b) = js_eq a b
+
+instance PToJSVal DOMPointInit where
+  pToJSVal = unDOMPointInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMPointInit where
+  pFromJSVal = DOMPointInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMPointInit where
+  toJSVal = return . unDOMPointInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMPointInit where
+  fromJSVal = return . fmap DOMPointInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMPointInit where
+  typeGType _ = gTypeDOMPointInit
+  {-# INLINE typeGType #-}
+noDOMPointInit :: Maybe DOMPointInit
+noDOMPointInit = Nothing
+{-# INLINE noDOMPointInit #-}
+
+foreign import javascript unsafe "window[\"DOMPointInit\"]" gTypeDOMPointInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMPointReadOnly".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMPointReadOnly Mozilla DOMPointReadOnly documentation>
+newtype DOMPointReadOnly = DOMPointReadOnly { unDOMPointReadOnly :: JSVal }
+
+instance Eq (DOMPointReadOnly) where
+  (DOMPointReadOnly a) == (DOMPointReadOnly b) = js_eq a b
+
+instance PToJSVal DOMPointReadOnly where
+  pToJSVal = unDOMPointReadOnly
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMPointReadOnly where
+  pFromJSVal = DOMPointReadOnly
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMPointReadOnly where
+  toJSVal = return . unDOMPointReadOnly
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMPointReadOnly where
+  fromJSVal = return . fmap DOMPointReadOnly . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDOMPointReadOnly o
+toDOMPointReadOnly :: IsDOMPointReadOnly o => o -> DOMPointReadOnly
+toDOMPointReadOnly = DOMPointReadOnly . coerce
+
+instance IsDOMPointReadOnly DOMPointReadOnly
+instance IsGObject DOMPointReadOnly where
+  typeGType _ = gTypeDOMPointReadOnly
+  {-# INLINE typeGType #-}
+noDOMPointReadOnly :: Maybe DOMPointReadOnly
+noDOMPointReadOnly = Nothing
+{-# INLINE noDOMPointReadOnly #-}
+
+foreign import javascript unsafe "window[\"DOMPointReadOnly\"]" gTypeDOMPointReadOnly :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMRect".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DOMRectReadOnly"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMRect Mozilla DOMRect documentation>
+newtype DOMRect = DOMRect { unDOMRect :: JSVal }
+
+instance Eq (DOMRect) where
+  (DOMRect a) == (DOMRect b) = js_eq a b
+
+instance PToJSVal DOMRect where
+  pToJSVal = unDOMRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMRect where
+  pFromJSVal = DOMRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMRect where
+  toJSVal = return . unDOMRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMRect where
+  fromJSVal = return . fmap DOMRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDOMRectReadOnly DOMRect
+instance IsGObject DOMRect where
+  typeGType _ = gTypeDOMRect
+  {-# INLINE typeGType #-}
+noDOMRect :: Maybe DOMRect
+noDOMRect = Nothing
+{-# INLINE noDOMRect #-}
+
+foreign import javascript unsafe "window[\"DOMRect\"]" gTypeDOMRect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMRectInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectInit Mozilla DOMRectInit documentation>
+newtype DOMRectInit = DOMRectInit { unDOMRectInit :: JSVal }
+
+instance Eq (DOMRectInit) where
+  (DOMRectInit a) == (DOMRectInit b) = js_eq a b
+
+instance PToJSVal DOMRectInit where
+  pToJSVal = unDOMRectInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMRectInit where
+  pFromJSVal = DOMRectInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMRectInit where
+  toJSVal = return . unDOMRectInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMRectInit where
+  fromJSVal = return . fmap DOMRectInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMRectInit where
+  typeGType _ = gTypeDOMRectInit
+  {-# INLINE typeGType #-}
+noDOMRectInit :: Maybe DOMRectInit
+noDOMRectInit = Nothing
+{-# INLINE noDOMRectInit #-}
+
+foreign import javascript unsafe "window[\"DOMRectInit\"]" gTypeDOMRectInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMRectReadOnly".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMRectReadOnly Mozilla DOMRectReadOnly documentation>
+newtype DOMRectReadOnly = DOMRectReadOnly { unDOMRectReadOnly :: JSVal }
+
+instance Eq (DOMRectReadOnly) where
+  (DOMRectReadOnly a) == (DOMRectReadOnly b) = js_eq a b
+
+instance PToJSVal DOMRectReadOnly where
+  pToJSVal = unDOMRectReadOnly
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMRectReadOnly where
+  pFromJSVal = DOMRectReadOnly
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMRectReadOnly where
+  toJSVal = return . unDOMRectReadOnly
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMRectReadOnly where
+  fromJSVal = return . fmap DOMRectReadOnly . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDOMRectReadOnly o
+toDOMRectReadOnly :: IsDOMRectReadOnly o => o -> DOMRectReadOnly
+toDOMRectReadOnly = DOMRectReadOnly . coerce
+
+instance IsDOMRectReadOnly DOMRectReadOnly
+instance IsGObject DOMRectReadOnly where
+  typeGType _ = gTypeDOMRectReadOnly
+  {-# INLINE typeGType #-}
+noDOMRectReadOnly :: Maybe DOMRectReadOnly
+noDOMRectReadOnly = Nothing
+{-# INLINE noDOMRectReadOnly #-}
+
+foreign import javascript unsafe "window[\"DOMRectReadOnly\"]" gTypeDOMRectReadOnly :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringList Mozilla DOMStringList documentation>
+newtype DOMStringList = DOMStringList { unDOMStringList :: JSVal }
+
+instance Eq (DOMStringList) where
+  (DOMStringList a) == (DOMStringList b) = js_eq a b
+
+instance PToJSVal DOMStringList where
+  pToJSVal = unDOMStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringList where
+  pFromJSVal = DOMStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringList where
+  toJSVal = return . unDOMStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringList where
+  fromJSVal = return . fmap DOMStringList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMStringList where
+  typeGType _ = gTypeDOMStringList
+  {-# INLINE typeGType #-}
+noDOMStringList :: Maybe DOMStringList
+noDOMStringList = Nothing
+{-# INLINE noDOMStringList #-}
+
+foreign import javascript unsafe "window[\"DOMStringList\"]" gTypeDOMStringList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMStringMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMStringMap Mozilla DOMStringMap documentation>
+newtype DOMStringMap = DOMStringMap { unDOMStringMap :: JSVal }
+
+instance Eq (DOMStringMap) where
+  (DOMStringMap a) == (DOMStringMap b) = js_eq a b
+
+instance PToJSVal DOMStringMap where
+  pToJSVal = unDOMStringMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMStringMap where
+  pFromJSVal = DOMStringMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMStringMap where
+  toJSVal = return . unDOMStringMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMStringMap where
+  fromJSVal = return . fmap DOMStringMap . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMStringMap where
+  typeGType _ = gTypeDOMStringMap
+  {-# INLINE typeGType #-}
+noDOMStringMap :: Maybe DOMStringMap
+noDOMStringMap = Nothing
+{-# INLINE noDOMStringMap #-}
+
+foreign import javascript unsafe "window[\"DOMStringMap\"]" gTypeDOMStringMap :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DOMTokenList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DOMTokenList Mozilla DOMTokenList documentation>
+newtype DOMTokenList = DOMTokenList { unDOMTokenList :: JSVal }
+
+instance Eq (DOMTokenList) where
+  (DOMTokenList a) == (DOMTokenList b) = js_eq a b
+
+instance PToJSVal DOMTokenList where
+  pToJSVal = unDOMTokenList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DOMTokenList where
+  pFromJSVal = DOMTokenList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DOMTokenList where
+  toJSVal = return . unDOMTokenList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DOMTokenList where
+  fromJSVal = return . fmap DOMTokenList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DOMTokenList where
+  typeGType _ = gTypeDOMTokenList
+  {-# INLINE typeGType #-}
+noDOMTokenList :: Maybe DOMTokenList
+noDOMTokenList = Nothing
+{-# INLINE noDOMTokenList #-}
+
+foreign import javascript unsafe "window[\"DOMTokenList\"]" gTypeDOMTokenList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DataCue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.TextTrackCue"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitDataCue Mozilla WebKitDataCue documentation>
+newtype DataCue = DataCue { unDataCue :: JSVal }
+
+instance Eq (DataCue) where
+  (DataCue a) == (DataCue b) = js_eq a b
+
+instance PToJSVal DataCue where
+  pToJSVal = unDataCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataCue where
+  pFromJSVal = DataCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataCue where
+  toJSVal = return . unDataCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataCue where
+  fromJSVal = return . fmap DataCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsTextTrackCue DataCue
+instance IsEventTarget DataCue
+instance IsGObject DataCue where
+  typeGType _ = gTypeDataCue
+  {-# INLINE typeGType #-}
+noDataCue :: Maybe DataCue
+noDataCue = Nothing
+{-# INLINE noDataCue #-}
+
+foreign import javascript unsafe "window[\"WebKitDataCue\"]" gTypeDataCue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DataTransfer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer Mozilla DataTransfer documentation>
+newtype DataTransfer = DataTransfer { unDataTransfer :: JSVal }
+
+instance Eq (DataTransfer) where
+  (DataTransfer a) == (DataTransfer b) = js_eq a b
+
+instance PToJSVal DataTransfer where
+  pToJSVal = unDataTransfer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransfer where
+  pFromJSVal = DataTransfer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransfer where
+  toJSVal = return . unDataTransfer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransfer where
+  fromJSVal = return . fmap DataTransfer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DataTransfer where
+  typeGType _ = gTypeDataTransfer
+  {-# INLINE typeGType #-}
+noDataTransfer :: Maybe DataTransfer
+noDataTransfer = Nothing
+{-# INLINE noDataTransfer #-}
+
+foreign import javascript unsafe "window[\"DataTransfer\"]" gTypeDataTransfer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DataTransferItem".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItem Mozilla DataTransferItem documentation>
+newtype DataTransferItem = DataTransferItem { unDataTransferItem :: JSVal }
+
+instance Eq (DataTransferItem) where
+  (DataTransferItem a) == (DataTransferItem b) = js_eq a b
+
+instance PToJSVal DataTransferItem where
+  pToJSVal = unDataTransferItem
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItem where
+  pFromJSVal = DataTransferItem
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItem where
+  toJSVal = return . unDataTransferItem
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItem where
+  fromJSVal = return . fmap DataTransferItem . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DataTransferItem where
+  typeGType _ = gTypeDataTransferItem
+  {-# INLINE typeGType #-}
+noDataTransferItem :: Maybe DataTransferItem
+noDataTransferItem = Nothing
+{-# INLINE noDataTransferItem #-}
+
+foreign import javascript unsafe "window[\"DataTransferItem\"]" gTypeDataTransferItem :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DataTransferItemList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList Mozilla DataTransferItemList documentation>
+newtype DataTransferItemList = DataTransferItemList { unDataTransferItemList :: JSVal }
+
+instance Eq (DataTransferItemList) where
+  (DataTransferItemList a) == (DataTransferItemList b) = js_eq a b
+
+instance PToJSVal DataTransferItemList where
+  pToJSVal = unDataTransferItemList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DataTransferItemList where
+  pFromJSVal = DataTransferItemList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DataTransferItemList where
+  toJSVal = return . unDataTransferItemList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DataTransferItemList where
+  fromJSVal = return . fmap DataTransferItemList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject DataTransferItemList where
+  typeGType _ = gTypeDataTransferItemList
+  {-# INLINE typeGType #-}
+noDataTransferItemList :: Maybe DataTransferItemList
+noDataTransferItemList = Nothing
+{-# INLINE noDataTransferItemList #-}
+
+foreign import javascript unsafe "window[\"DataTransferItemList\"]" gTypeDataTransferItemList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Database".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Database Mozilla Database documentation>
+newtype Database = Database { unDatabase :: JSVal }
+
+instance Eq (Database) where
+  (Database a) == (Database b) = js_eq a b
+
+instance PToJSVal Database where
+  pToJSVal = unDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Database where
+  pFromJSVal = Database
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Database where
+  toJSVal = return . unDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Database where
+  fromJSVal = return . fmap Database . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Database where
+  typeGType _ = gTypeDatabase
+  {-# INLINE typeGType #-}
+noDatabase :: Maybe Database
+noDatabase = Nothing
+{-# INLINE noDatabase #-}
+
+foreign import javascript unsafe "window[\"Database\"]" gTypeDatabase :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DedicatedWorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.WorkerGlobalScope"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.WindowOrWorkerGlobalScope"
+--     * "GHCJS.DOM.GlobalPerformance"
+--     * "GHCJS.DOM.GlobalCrypto"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DedicatedWorkerGlobalScope Mozilla DedicatedWorkerGlobalScope documentation>
+newtype DedicatedWorkerGlobalScope = DedicatedWorkerGlobalScope { unDedicatedWorkerGlobalScope :: JSVal }
+
+instance Eq (DedicatedWorkerGlobalScope) where
+  (DedicatedWorkerGlobalScope a) == (DedicatedWorkerGlobalScope b) = js_eq a b
+
+instance PToJSVal DedicatedWorkerGlobalScope where
+  pToJSVal = unDedicatedWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DedicatedWorkerGlobalScope where
+  pFromJSVal = DedicatedWorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DedicatedWorkerGlobalScope where
+  toJSVal = return . unDedicatedWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DedicatedWorkerGlobalScope where
+  fromJSVal = return . fmap DedicatedWorkerGlobalScope . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsWorkerGlobalScope DedicatedWorkerGlobalScope
+instance IsEventTarget DedicatedWorkerGlobalScope
+instance IsWindowOrWorkerGlobalScope DedicatedWorkerGlobalScope
+instance IsGlobalPerformance DedicatedWorkerGlobalScope
+instance IsGlobalCrypto DedicatedWorkerGlobalScope
+instance IsGObject DedicatedWorkerGlobalScope where
+  typeGType _ = gTypeDedicatedWorkerGlobalScope
+  {-# INLINE typeGType #-}
+noDedicatedWorkerGlobalScope :: Maybe DedicatedWorkerGlobalScope
+noDedicatedWorkerGlobalScope = Nothing
+{-# INLINE noDedicatedWorkerGlobalScope #-}
+
+foreign import javascript unsafe "window[\"DedicatedWorkerGlobalScope\"]" gTypeDedicatedWorkerGlobalScope :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DelayNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DelayNode Mozilla DelayNode documentation>
+newtype DelayNode = DelayNode { unDelayNode :: JSVal }
+
+instance Eq (DelayNode) where
+  (DelayNode a) == (DelayNode b) = js_eq a b
+
+instance PToJSVal DelayNode where
+  pToJSVal = unDelayNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DelayNode where
+  pFromJSVal = DelayNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DelayNode where
+  toJSVal = return . unDelayNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DelayNode where
+  fromJSVal = return . fmap DelayNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode DelayNode
+instance IsEventTarget DelayNode
+instance IsGObject DelayNode where
+  typeGType _ = gTypeDelayNode
+  {-# INLINE typeGType #-}
+noDelayNode :: Maybe DelayNode
+noDelayNode = Nothing
+{-# INLINE noDelayNode #-}
+
+foreign import javascript unsafe "window[\"DelayNode\"]" gTypeDelayNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DeviceMotionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceMotionEvent Mozilla DeviceMotionEvent documentation>
+newtype DeviceMotionEvent = DeviceMotionEvent { unDeviceMotionEvent :: JSVal }
+
+instance Eq (DeviceMotionEvent) where
+  (DeviceMotionEvent a) == (DeviceMotionEvent b) = js_eq a b
+
+instance PToJSVal DeviceMotionEvent where
+  pToJSVal = unDeviceMotionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceMotionEvent where
+  pFromJSVal = DeviceMotionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceMotionEvent where
+  toJSVal = return . unDeviceMotionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceMotionEvent where
+  fromJSVal = return . fmap DeviceMotionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent DeviceMotionEvent
+instance IsGObject DeviceMotionEvent where
+  typeGType _ = gTypeDeviceMotionEvent
+  {-# INLINE typeGType #-}
+noDeviceMotionEvent :: Maybe DeviceMotionEvent
+noDeviceMotionEvent = Nothing
+{-# INLINE noDeviceMotionEvent #-}
+
+foreign import javascript unsafe "window[\"DeviceMotionEvent\"]" gTypeDeviceMotionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DeviceOrientationEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceOrientationEvent Mozilla DeviceOrientationEvent documentation>
+newtype DeviceOrientationEvent = DeviceOrientationEvent { unDeviceOrientationEvent :: JSVal }
+
+instance Eq (DeviceOrientationEvent) where
+  (DeviceOrientationEvent a) == (DeviceOrientationEvent b) = js_eq a b
+
+instance PToJSVal DeviceOrientationEvent where
+  pToJSVal = unDeviceOrientationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceOrientationEvent where
+  pFromJSVal = DeviceOrientationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceOrientationEvent where
+  toJSVal = return . unDeviceOrientationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceOrientationEvent where
+  fromJSVal = return . fmap DeviceOrientationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent DeviceOrientationEvent
+instance IsGObject DeviceOrientationEvent where
+  typeGType _ = gTypeDeviceOrientationEvent
+  {-# INLINE typeGType #-}
+noDeviceOrientationEvent :: Maybe DeviceOrientationEvent
+noDeviceOrientationEvent = Nothing
+{-# INLINE noDeviceOrientationEvent #-}
+
+foreign import javascript unsafe "window[\"DeviceOrientationEvent\"]" gTypeDeviceOrientationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DeviceProximityEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEvent Mozilla DeviceProximityEvent documentation>
+newtype DeviceProximityEvent = DeviceProximityEvent { unDeviceProximityEvent :: JSVal }
+
+instance Eq (DeviceProximityEvent) where
+  (DeviceProximityEvent a) == (DeviceProximityEvent b) = js_eq a b
+
+instance PToJSVal DeviceProximityEvent where
+  pToJSVal = unDeviceProximityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceProximityEvent where
+  pFromJSVal = DeviceProximityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceProximityEvent where
+  toJSVal = return . unDeviceProximityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceProximityEvent where
+  fromJSVal = return . fmap DeviceProximityEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent DeviceProximityEvent
+instance IsGObject DeviceProximityEvent where
+  typeGType _ = gTypeDeviceProximityEvent
+  {-# INLINE typeGType #-}
+noDeviceProximityEvent :: Maybe DeviceProximityEvent
+noDeviceProximityEvent = Nothing
+{-# INLINE noDeviceProximityEvent #-}
+
+foreign import javascript unsafe "window[\"DeviceProximityEvent\"]" gTypeDeviceProximityEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DeviceProximityEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DeviceProximityEventInit Mozilla DeviceProximityEventInit documentation>
+newtype DeviceProximityEventInit = DeviceProximityEventInit { unDeviceProximityEventInit :: JSVal }
+
+instance Eq (DeviceProximityEventInit) where
+  (DeviceProximityEventInit a) == (DeviceProximityEventInit b) = js_eq a b
+
+instance PToJSVal DeviceProximityEventInit where
+  pToJSVal = unDeviceProximityEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DeviceProximityEventInit where
+  pFromJSVal = DeviceProximityEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DeviceProximityEventInit where
+  toJSVal = return . unDeviceProximityEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DeviceProximityEventInit where
+  fromJSVal = return . fmap DeviceProximityEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit DeviceProximityEventInit
+instance IsGObject DeviceProximityEventInit where
+  typeGType _ = gTypeDeviceProximityEventInit
+  {-# INLINE typeGType #-}
+noDeviceProximityEventInit :: Maybe DeviceProximityEventInit
+noDeviceProximityEventInit = Nothing
+{-# INLINE noDeviceProximityEventInit #-}
+
+foreign import javascript unsafe "window[\"DeviceProximityEventInit\"]" gTypeDeviceProximityEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Document".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.DocumentOrShadowRoot"
+--     * "GHCJS.DOM.NonElementParentNode"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Document Mozilla Document documentation>
+newtype Document = Document { unDocument :: JSVal }
+
+instance Eq (Document) where
+  (Document a) == (Document b) = js_eq a b
+
+instance PToJSVal Document where
+  pToJSVal = unDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Document where
+  pFromJSVal = Document
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Document where
+  toJSVal = return . unDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Document where
+  fromJSVal = return . fmap Document . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsNode o, IsEventTarget o, IsGlobalEventHandlers o, IsDocumentOrShadowRoot o, IsNonElementParentNode o, IsParentNode o, IsDocumentAndElementEventHandlers o, IsGObject o) => IsDocument o
+toDocument :: IsDocument o => o -> Document
+toDocument = Document . coerce
+
+instance IsDocument Document
+instance IsNode Document
+instance IsEventTarget Document
+instance IsGlobalEventHandlers Document
+instance IsDocumentOrShadowRoot Document
+instance IsNonElementParentNode Document
+instance IsParentNode Document
+instance IsDocumentAndElementEventHandlers Document
+instance IsGObject Document where
+  typeGType _ = gTypeDocument
+  {-# INLINE typeGType #-}
+noDocument :: Maybe Document
+noDocument = Nothing
+{-# INLINE noDocument #-}
+
+foreign import javascript unsafe "window[\"Document\"]" gTypeDocument :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentAndElementEventHandlers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentAndElementEventHandlers Mozilla DocumentAndElementEventHandlers documentation>
+newtype DocumentAndElementEventHandlers = DocumentAndElementEventHandlers { unDocumentAndElementEventHandlers :: JSVal }
+
+instance Eq (DocumentAndElementEventHandlers) where
+  (DocumentAndElementEventHandlers a) == (DocumentAndElementEventHandlers b) = js_eq a b
+
+instance PToJSVal DocumentAndElementEventHandlers where
+  pToJSVal = unDocumentAndElementEventHandlers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentAndElementEventHandlers where
+  pFromJSVal = DocumentAndElementEventHandlers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentAndElementEventHandlers where
+  toJSVal = return . unDocumentAndElementEventHandlers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentAndElementEventHandlers where
+  fromJSVal = return . fmap DocumentAndElementEventHandlers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDocumentAndElementEventHandlers o
+toDocumentAndElementEventHandlers :: IsDocumentAndElementEventHandlers o => o -> DocumentAndElementEventHandlers
+toDocumentAndElementEventHandlers = DocumentAndElementEventHandlers . coerce
+
+instance IsDocumentAndElementEventHandlers DocumentAndElementEventHandlers
+instance IsGObject DocumentAndElementEventHandlers where
+  typeGType _ = gTypeDocumentAndElementEventHandlers
+  {-# INLINE typeGType #-}
+noDocumentAndElementEventHandlers :: Maybe DocumentAndElementEventHandlers
+noDocumentAndElementEventHandlers = Nothing
+{-# INLINE noDocumentAndElementEventHandlers #-}
+
+foreign import javascript unsafe "window[\"DocumentAndElementEventHandlers\"]" gTypeDocumentAndElementEventHandlers :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentFragment".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonElementParentNode"
+--     * "GHCJS.DOM.ParentNode"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment Mozilla DocumentFragment documentation>
+newtype DocumentFragment = DocumentFragment { unDocumentFragment :: JSVal }
+
+instance Eq (DocumentFragment) where
+  (DocumentFragment a) == (DocumentFragment b) = js_eq a b
+
+instance PToJSVal DocumentFragment where
+  pToJSVal = unDocumentFragment
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentFragment where
+  pFromJSVal = DocumentFragment
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentFragment where
+  toJSVal = return . unDocumentFragment
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentFragment where
+  fromJSVal = return . fmap DocumentFragment . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsNode o, IsEventTarget o, IsNonElementParentNode o, IsParentNode o, IsGObject o) => IsDocumentFragment o
+toDocumentFragment :: IsDocumentFragment o => o -> DocumentFragment
+toDocumentFragment = DocumentFragment . coerce
+
+instance IsDocumentFragment DocumentFragment
+instance IsNode DocumentFragment
+instance IsEventTarget DocumentFragment
+instance IsNonElementParentNode DocumentFragment
+instance IsParentNode DocumentFragment
+instance IsGObject DocumentFragment where
+  typeGType _ = gTypeDocumentFragment
+  {-# INLINE typeGType #-}
+noDocumentFragment :: Maybe DocumentFragment
+noDocumentFragment = Nothing
+{-# INLINE noDocumentFragment #-}
+
+foreign import javascript unsafe "window[\"DocumentFragment\"]" gTypeDocumentFragment :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentOrShadowRoot".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentOrShadowRoot Mozilla DocumentOrShadowRoot documentation>
+newtype DocumentOrShadowRoot = DocumentOrShadowRoot { unDocumentOrShadowRoot :: JSVal }
+
+instance Eq (DocumentOrShadowRoot) where
+  (DocumentOrShadowRoot a) == (DocumentOrShadowRoot b) = js_eq a b
+
+instance PToJSVal DocumentOrShadowRoot where
+  pToJSVal = unDocumentOrShadowRoot
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentOrShadowRoot where
+  pFromJSVal = DocumentOrShadowRoot
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentOrShadowRoot where
+  toJSVal = return . unDocumentOrShadowRoot
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentOrShadowRoot where
+  fromJSVal = return . fmap DocumentOrShadowRoot . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDocumentOrShadowRoot o
+toDocumentOrShadowRoot :: IsDocumentOrShadowRoot o => o -> DocumentOrShadowRoot
+toDocumentOrShadowRoot = DocumentOrShadowRoot . coerce
+
+instance IsDocumentOrShadowRoot DocumentOrShadowRoot
+instance IsGObject DocumentOrShadowRoot where
+  typeGType _ = gTypeDocumentOrShadowRoot
+  {-# INLINE typeGType #-}
+noDocumentOrShadowRoot :: Maybe DocumentOrShadowRoot
+noDocumentOrShadowRoot = Nothing
+{-# INLINE noDocumentOrShadowRoot #-}
+
+foreign import javascript unsafe "window[\"DocumentOrShadowRoot\"]" gTypeDocumentOrShadowRoot :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentTimeline".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AnimationTimeline"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentTimeline Mozilla DocumentTimeline documentation>
+newtype DocumentTimeline = DocumentTimeline { unDocumentTimeline :: JSVal }
+
+instance Eq (DocumentTimeline) where
+  (DocumentTimeline a) == (DocumentTimeline b) = js_eq a b
+
+instance PToJSVal DocumentTimeline where
+  pToJSVal = unDocumentTimeline
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentTimeline where
+  pFromJSVal = DocumentTimeline
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentTimeline where
+  toJSVal = return . unDocumentTimeline
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentTimeline where
+  fromJSVal = return . fmap DocumentTimeline . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAnimationTimeline DocumentTimeline
+instance IsGObject DocumentTimeline where
+  typeGType _ = gTypeDocumentTimeline
+  {-# INLINE typeGType #-}
+noDocumentTimeline :: Maybe DocumentTimeline
+noDocumentTimeline = Nothing
+{-# INLINE noDocumentTimeline #-}
+
+foreign import javascript unsafe "window[\"DocumentTimeline\"]" gTypeDocumentTimeline :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DocumentType".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.ChildNode"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DocumentType Mozilla DocumentType documentation>
+newtype DocumentType = DocumentType { unDocumentType :: JSVal }
+
+instance Eq (DocumentType) where
+  (DocumentType a) == (DocumentType b) = js_eq a b
+
+instance PToJSVal DocumentType where
+  pToJSVal = unDocumentType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DocumentType where
+  pFromJSVal = DocumentType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DocumentType where
+  toJSVal = return . unDocumentType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DocumentType where
+  fromJSVal = return . fmap DocumentType . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNode DocumentType
+instance IsEventTarget DocumentType
+instance IsChildNode DocumentType
+instance IsGObject DocumentType where
+  typeGType _ = gTypeDocumentType
+  {-# INLINE typeGType #-}
+noDocumentType :: Maybe DocumentType
+noDocumentType = Nothing
+{-# INLINE noDocumentType #-}
+
+foreign import javascript unsafe "window[\"DocumentType\"]" gTypeDocumentType :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DoubleRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DoubleRange Mozilla DoubleRange documentation>
+newtype DoubleRange = DoubleRange { unDoubleRange :: JSVal }
+
+instance Eq (DoubleRange) where
+  (DoubleRange a) == (DoubleRange b) = js_eq a b
+
+instance PToJSVal DoubleRange where
+  pToJSVal = unDoubleRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DoubleRange where
+  pFromJSVal = DoubleRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DoubleRange where
+  toJSVal = return . unDoubleRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DoubleRange where
+  fromJSVal = return . fmap DoubleRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsDoubleRange o
+toDoubleRange :: IsDoubleRange o => o -> DoubleRange
+toDoubleRange = DoubleRange . coerce
+
+instance IsDoubleRange DoubleRange
+instance IsGObject DoubleRange where
+  typeGType _ = gTypeDoubleRange
+  {-# INLINE typeGType #-}
+noDoubleRange :: Maybe DoubleRange
+noDoubleRange = Nothing
+{-# INLINE noDoubleRange #-}
+
+foreign import javascript unsafe "window[\"DoubleRange\"]" gTypeDoubleRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.DynamicsCompressorNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/DynamicsCompressorNode Mozilla DynamicsCompressorNode documentation>
+newtype DynamicsCompressorNode = DynamicsCompressorNode { unDynamicsCompressorNode :: JSVal }
+
+instance Eq (DynamicsCompressorNode) where
+  (DynamicsCompressorNode a) == (DynamicsCompressorNode b) = js_eq a b
+
+instance PToJSVal DynamicsCompressorNode where
+  pToJSVal = unDynamicsCompressorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal DynamicsCompressorNode where
+  pFromJSVal = DynamicsCompressorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal DynamicsCompressorNode where
+  toJSVal = return . unDynamicsCompressorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal DynamicsCompressorNode where
+  fromJSVal = return . fmap DynamicsCompressorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode DynamicsCompressorNode
+instance IsEventTarget DynamicsCompressorNode
+instance IsGObject DynamicsCompressorNode where
+  typeGType _ = gTypeDynamicsCompressorNode
+  {-# INLINE typeGType #-}
+noDynamicsCompressorNode :: Maybe DynamicsCompressorNode
+noDynamicsCompressorNode = Nothing
+{-# INLINE noDynamicsCompressorNode #-}
+
+foreign import javascript unsafe "window[\"DynamicsCompressorNode\"]" gTypeDynamicsCompressorNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EXTBlendMinMax".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTBlendMinMax Mozilla EXTBlendMinMax documentation>
+newtype EXTBlendMinMax = EXTBlendMinMax { unEXTBlendMinMax :: JSVal }
+
+instance Eq (EXTBlendMinMax) where
+  (EXTBlendMinMax a) == (EXTBlendMinMax b) = js_eq a b
+
+instance PToJSVal EXTBlendMinMax where
+  pToJSVal = unEXTBlendMinMax
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTBlendMinMax where
+  pFromJSVal = EXTBlendMinMax
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTBlendMinMax where
+  toJSVal = return . unEXTBlendMinMax
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTBlendMinMax where
+  fromJSVal = return . fmap EXTBlendMinMax . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EXTBlendMinMax where
+  typeGType _ = gTypeEXTBlendMinMax
+  {-# INLINE typeGType #-}
+noEXTBlendMinMax :: Maybe EXTBlendMinMax
+noEXTBlendMinMax = Nothing
+{-# INLINE noEXTBlendMinMax #-}
+
+foreign import javascript unsafe "window[\"EXTBlendMinMax\"]" gTypeEXTBlendMinMax :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EXTFragDepth".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTFragDepth Mozilla EXTFragDepth documentation>
+newtype EXTFragDepth = EXTFragDepth { unEXTFragDepth :: JSVal }
+
+instance Eq (EXTFragDepth) where
+  (EXTFragDepth a) == (EXTFragDepth b) = js_eq a b
+
+instance PToJSVal EXTFragDepth where
+  pToJSVal = unEXTFragDepth
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTFragDepth where
+  pFromJSVal = EXTFragDepth
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTFragDepth where
+  toJSVal = return . unEXTFragDepth
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTFragDepth where
+  fromJSVal = return . fmap EXTFragDepth . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EXTFragDepth where
+  typeGType _ = gTypeEXTFragDepth
+  {-# INLINE typeGType #-}
+noEXTFragDepth :: Maybe EXTFragDepth
+noEXTFragDepth = Nothing
+{-# INLINE noEXTFragDepth #-}
+
+foreign import javascript unsafe "window[\"EXTFragDepth\"]" gTypeEXTFragDepth :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EXTShaderTextureLOD".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTShaderTextureLOD Mozilla EXTShaderTextureLOD documentation>
+newtype EXTShaderTextureLOD = EXTShaderTextureLOD { unEXTShaderTextureLOD :: JSVal }
+
+instance Eq (EXTShaderTextureLOD) where
+  (EXTShaderTextureLOD a) == (EXTShaderTextureLOD b) = js_eq a b
+
+instance PToJSVal EXTShaderTextureLOD where
+  pToJSVal = unEXTShaderTextureLOD
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTShaderTextureLOD where
+  pFromJSVal = EXTShaderTextureLOD
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTShaderTextureLOD where
+  toJSVal = return . unEXTShaderTextureLOD
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTShaderTextureLOD where
+  fromJSVal = return . fmap EXTShaderTextureLOD . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EXTShaderTextureLOD where
+  typeGType _ = gTypeEXTShaderTextureLOD
+  {-# INLINE typeGType #-}
+noEXTShaderTextureLOD :: Maybe EXTShaderTextureLOD
+noEXTShaderTextureLOD = Nothing
+{-# INLINE noEXTShaderTextureLOD #-}
+
+foreign import javascript unsafe "window[\"EXTShaderTextureLOD\"]" gTypeEXTShaderTextureLOD :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EXTTextureFilterAnisotropic".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTTextureFilterAnisotropic Mozilla EXTTextureFilterAnisotropic documentation>
+newtype EXTTextureFilterAnisotropic = EXTTextureFilterAnisotropic { unEXTTextureFilterAnisotropic :: JSVal }
+
+instance Eq (EXTTextureFilterAnisotropic) where
+  (EXTTextureFilterAnisotropic a) == (EXTTextureFilterAnisotropic b) = js_eq a b
+
+instance PToJSVal EXTTextureFilterAnisotropic where
+  pToJSVal = unEXTTextureFilterAnisotropic
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTTextureFilterAnisotropic where
+  pFromJSVal = EXTTextureFilterAnisotropic
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTTextureFilterAnisotropic where
+  toJSVal = return . unEXTTextureFilterAnisotropic
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTTextureFilterAnisotropic where
+  fromJSVal = return . fmap EXTTextureFilterAnisotropic . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EXTTextureFilterAnisotropic where
+  typeGType _ = gTypeEXTTextureFilterAnisotropic
+  {-# INLINE typeGType #-}
+noEXTTextureFilterAnisotropic :: Maybe EXTTextureFilterAnisotropic
+noEXTTextureFilterAnisotropic = Nothing
+{-# INLINE noEXTTextureFilterAnisotropic #-}
+
+foreign import javascript unsafe "window[\"EXTTextureFilterAnisotropic\"]" gTypeEXTTextureFilterAnisotropic :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EXTsRGB".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EXTsRGB Mozilla EXTsRGB documentation>
+newtype EXTsRGB = EXTsRGB { unEXTsRGB :: JSVal }
+
+instance Eq (EXTsRGB) where
+  (EXTsRGB a) == (EXTsRGB b) = js_eq a b
+
+instance PToJSVal EXTsRGB where
+  pToJSVal = unEXTsRGB
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EXTsRGB where
+  pFromJSVal = EXTsRGB
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EXTsRGB where
+  toJSVal = return . unEXTsRGB
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EXTsRGB where
+  fromJSVal = return . fmap EXTsRGB . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EXTsRGB where
+  typeGType _ = gTypeEXTsRGB
+  {-# INLINE typeGType #-}
+noEXTsRGB :: Maybe EXTsRGB
+noEXTsRGB = Nothing
+{-# INLINE noEXTsRGB #-}
+
+foreign import javascript unsafe "window[\"EXTsRGB\"]" gTypeEXTsRGB :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EcKeyParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EcKeyParams Mozilla EcKeyParams documentation>
+newtype EcKeyParams = EcKeyParams { unEcKeyParams :: JSVal }
+
+instance Eq (EcKeyParams) where
+  (EcKeyParams a) == (EcKeyParams b) = js_eq a b
+
+instance PToJSVal EcKeyParams where
+  pToJSVal = unEcKeyParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EcKeyParams where
+  pFromJSVal = EcKeyParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EcKeyParams where
+  toJSVal = return . unEcKeyParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EcKeyParams where
+  fromJSVal = return . fmap EcKeyParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters EcKeyParams
+instance IsGObject EcKeyParams where
+  typeGType _ = gTypeEcKeyParams
+  {-# INLINE typeGType #-}
+noEcKeyParams :: Maybe EcKeyParams
+noEcKeyParams = Nothing
+{-# INLINE noEcKeyParams #-}
+
+foreign import javascript unsafe "window[\"EcKeyParams\"]" gTypeEcKeyParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EcdhKeyDeriveParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EcdhKeyDeriveParams Mozilla EcdhKeyDeriveParams documentation>
+newtype EcdhKeyDeriveParams = EcdhKeyDeriveParams { unEcdhKeyDeriveParams :: JSVal }
+
+instance Eq (EcdhKeyDeriveParams) where
+  (EcdhKeyDeriveParams a) == (EcdhKeyDeriveParams b) = js_eq a b
+
+instance PToJSVal EcdhKeyDeriveParams where
+  pToJSVal = unEcdhKeyDeriveParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EcdhKeyDeriveParams where
+  pFromJSVal = EcdhKeyDeriveParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EcdhKeyDeriveParams where
+  toJSVal = return . unEcdhKeyDeriveParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EcdhKeyDeriveParams where
+  fromJSVal = return . fmap EcdhKeyDeriveParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters EcdhKeyDeriveParams
+instance IsGObject EcdhKeyDeriveParams where
+  typeGType _ = gTypeEcdhKeyDeriveParams
+  {-# INLINE typeGType #-}
+noEcdhKeyDeriveParams :: Maybe EcdhKeyDeriveParams
+noEcdhKeyDeriveParams = Nothing
+{-# INLINE noEcdhKeyDeriveParams #-}
+
+foreign import javascript unsafe "window[\"EcdhKeyDeriveParams\"]" gTypeEcdhKeyDeriveParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EcdsaParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EcdsaParams Mozilla EcdsaParams documentation>
+newtype EcdsaParams = EcdsaParams { unEcdsaParams :: JSVal }
+
+instance Eq (EcdsaParams) where
+  (EcdsaParams a) == (EcdsaParams b) = js_eq a b
+
+instance PToJSVal EcdsaParams where
+  pToJSVal = unEcdsaParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EcdsaParams where
+  pFromJSVal = EcdsaParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EcdsaParams where
+  toJSVal = return . unEcdsaParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EcdsaParams where
+  fromJSVal = return . fmap EcdsaParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters EcdsaParams
+instance IsGObject EcdsaParams where
+  typeGType _ = gTypeEcdsaParams
+  {-# INLINE typeGType #-}
+noEcdsaParams :: Maybe EcdsaParams
+noEcdsaParams = Nothing
+{-# INLINE noEcdsaParams #-}
+
+foreign import javascript unsafe "window[\"EcdsaParams\"]" gTypeEcdsaParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Element".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Element Mozilla Element documentation>
+newtype Element = Element { unElement :: JSVal }
+
+instance Eq (Element) where
+  (Element a) == (Element b) = js_eq a b
+
+instance PToJSVal Element where
+  pToJSVal = unElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Element where
+  pFromJSVal = Element
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Element where
+  toJSVal = return . unElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Element where
+  fromJSVal = return . fmap Element . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGObject o) => IsElement o
+toElement :: IsElement o => o -> Element
+toElement = Element . coerce
+
+instance IsElement Element
+instance IsNode Element
+instance IsEventTarget Element
+instance IsSlotable Element
+instance IsParentNode Element
+instance IsNonDocumentTypeChildNode Element
+instance IsDocumentAndElementEventHandlers Element
+instance IsChildNode Element
+instance IsAnimatable Element
+instance IsGObject Element where
+  typeGType _ = gTypeElement
+  {-# INLINE typeGType #-}
+noElement :: Maybe Element
+noElement = Nothing
+{-# INLINE noElement #-}
+
+foreign import javascript unsafe "window[\"Element\"]" gTypeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ElementCSSInlineStyle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ElementCSSInlineStyle Mozilla ElementCSSInlineStyle documentation>
+newtype ElementCSSInlineStyle = ElementCSSInlineStyle { unElementCSSInlineStyle :: JSVal }
+
+instance Eq (ElementCSSInlineStyle) where
+  (ElementCSSInlineStyle a) == (ElementCSSInlineStyle b) = js_eq a b
+
+instance PToJSVal ElementCSSInlineStyle where
+  pToJSVal = unElementCSSInlineStyle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ElementCSSInlineStyle where
+  pFromJSVal = ElementCSSInlineStyle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ElementCSSInlineStyle where
+  toJSVal = return . unElementCSSInlineStyle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ElementCSSInlineStyle where
+  fromJSVal = return . fmap ElementCSSInlineStyle . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsElementCSSInlineStyle o
+toElementCSSInlineStyle :: IsElementCSSInlineStyle o => o -> ElementCSSInlineStyle
+toElementCSSInlineStyle = ElementCSSInlineStyle . coerce
+
+instance IsElementCSSInlineStyle ElementCSSInlineStyle
+instance IsGObject ElementCSSInlineStyle where
+  typeGType _ = gTypeElementCSSInlineStyle
+  {-# INLINE typeGType #-}
+noElementCSSInlineStyle :: Maybe ElementCSSInlineStyle
+noElementCSSInlineStyle = Nothing
+{-# INLINE noElementCSSInlineStyle #-}
+
+foreign import javascript unsafe "window[\"ElementCSSInlineStyle\"]" gTypeElementCSSInlineStyle :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ErrorEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEvent Mozilla ErrorEvent documentation>
+newtype ErrorEvent = ErrorEvent { unErrorEvent :: JSVal }
+
+instance Eq (ErrorEvent) where
+  (ErrorEvent a) == (ErrorEvent b) = js_eq a b
+
+instance PToJSVal ErrorEvent where
+  pToJSVal = unErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ErrorEvent where
+  pFromJSVal = ErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ErrorEvent where
+  toJSVal = return . unErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ErrorEvent where
+  fromJSVal = return . fmap ErrorEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent ErrorEvent
+instance IsGObject ErrorEvent where
+  typeGType _ = gTypeErrorEvent
+  {-# INLINE typeGType #-}
+noErrorEvent :: Maybe ErrorEvent
+noErrorEvent = Nothing
+{-# INLINE noErrorEvent #-}
+
+foreign import javascript unsafe "window[\"ErrorEvent\"]" gTypeErrorEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ErrorEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ErrorEventInit Mozilla ErrorEventInit documentation>
+newtype ErrorEventInit = ErrorEventInit { unErrorEventInit :: JSVal }
+
+instance Eq (ErrorEventInit) where
+  (ErrorEventInit a) == (ErrorEventInit b) = js_eq a b
+
+instance PToJSVal ErrorEventInit where
+  pToJSVal = unErrorEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ErrorEventInit where
+  pFromJSVal = ErrorEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ErrorEventInit where
+  toJSVal = return . unErrorEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ErrorEventInit where
+  fromJSVal = return . fmap ErrorEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit ErrorEventInit
+instance IsGObject ErrorEventInit where
+  typeGType _ = gTypeErrorEventInit
+  {-# INLINE typeGType #-}
+noErrorEventInit :: Maybe ErrorEventInit
+noErrorEventInit = Nothing
+{-# INLINE noErrorEventInit #-}
+
+foreign import javascript unsafe "window[\"ErrorEventInit\"]" gTypeErrorEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Event".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Event Mozilla Event documentation>
+newtype Event = Event { unEvent :: JSVal }
+
+instance Eq (Event) where
+  (Event a) == (Event b) = js_eq a b
+
+instance PToJSVal Event where
+  pToJSVal = unEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Event where
+  pFromJSVal = Event
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Event where
+  toJSVal = return . unEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Event where
+  fromJSVal = return . fmap Event . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsEvent o
+toEvent :: IsEvent o => o -> Event
+toEvent = Event . coerce
+
+instance IsEvent Event
+instance IsGObject Event where
+  typeGType _ = gTypeEvent
+  {-# INLINE typeGType #-}
+noEvent :: Maybe Event
+noEvent = Nothing
+{-# INLINE noEvent #-}
+
+foreign import javascript unsafe "window[\"Event\"]" gTypeEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventInit Mozilla EventInit documentation>
+newtype EventInit = EventInit { unEventInit :: JSVal }
+
+instance Eq (EventInit) where
+  (EventInit a) == (EventInit b) = js_eq a b
+
+instance PToJSVal EventInit where
+  pToJSVal = unEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventInit where
+  pFromJSVal = EventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventInit where
+  toJSVal = return . unEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventInit where
+  fromJSVal = return . fmap EventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsEventInit o
+toEventInit :: IsEventInit o => o -> EventInit
+toEventInit = EventInit . coerce
+
+instance IsEventInit EventInit
+instance IsGObject EventInit where
+  typeGType _ = gTypeEventInit
+  {-# INLINE typeGType #-}
+noEventInit :: Maybe EventInit
+noEventInit = Nothing
+{-# INLINE noEventInit #-}
+
+foreign import javascript unsafe "window[\"EventInit\"]" gTypeEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventListener".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventListener Mozilla EventListener documentation>
+newtype EventListener = EventListener { unEventListener :: JSVal }
+
+instance Eq (EventListener) where
+  (EventListener a) == (EventListener b) = js_eq a b
+
+instance PToJSVal EventListener where
+  pToJSVal = unEventListener
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventListener where
+  pFromJSVal = EventListener
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventListener where
+  toJSVal = return . unEventListener
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventListener where
+  fromJSVal = return . fmap EventListener . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EventListener where
+  typeGType _ = gTypeEventListener
+  {-# INLINE typeGType #-}
+noEventListener :: Maybe EventListener
+noEventListener = Nothing
+{-# INLINE noEventListener #-}
+
+foreign import javascript unsafe "window[\"EventListener\"]" gTypeEventListener :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventListenerOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventListenerOptions Mozilla EventListenerOptions documentation>
+newtype EventListenerOptions = EventListenerOptions { unEventListenerOptions :: JSVal }
+
+instance Eq (EventListenerOptions) where
+  (EventListenerOptions a) == (EventListenerOptions b) = js_eq a b
+
+instance PToJSVal EventListenerOptions where
+  pToJSVal = unEventListenerOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventListenerOptions where
+  pFromJSVal = EventListenerOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventListenerOptions where
+  toJSVal = return . unEventListenerOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventListenerOptions where
+  fromJSVal = return . fmap EventListenerOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsEventListenerOptions o
+toEventListenerOptions :: IsEventListenerOptions o => o -> EventListenerOptions
+toEventListenerOptions = EventListenerOptions . coerce
+
+instance IsEventListenerOptions EventListenerOptions
+instance IsGObject EventListenerOptions where
+  typeGType _ = gTypeEventListenerOptions
+  {-# INLINE typeGType #-}
+noEventListenerOptions :: Maybe EventListenerOptions
+noEventListenerOptions = Nothing
+{-# INLINE noEventListenerOptions #-}
+
+foreign import javascript unsafe "window[\"EventListenerOptions\"]" gTypeEventListenerOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventModifierInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventModifierInit Mozilla EventModifierInit documentation>
+newtype EventModifierInit = EventModifierInit { unEventModifierInit :: JSVal }
+
+instance Eq (EventModifierInit) where
+  (EventModifierInit a) == (EventModifierInit b) = js_eq a b
+
+instance PToJSVal EventModifierInit where
+  pToJSVal = unEventModifierInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventModifierInit where
+  pFromJSVal = EventModifierInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventModifierInit where
+  toJSVal = return . unEventModifierInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventModifierInit where
+  fromJSVal = return . fmap EventModifierInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsUIEventInit o, IsEventInit o, IsGObject o) => IsEventModifierInit o
+toEventModifierInit :: IsEventModifierInit o => o -> EventModifierInit
+toEventModifierInit = EventModifierInit . coerce
+
+instance IsEventModifierInit EventModifierInit
+instance IsUIEventInit EventModifierInit
+instance IsEventInit EventModifierInit
+instance IsGObject EventModifierInit where
+  typeGType _ = gTypeEventModifierInit
+  {-# INLINE typeGType #-}
+noEventModifierInit :: Maybe EventModifierInit
+noEventModifierInit = Nothing
+{-# INLINE noEventModifierInit #-}
+
+foreign import javascript unsafe "window[\"EventModifierInit\"]" gTypeEventModifierInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventSource".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventSource Mozilla EventSource documentation>
+newtype EventSource = EventSource { unEventSource :: JSVal }
+
+instance Eq (EventSource) where
+  (EventSource a) == (EventSource b) = js_eq a b
+
+instance PToJSVal EventSource where
+  pToJSVal = unEventSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventSource where
+  pFromJSVal = EventSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventSource where
+  toJSVal = return . unEventSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventSource where
+  fromJSVal = return . fmap EventSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget EventSource
+instance IsGObject EventSource where
+  typeGType _ = gTypeEventSource
+  {-# INLINE typeGType #-}
+noEventSource :: Maybe EventSource
+noEventSource = Nothing
+{-# INLINE noEventSource #-}
+
+foreign import javascript unsafe "window[\"EventSource\"]" gTypeEventSource :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventSourceInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventSourceInit Mozilla EventSourceInit documentation>
+newtype EventSourceInit = EventSourceInit { unEventSourceInit :: JSVal }
+
+instance Eq (EventSourceInit) where
+  (EventSourceInit a) == (EventSourceInit b) = js_eq a b
+
+instance PToJSVal EventSourceInit where
+  pToJSVal = unEventSourceInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventSourceInit where
+  pFromJSVal = EventSourceInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventSourceInit where
+  toJSVal = return . unEventSourceInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventSourceInit where
+  fromJSVal = return . fmap EventSourceInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject EventSourceInit where
+  typeGType _ = gTypeEventSourceInit
+  {-# INLINE typeGType #-}
+noEventSourceInit :: Maybe EventSourceInit
+noEventSourceInit = Nothing
+{-# INLINE noEventSourceInit #-}
+
+foreign import javascript unsafe "window[\"EventSourceInit\"]" gTypeEventSourceInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.EventTarget".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/EventTarget Mozilla EventTarget documentation>
+newtype EventTarget = EventTarget { unEventTarget :: JSVal }
+
+instance Eq (EventTarget) where
+  (EventTarget a) == (EventTarget b) = js_eq a b
+
+instance PToJSVal EventTarget where
+  pToJSVal = unEventTarget
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal EventTarget where
+  pFromJSVal = EventTarget
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal EventTarget where
+  toJSVal = return . unEventTarget
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal EventTarget where
+  fromJSVal = return . fmap EventTarget . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsEventTarget o
+toEventTarget :: IsEventTarget o => o -> EventTarget
+toEventTarget = EventTarget . coerce
+
+instance IsEventTarget EventTarget
+instance IsGObject EventTarget where
+  typeGType _ = gTypeEventTarget
+  {-# INLINE typeGType #-}
+noEventTarget :: Maybe EventTarget
+noEventTarget = Nothing
+{-# INLINE noEventTarget #-}
+
+foreign import javascript unsafe "window[\"EventTarget\"]" gTypeEventTarget :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.File".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Blob"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/File Mozilla File documentation>
+newtype File = File { unFile :: JSVal }
+
+instance Eq (File) where
+  (File a) == (File b) = js_eq a b
+
+instance PToJSVal File where
+  pToJSVal = unFile
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal File where
+  pFromJSVal = File
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal File where
+  toJSVal = return . unFile
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal File where
+  fromJSVal = return . fmap File . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsBlob File
+instance IsGObject File where
+  typeGType _ = gTypeFile
+  {-# INLINE typeGType #-}
+noFile :: Maybe File
+noFile = Nothing
+{-# INLINE noFile #-}
+
+foreign import javascript unsafe "window[\"File\"]" gTypeFile :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FileError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileError Mozilla FileError documentation>
+newtype FileError = FileError { unFileError :: JSVal }
+
+instance Eq (FileError) where
+  (FileError a) == (FileError b) = js_eq a b
+
+instance PToJSVal FileError where
+  pToJSVal = unFileError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileError where
+  pFromJSVal = FileError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileError where
+  toJSVal = return . unFileError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileError where
+  fromJSVal = return . fmap FileError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FileError where
+  typeGType _ = gTypeFileError
+  {-# INLINE typeGType #-}
+noFileError :: Maybe FileError
+noFileError = Nothing
+{-# INLINE noFileError #-}
+
+foreign import javascript unsafe "window[\"FileError\"]" gTypeFileError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FileException".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileException Mozilla FileException documentation>
+newtype FileException = FileException { unFileException :: JSVal }
+
+instance Eq (FileException) where
+  (FileException a) == (FileException b) = js_eq a b
+
+instance PToJSVal FileException where
+  pToJSVal = unFileException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileException where
+  pFromJSVal = FileException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileException where
+  toJSVal = return . unFileException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileException where
+  fromJSVal = return . fmap FileException . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FileException where
+  typeGType _ = gTypeFileException
+  {-# INLINE typeGType #-}
+noFileException :: Maybe FileException
+noFileException = Nothing
+{-# INLINE noFileException #-}
+
+foreign import javascript unsafe "window[\"FileException\"]" gTypeFileException :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FileList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileList Mozilla FileList documentation>
+newtype FileList = FileList { unFileList :: JSVal }
+
+instance Eq (FileList) where
+  (FileList a) == (FileList b) = js_eq a b
+
+instance PToJSVal FileList where
+  pToJSVal = unFileList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileList where
+  pFromJSVal = FileList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileList where
+  toJSVal = return . unFileList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileList where
+  fromJSVal = return . fmap FileList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FileList where
+  typeGType _ = gTypeFileList
+  {-# INLINE typeGType #-}
+noFileList :: Maybe FileList
+noFileList = Nothing
+{-# INLINE noFileList #-}
+
+foreign import javascript unsafe "window[\"FileList\"]" gTypeFileList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FilePropertyBag".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.BlobPropertyBag"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FilePropertyBag Mozilla FilePropertyBag documentation>
+newtype FilePropertyBag = FilePropertyBag { unFilePropertyBag :: JSVal }
+
+instance Eq (FilePropertyBag) where
+  (FilePropertyBag a) == (FilePropertyBag b) = js_eq a b
+
+instance PToJSVal FilePropertyBag where
+  pToJSVal = unFilePropertyBag
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FilePropertyBag where
+  pFromJSVal = FilePropertyBag
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FilePropertyBag where
+  toJSVal = return . unFilePropertyBag
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FilePropertyBag where
+  fromJSVal = return . fmap FilePropertyBag . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsBlobPropertyBag FilePropertyBag
+instance IsGObject FilePropertyBag where
+  typeGType _ = gTypeFilePropertyBag
+  {-# INLINE typeGType #-}
+noFilePropertyBag :: Maybe FilePropertyBag
+noFilePropertyBag = Nothing
+{-# INLINE noFilePropertyBag #-}
+
+foreign import javascript unsafe "window[\"FilePropertyBag\"]" gTypeFilePropertyBag :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FileReader".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReader Mozilla FileReader documentation>
+newtype FileReader = FileReader { unFileReader :: JSVal }
+
+instance Eq (FileReader) where
+  (FileReader a) == (FileReader b) = js_eq a b
+
+instance PToJSVal FileReader where
+  pToJSVal = unFileReader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReader where
+  pFromJSVal = FileReader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReader where
+  toJSVal = return . unFileReader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReader where
+  fromJSVal = return . fmap FileReader . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget FileReader
+instance IsGObject FileReader where
+  typeGType _ = gTypeFileReader
+  {-# INLINE typeGType #-}
+noFileReader :: Maybe FileReader
+noFileReader = Nothing
+{-# INLINE noFileReader #-}
+
+foreign import javascript unsafe "window[\"FileReader\"]" gTypeFileReader :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FileReaderSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FileReaderSync Mozilla FileReaderSync documentation>
+newtype FileReaderSync = FileReaderSync { unFileReaderSync :: JSVal }
+
+instance Eq (FileReaderSync) where
+  (FileReaderSync a) == (FileReaderSync b) = js_eq a b
+
+instance PToJSVal FileReaderSync where
+  pToJSVal = unFileReaderSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FileReaderSync where
+  pFromJSVal = FileReaderSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FileReaderSync where
+  toJSVal = return . unFileReaderSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FileReaderSync where
+  fromJSVal = return . fmap FileReaderSync . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FileReaderSync where
+  typeGType _ = gTypeFileReaderSync
+  {-# INLINE typeGType #-}
+noFileReaderSync :: Maybe FileReaderSync
+noFileReaderSync = Nothing
+{-# INLINE noFileReaderSync #-}
+
+foreign import javascript unsafe "window[\"FileReaderSync\"]" gTypeFileReaderSync :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FocusEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FocusEvent Mozilla FocusEvent documentation>
+newtype FocusEvent = FocusEvent { unFocusEvent :: JSVal }
+
+instance Eq (FocusEvent) where
+  (FocusEvent a) == (FocusEvent b) = js_eq a b
+
+instance PToJSVal FocusEvent where
+  pToJSVal = unFocusEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FocusEvent where
+  pFromJSVal = FocusEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FocusEvent where
+  toJSVal = return . unFocusEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FocusEvent where
+  fromJSVal = return . fmap FocusEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent FocusEvent
+instance IsEvent FocusEvent
+instance IsGObject FocusEvent where
+  typeGType _ = gTypeFocusEvent
+  {-# INLINE typeGType #-}
+noFocusEvent :: Maybe FocusEvent
+noFocusEvent = Nothing
+{-# INLINE noFocusEvent #-}
+
+foreign import javascript unsafe "window[\"FocusEvent\"]" gTypeFocusEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FocusEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FocusEventInit Mozilla FocusEventInit documentation>
+newtype FocusEventInit = FocusEventInit { unFocusEventInit :: JSVal }
+
+instance Eq (FocusEventInit) where
+  (FocusEventInit a) == (FocusEventInit b) = js_eq a b
+
+instance PToJSVal FocusEventInit where
+  pToJSVal = unFocusEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FocusEventInit where
+  pFromJSVal = FocusEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FocusEventInit where
+  toJSVal = return . unFocusEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FocusEventInit where
+  fromJSVal = return . fmap FocusEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEventInit FocusEventInit
+instance IsEventInit FocusEventInit
+instance IsGObject FocusEventInit where
+  typeGType _ = gTypeFocusEventInit
+  {-# INLINE typeGType #-}
+noFocusEventInit :: Maybe FocusEventInit
+noFocusEventInit = Nothing
+{-# INLINE noFocusEventInit #-}
+
+foreign import javascript unsafe "window[\"FocusEventInit\"]" gTypeFocusEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FontFace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontFace Mozilla FontFace documentation>
+newtype FontFace = FontFace { unFontFace :: JSVal }
+
+instance Eq (FontFace) where
+  (FontFace a) == (FontFace b) = js_eq a b
+
+instance PToJSVal FontFace where
+  pToJSVal = unFontFace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontFace where
+  pFromJSVal = FontFace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontFace where
+  toJSVal = return . unFontFace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontFace where
+  fromJSVal = return . fmap FontFace . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FontFace where
+  typeGType _ = gTypeFontFace
+  {-# INLINE typeGType #-}
+noFontFace :: Maybe FontFace
+noFontFace = Nothing
+{-# INLINE noFontFace #-}
+
+foreign import javascript unsafe "window[\"FontFace\"]" gTypeFontFace :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FontFaceDescriptors".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceDescriptors Mozilla FontFaceDescriptors documentation>
+newtype FontFaceDescriptors = FontFaceDescriptors { unFontFaceDescriptors :: JSVal }
+
+instance Eq (FontFaceDescriptors) where
+  (FontFaceDescriptors a) == (FontFaceDescriptors b) = js_eq a b
+
+instance PToJSVal FontFaceDescriptors where
+  pToJSVal = unFontFaceDescriptors
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontFaceDescriptors where
+  pFromJSVal = FontFaceDescriptors
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontFaceDescriptors where
+  toJSVal = return . unFontFaceDescriptors
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontFaceDescriptors where
+  fromJSVal = return . fmap FontFaceDescriptors . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FontFaceDescriptors where
+  typeGType _ = gTypeFontFaceDescriptors
+  {-# INLINE typeGType #-}
+noFontFaceDescriptors :: Maybe FontFaceDescriptors
+noFontFaceDescriptors = Nothing
+{-# INLINE noFontFaceDescriptors #-}
+
+foreign import javascript unsafe "window[\"FontFaceDescriptors\"]" gTypeFontFaceDescriptors :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FontFaceSet".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FontFaceSet Mozilla FontFaceSet documentation>
+newtype FontFaceSet = FontFaceSet { unFontFaceSet :: JSVal }
+
+instance Eq (FontFaceSet) where
+  (FontFaceSet a) == (FontFaceSet b) = js_eq a b
+
+instance PToJSVal FontFaceSet where
+  pToJSVal = unFontFaceSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FontFaceSet where
+  pFromJSVal = FontFaceSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FontFaceSet where
+  toJSVal = return . unFontFaceSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FontFaceSet where
+  fromJSVal = return . fmap FontFaceSet . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget FontFaceSet
+instance IsGObject FontFaceSet where
+  typeGType _ = gTypeFontFaceSet
+  {-# INLINE typeGType #-}
+noFontFaceSet :: Maybe FontFaceSet
+noFontFaceSet = Nothing
+{-# INLINE noFontFaceSet #-}
+
+foreign import javascript unsafe "window[\"FontFaceSet\"]" gTypeFontFaceSet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.FormData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/FormData Mozilla FormData documentation>
+newtype FormData = FormData { unFormData :: JSVal }
+
+instance Eq (FormData) where
+  (FormData a) == (FormData b) = js_eq a b
+
+instance PToJSVal FormData where
+  pToJSVal = unFormData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal FormData where
+  pFromJSVal = FormData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal FormData where
+  toJSVal = return . unFormData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal FormData where
+  fromJSVal = return . fmap FormData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject FormData where
+  typeGType _ = gTypeFormData
+  {-# INLINE typeGType #-}
+noFormData :: Maybe FormData
+noFormData = Nothing
+{-# INLINE noFormData #-}
+
+foreign import javascript unsafe "window[\"FormData\"]" gTypeFormData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GainNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GainNode Mozilla GainNode documentation>
+newtype GainNode = GainNode { unGainNode :: JSVal }
+
+instance Eq (GainNode) where
+  (GainNode a) == (GainNode b) = js_eq a b
+
+instance PToJSVal GainNode where
+  pToJSVal = unGainNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GainNode where
+  pFromJSVal = GainNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GainNode where
+  toJSVal = return . unGainNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GainNode where
+  fromJSVal = return . fmap GainNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode GainNode
+instance IsEventTarget GainNode
+instance IsGObject GainNode where
+  typeGType _ = gTypeGainNode
+  {-# INLINE typeGType #-}
+noGainNode :: Maybe GainNode
+noGainNode = Nothing
+{-# INLINE noGainNode #-}
+
+foreign import javascript unsafe "window[\"GainNode\"]" gTypeGainNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Gamepad".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Gamepad Mozilla Gamepad documentation>
+newtype Gamepad = Gamepad { unGamepad :: JSVal }
+
+instance Eq (Gamepad) where
+  (Gamepad a) == (Gamepad b) = js_eq a b
+
+instance PToJSVal Gamepad where
+  pToJSVal = unGamepad
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Gamepad where
+  pFromJSVal = Gamepad
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Gamepad where
+  toJSVal = return . unGamepad
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Gamepad where
+  fromJSVal = return . fmap Gamepad . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Gamepad where
+  typeGType _ = gTypeGamepad
+  {-# INLINE typeGType #-}
+noGamepad :: Maybe Gamepad
+noGamepad = Nothing
+{-# INLINE noGamepad #-}
+
+foreign import javascript unsafe "window[\"Gamepad\"]" gTypeGamepad :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GamepadButton".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadButton Mozilla GamepadButton documentation>
+newtype GamepadButton = GamepadButton { unGamepadButton :: JSVal }
+
+instance Eq (GamepadButton) where
+  (GamepadButton a) == (GamepadButton b) = js_eq a b
+
+instance PToJSVal GamepadButton where
+  pToJSVal = unGamepadButton
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadButton where
+  pFromJSVal = GamepadButton
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadButton where
+  toJSVal = return . unGamepadButton
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadButton where
+  fromJSVal = return . fmap GamepadButton . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject GamepadButton where
+  typeGType _ = gTypeGamepadButton
+  {-# INLINE typeGType #-}
+noGamepadButton :: Maybe GamepadButton
+noGamepadButton = Nothing
+{-# INLINE noGamepadButton #-}
+
+foreign import javascript unsafe "window[\"GamepadButton\"]" gTypeGamepadButton :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GamepadEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEvent Mozilla GamepadEvent documentation>
+newtype GamepadEvent = GamepadEvent { unGamepadEvent :: JSVal }
+
+instance Eq (GamepadEvent) where
+  (GamepadEvent a) == (GamepadEvent b) = js_eq a b
+
+instance PToJSVal GamepadEvent where
+  pToJSVal = unGamepadEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadEvent where
+  pFromJSVal = GamepadEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadEvent where
+  toJSVal = return . unGamepadEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadEvent where
+  fromJSVal = return . fmap GamepadEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent GamepadEvent
+instance IsGObject GamepadEvent where
+  typeGType _ = gTypeGamepadEvent
+  {-# INLINE typeGType #-}
+noGamepadEvent :: Maybe GamepadEvent
+noGamepadEvent = Nothing
+{-# INLINE noGamepadEvent #-}
+
+foreign import javascript unsafe "window[\"GamepadEvent\"]" gTypeGamepadEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GamepadEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GamepadEventInit Mozilla GamepadEventInit documentation>
+newtype GamepadEventInit = GamepadEventInit { unGamepadEventInit :: JSVal }
+
+instance Eq (GamepadEventInit) where
+  (GamepadEventInit a) == (GamepadEventInit b) = js_eq a b
+
+instance PToJSVal GamepadEventInit where
+  pToJSVal = unGamepadEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GamepadEventInit where
+  pFromJSVal = GamepadEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GamepadEventInit where
+  toJSVal = return . unGamepadEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GamepadEventInit where
+  fromJSVal = return . fmap GamepadEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit GamepadEventInit
+instance IsGObject GamepadEventInit where
+  typeGType _ = gTypeGamepadEventInit
+  {-# INLINE typeGType #-}
+noGamepadEventInit :: Maybe GamepadEventInit
+noGamepadEventInit = Nothing
+{-# INLINE noGamepadEventInit #-}
+
+foreign import javascript unsafe "window[\"GamepadEventInit\"]" gTypeGamepadEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Geolocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geolocation Mozilla Geolocation documentation>
+newtype Geolocation = Geolocation { unGeolocation :: JSVal }
+
+instance Eq (Geolocation) where
+  (Geolocation a) == (Geolocation b) = js_eq a b
+
+instance PToJSVal Geolocation where
+  pToJSVal = unGeolocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geolocation where
+  pFromJSVal = Geolocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geolocation where
+  toJSVal = return . unGeolocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geolocation where
+  fromJSVal = return . fmap Geolocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Geolocation where
+  typeGType _ = gTypeGeolocation
+  {-# INLINE typeGType #-}
+noGeolocation :: Maybe Geolocation
+noGeolocation = Nothing
+{-# INLINE noGeolocation #-}
+
+foreign import javascript unsafe "window[\"Geolocation\"]" gTypeGeolocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Geoposition".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Geoposition Mozilla Geoposition documentation>
+newtype Geoposition = Geoposition { unGeoposition :: JSVal }
+
+instance Eq (Geoposition) where
+  (Geoposition a) == (Geoposition b) = js_eq a b
+
+instance PToJSVal Geoposition where
+  pToJSVal = unGeoposition
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Geoposition where
+  pFromJSVal = Geoposition
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Geoposition where
+  toJSVal = return . unGeoposition
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Geoposition where
+  fromJSVal = return . fmap Geoposition . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Geoposition where
+  typeGType _ = gTypeGeoposition
+  {-# INLINE typeGType #-}
+noGeoposition :: Maybe Geoposition
+noGeoposition = Nothing
+{-# INLINE noGeoposition #-}
+
+foreign import javascript unsafe "window[\"Geoposition\"]" gTypeGeoposition :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GetRootNodeOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GetRootNodeOptions Mozilla GetRootNodeOptions documentation>
+newtype GetRootNodeOptions = GetRootNodeOptions { unGetRootNodeOptions :: JSVal }
+
+instance Eq (GetRootNodeOptions) where
+  (GetRootNodeOptions a) == (GetRootNodeOptions b) = js_eq a b
+
+instance PToJSVal GetRootNodeOptions where
+  pToJSVal = unGetRootNodeOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GetRootNodeOptions where
+  pFromJSVal = GetRootNodeOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GetRootNodeOptions where
+  toJSVal = return . unGetRootNodeOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GetRootNodeOptions where
+  fromJSVal = return . fmap GetRootNodeOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject GetRootNodeOptions where
+  typeGType _ = gTypeGetRootNodeOptions
+  {-# INLINE typeGType #-}
+noGetRootNodeOptions :: Maybe GetRootNodeOptions
+noGetRootNodeOptions = Nothing
+{-# INLINE noGetRootNodeOptions #-}
+
+foreign import javascript unsafe "window[\"GetRootNodeOptions\"]" gTypeGetRootNodeOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GlobalCrypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GlobalCrypto Mozilla GlobalCrypto documentation>
+newtype GlobalCrypto = GlobalCrypto { unGlobalCrypto :: JSVal }
+
+instance Eq (GlobalCrypto) where
+  (GlobalCrypto a) == (GlobalCrypto b) = js_eq a b
+
+instance PToJSVal GlobalCrypto where
+  pToJSVal = unGlobalCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GlobalCrypto where
+  pFromJSVal = GlobalCrypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GlobalCrypto where
+  toJSVal = return . unGlobalCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GlobalCrypto where
+  fromJSVal = return . fmap GlobalCrypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsGlobalCrypto o
+toGlobalCrypto :: IsGlobalCrypto o => o -> GlobalCrypto
+toGlobalCrypto = GlobalCrypto . coerce
+
+instance IsGlobalCrypto GlobalCrypto
+instance IsGObject GlobalCrypto where
+  typeGType _ = gTypeGlobalCrypto
+  {-# INLINE typeGType #-}
+noGlobalCrypto :: Maybe GlobalCrypto
+noGlobalCrypto = Nothing
+{-# INLINE noGlobalCrypto #-}
+
+foreign import javascript unsafe "window[\"GlobalCrypto\"]" gTypeGlobalCrypto :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GlobalEventHandlers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers Mozilla GlobalEventHandlers documentation>
+newtype GlobalEventHandlers = GlobalEventHandlers { unGlobalEventHandlers :: JSVal }
+
+instance Eq (GlobalEventHandlers) where
+  (GlobalEventHandlers a) == (GlobalEventHandlers b) = js_eq a b
+
+instance PToJSVal GlobalEventHandlers where
+  pToJSVal = unGlobalEventHandlers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GlobalEventHandlers where
+  pFromJSVal = GlobalEventHandlers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GlobalEventHandlers where
+  toJSVal = return . unGlobalEventHandlers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GlobalEventHandlers where
+  fromJSVal = return . fmap GlobalEventHandlers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsGlobalEventHandlers o
+toGlobalEventHandlers :: IsGlobalEventHandlers o => o -> GlobalEventHandlers
+toGlobalEventHandlers = GlobalEventHandlers . coerce
+
+instance IsGlobalEventHandlers GlobalEventHandlers
+instance IsGObject GlobalEventHandlers where
+  typeGType _ = gTypeGlobalEventHandlers
+  {-# INLINE typeGType #-}
+noGlobalEventHandlers :: Maybe GlobalEventHandlers
+noGlobalEventHandlers = Nothing
+{-# INLINE noGlobalEventHandlers #-}
+
+foreign import javascript unsafe "window[\"GlobalEventHandlers\"]" gTypeGlobalEventHandlers :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.GlobalPerformance".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/GlobalPerformance Mozilla GlobalPerformance documentation>
+newtype GlobalPerformance = GlobalPerformance { unGlobalPerformance :: JSVal }
+
+instance Eq (GlobalPerformance) where
+  (GlobalPerformance a) == (GlobalPerformance b) = js_eq a b
+
+instance PToJSVal GlobalPerformance where
+  pToJSVal = unGlobalPerformance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal GlobalPerformance where
+  pFromJSVal = GlobalPerformance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal GlobalPerformance where
+  toJSVal = return . unGlobalPerformance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal GlobalPerformance where
+  fromJSVal = return . fmap GlobalPerformance . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsGlobalPerformance o
+toGlobalPerformance :: IsGlobalPerformance o => o -> GlobalPerformance
+toGlobalPerformance = GlobalPerformance . coerce
+
+instance IsGlobalPerformance GlobalPerformance
+instance IsGObject GlobalPerformance where
+  typeGType _ = gTypeGlobalPerformance
+  {-# INLINE typeGType #-}
+noGlobalPerformance :: Maybe GlobalPerformance
+noGlobalPerformance = Nothing
+{-# INLINE noGlobalPerformance #-}
+
+foreign import javascript unsafe "window[\"GlobalPerformance\"]" gTypeGlobalPerformance :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAllCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAllCollection Mozilla HTMLAllCollection documentation>
+newtype HTMLAllCollection = HTMLAllCollection { unHTMLAllCollection :: JSVal }
+
+instance Eq (HTMLAllCollection) where
+  (HTMLAllCollection a) == (HTMLAllCollection b) = js_eq a b
+
+instance PToJSVal HTMLAllCollection where
+  pToJSVal = unHTMLAllCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAllCollection where
+  pFromJSVal = HTMLAllCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAllCollection where
+  toJSVal = return . unHTMLAllCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAllCollection where
+  fromJSVal = return . fmap HTMLAllCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject HTMLAllCollection where
+  typeGType _ = gTypeHTMLAllCollection
+  {-# INLINE typeGType #-}
+noHTMLAllCollection :: Maybe HTMLAllCollection
+noHTMLAllCollection = Nothing
+{-# INLINE noHTMLAllCollection #-}
+
+foreign import javascript unsafe "window[\"HTMLAllCollection\"]" gTypeHTMLAllCollection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAnchorElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.HTMLHyperlinkElementUtils"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAnchorElement Mozilla HTMLAnchorElement documentation>
+newtype HTMLAnchorElement = HTMLAnchorElement { unHTMLAnchorElement :: JSVal }
+
+instance Eq (HTMLAnchorElement) where
+  (HTMLAnchorElement a) == (HTMLAnchorElement b) = js_eq a b
+
+instance PToJSVal HTMLAnchorElement where
+  pToJSVal = unHTMLAnchorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAnchorElement where
+  pFromJSVal = HTMLAnchorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAnchorElement where
+  toJSVal = return . unHTMLAnchorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAnchorElement where
+  fromJSVal = return . fmap HTMLAnchorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLAnchorElement
+instance IsElement HTMLAnchorElement
+instance IsNode HTMLAnchorElement
+instance IsEventTarget HTMLAnchorElement
+instance IsSlotable HTMLAnchorElement
+instance IsParentNode HTMLAnchorElement
+instance IsNonDocumentTypeChildNode HTMLAnchorElement
+instance IsDocumentAndElementEventHandlers HTMLAnchorElement
+instance IsChildNode HTMLAnchorElement
+instance IsAnimatable HTMLAnchorElement
+instance IsGlobalEventHandlers HTMLAnchorElement
+instance IsElementCSSInlineStyle HTMLAnchorElement
+instance IsHTMLHyperlinkElementUtils HTMLAnchorElement
+instance IsGObject HTMLAnchorElement where
+  typeGType _ = gTypeHTMLAnchorElement
+  {-# INLINE typeGType #-}
+noHTMLAnchorElement :: Maybe HTMLAnchorElement
+noHTMLAnchorElement = Nothing
+{-# INLINE noHTMLAnchorElement #-}
+
+foreign import javascript unsafe "window[\"HTMLAnchorElement\"]" gTypeHTMLAnchorElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAppletElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAppletElement Mozilla HTMLAppletElement documentation>
+newtype HTMLAppletElement = HTMLAppletElement { unHTMLAppletElement :: JSVal }
+
+instance Eq (HTMLAppletElement) where
+  (HTMLAppletElement a) == (HTMLAppletElement b) = js_eq a b
+
+instance PToJSVal HTMLAppletElement where
+  pToJSVal = unHTMLAppletElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAppletElement where
+  pFromJSVal = HTMLAppletElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAppletElement where
+  toJSVal = return . unHTMLAppletElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAppletElement where
+  fromJSVal = return . fmap HTMLAppletElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLAppletElement
+instance IsElement HTMLAppletElement
+instance IsNode HTMLAppletElement
+instance IsEventTarget HTMLAppletElement
+instance IsSlotable HTMLAppletElement
+instance IsParentNode HTMLAppletElement
+instance IsNonDocumentTypeChildNode HTMLAppletElement
+instance IsDocumentAndElementEventHandlers HTMLAppletElement
+instance IsChildNode HTMLAppletElement
+instance IsAnimatable HTMLAppletElement
+instance IsGlobalEventHandlers HTMLAppletElement
+instance IsElementCSSInlineStyle HTMLAppletElement
+instance IsGObject HTMLAppletElement where
+  typeGType _ = gTypeHTMLAppletElement
+  {-# INLINE typeGType #-}
+noHTMLAppletElement :: Maybe HTMLAppletElement
+noHTMLAppletElement = Nothing
+{-# INLINE noHTMLAppletElement #-}
+
+foreign import javascript unsafe "window[\"HTMLAppletElement\"]" gTypeHTMLAppletElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAreaElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.HTMLHyperlinkElementUtils"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAreaElement Mozilla HTMLAreaElement documentation>
+newtype HTMLAreaElement = HTMLAreaElement { unHTMLAreaElement :: JSVal }
+
+instance Eq (HTMLAreaElement) where
+  (HTMLAreaElement a) == (HTMLAreaElement b) = js_eq a b
+
+instance PToJSVal HTMLAreaElement where
+  pToJSVal = unHTMLAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAreaElement where
+  pFromJSVal = HTMLAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAreaElement where
+  toJSVal = return . unHTMLAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAreaElement where
+  fromJSVal = return . fmap HTMLAreaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLAreaElement
+instance IsElement HTMLAreaElement
+instance IsNode HTMLAreaElement
+instance IsEventTarget HTMLAreaElement
+instance IsSlotable HTMLAreaElement
+instance IsParentNode HTMLAreaElement
+instance IsNonDocumentTypeChildNode HTMLAreaElement
+instance IsDocumentAndElementEventHandlers HTMLAreaElement
+instance IsChildNode HTMLAreaElement
+instance IsAnimatable HTMLAreaElement
+instance IsGlobalEventHandlers HTMLAreaElement
+instance IsElementCSSInlineStyle HTMLAreaElement
+instance IsHTMLHyperlinkElementUtils HTMLAreaElement
+instance IsGObject HTMLAreaElement where
+  typeGType _ = gTypeHTMLAreaElement
+  {-# INLINE typeGType #-}
+noHTMLAreaElement :: Maybe HTMLAreaElement
+noHTMLAreaElement = Nothing
+{-# INLINE noHTMLAreaElement #-}
+
+foreign import javascript unsafe "window[\"HTMLAreaElement\"]" gTypeHTMLAreaElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAttachmentElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAttachmentElement Mozilla HTMLAttachmentElement documentation>
+newtype HTMLAttachmentElement = HTMLAttachmentElement { unHTMLAttachmentElement :: JSVal }
+
+instance Eq (HTMLAttachmentElement) where
+  (HTMLAttachmentElement a) == (HTMLAttachmentElement b) = js_eq a b
+
+instance PToJSVal HTMLAttachmentElement where
+  pToJSVal = unHTMLAttachmentElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAttachmentElement where
+  pFromJSVal = HTMLAttachmentElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAttachmentElement where
+  toJSVal = return . unHTMLAttachmentElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAttachmentElement where
+  fromJSVal = return . fmap HTMLAttachmentElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLAttachmentElement
+instance IsElement HTMLAttachmentElement
+instance IsNode HTMLAttachmentElement
+instance IsEventTarget HTMLAttachmentElement
+instance IsSlotable HTMLAttachmentElement
+instance IsParentNode HTMLAttachmentElement
+instance IsNonDocumentTypeChildNode HTMLAttachmentElement
+instance IsDocumentAndElementEventHandlers HTMLAttachmentElement
+instance IsChildNode HTMLAttachmentElement
+instance IsAnimatable HTMLAttachmentElement
+instance IsGlobalEventHandlers HTMLAttachmentElement
+instance IsElementCSSInlineStyle HTMLAttachmentElement
+instance IsGObject HTMLAttachmentElement where
+  typeGType _ = gTypeHTMLAttachmentElement
+  {-# INLINE typeGType #-}
+noHTMLAttachmentElement :: Maybe HTMLAttachmentElement
+noHTMLAttachmentElement = Nothing
+{-# INLINE noHTMLAttachmentElement #-}
+
+foreign import javascript unsafe "window[\"HTMLAttachmentElement\"]" gTypeHTMLAttachmentElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLAudioElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLMediaElement"
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLAudioElement Mozilla HTMLAudioElement documentation>
+newtype HTMLAudioElement = HTMLAudioElement { unHTMLAudioElement :: JSVal }
+
+instance Eq (HTMLAudioElement) where
+  (HTMLAudioElement a) == (HTMLAudioElement b) = js_eq a b
+
+instance PToJSVal HTMLAudioElement where
+  pToJSVal = unHTMLAudioElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLAudioElement where
+  pFromJSVal = HTMLAudioElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLAudioElement where
+  toJSVal = return . unHTMLAudioElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLAudioElement where
+  fromJSVal = return . fmap HTMLAudioElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLMediaElement HTMLAudioElement
+instance IsHTMLElement HTMLAudioElement
+instance IsElement HTMLAudioElement
+instance IsNode HTMLAudioElement
+instance IsEventTarget HTMLAudioElement
+instance IsSlotable HTMLAudioElement
+instance IsParentNode HTMLAudioElement
+instance IsNonDocumentTypeChildNode HTMLAudioElement
+instance IsDocumentAndElementEventHandlers HTMLAudioElement
+instance IsChildNode HTMLAudioElement
+instance IsAnimatable HTMLAudioElement
+instance IsGlobalEventHandlers HTMLAudioElement
+instance IsElementCSSInlineStyle HTMLAudioElement
+instance IsGObject HTMLAudioElement where
+  typeGType _ = gTypeHTMLAudioElement
+  {-# INLINE typeGType #-}
+noHTMLAudioElement :: Maybe HTMLAudioElement
+noHTMLAudioElement = Nothing
+{-# INLINE noHTMLAudioElement #-}
+
+foreign import javascript unsafe "window[\"HTMLAudioElement\"]" gTypeHTMLAudioElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLBRElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBRElement Mozilla HTMLBRElement documentation>
+newtype HTMLBRElement = HTMLBRElement { unHTMLBRElement :: JSVal }
+
+instance Eq (HTMLBRElement) where
+  (HTMLBRElement a) == (HTMLBRElement b) = js_eq a b
+
+instance PToJSVal HTMLBRElement where
+  pToJSVal = unHTMLBRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBRElement where
+  pFromJSVal = HTMLBRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBRElement where
+  toJSVal = return . unHTMLBRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBRElement where
+  fromJSVal = return . fmap HTMLBRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLBRElement
+instance IsElement HTMLBRElement
+instance IsNode HTMLBRElement
+instance IsEventTarget HTMLBRElement
+instance IsSlotable HTMLBRElement
+instance IsParentNode HTMLBRElement
+instance IsNonDocumentTypeChildNode HTMLBRElement
+instance IsDocumentAndElementEventHandlers HTMLBRElement
+instance IsChildNode HTMLBRElement
+instance IsAnimatable HTMLBRElement
+instance IsGlobalEventHandlers HTMLBRElement
+instance IsElementCSSInlineStyle HTMLBRElement
+instance IsGObject HTMLBRElement where
+  typeGType _ = gTypeHTMLBRElement
+  {-# INLINE typeGType #-}
+noHTMLBRElement :: Maybe HTMLBRElement
+noHTMLBRElement = Nothing
+{-# INLINE noHTMLBRElement #-}
+
+foreign import javascript unsafe "window[\"HTMLBRElement\"]" gTypeHTMLBRElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLBaseElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBaseElement Mozilla HTMLBaseElement documentation>
+newtype HTMLBaseElement = HTMLBaseElement { unHTMLBaseElement :: JSVal }
+
+instance Eq (HTMLBaseElement) where
+  (HTMLBaseElement a) == (HTMLBaseElement b) = js_eq a b
+
+instance PToJSVal HTMLBaseElement where
+  pToJSVal = unHTMLBaseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBaseElement where
+  pFromJSVal = HTMLBaseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBaseElement where
+  toJSVal = return . unHTMLBaseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBaseElement where
+  fromJSVal = return . fmap HTMLBaseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLBaseElement
+instance IsElement HTMLBaseElement
+instance IsNode HTMLBaseElement
+instance IsEventTarget HTMLBaseElement
+instance IsSlotable HTMLBaseElement
+instance IsParentNode HTMLBaseElement
+instance IsNonDocumentTypeChildNode HTMLBaseElement
+instance IsDocumentAndElementEventHandlers HTMLBaseElement
+instance IsChildNode HTMLBaseElement
+instance IsAnimatable HTMLBaseElement
+instance IsGlobalEventHandlers HTMLBaseElement
+instance IsElementCSSInlineStyle HTMLBaseElement
+instance IsGObject HTMLBaseElement where
+  typeGType _ = gTypeHTMLBaseElement
+  {-# INLINE typeGType #-}
+noHTMLBaseElement :: Maybe HTMLBaseElement
+noHTMLBaseElement = Nothing
+{-# INLINE noHTMLBaseElement #-}
+
+foreign import javascript unsafe "window[\"HTMLBaseElement\"]" gTypeHTMLBaseElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLBodyElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.WindowEventHandlers"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLBodyElement Mozilla HTMLBodyElement documentation>
+newtype HTMLBodyElement = HTMLBodyElement { unHTMLBodyElement :: JSVal }
+
+instance Eq (HTMLBodyElement) where
+  (HTMLBodyElement a) == (HTMLBodyElement b) = js_eq a b
+
+instance PToJSVal HTMLBodyElement where
+  pToJSVal = unHTMLBodyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLBodyElement where
+  pFromJSVal = HTMLBodyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLBodyElement where
+  toJSVal = return . unHTMLBodyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLBodyElement where
+  fromJSVal = return . fmap HTMLBodyElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLBodyElement
+instance IsElement HTMLBodyElement
+instance IsNode HTMLBodyElement
+instance IsEventTarget HTMLBodyElement
+instance IsSlotable HTMLBodyElement
+instance IsParentNode HTMLBodyElement
+instance IsNonDocumentTypeChildNode HTMLBodyElement
+instance IsDocumentAndElementEventHandlers HTMLBodyElement
+instance IsChildNode HTMLBodyElement
+instance IsAnimatable HTMLBodyElement
+instance IsGlobalEventHandlers HTMLBodyElement
+instance IsElementCSSInlineStyle HTMLBodyElement
+instance IsWindowEventHandlers HTMLBodyElement
+instance IsGObject HTMLBodyElement where
+  typeGType _ = gTypeHTMLBodyElement
+  {-# INLINE typeGType #-}
+noHTMLBodyElement :: Maybe HTMLBodyElement
+noHTMLBodyElement = Nothing
+{-# INLINE noHTMLBodyElement #-}
+
+foreign import javascript unsafe "window[\"HTMLBodyElement\"]" gTypeHTMLBodyElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLButtonElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLButtonElement Mozilla HTMLButtonElement documentation>
+newtype HTMLButtonElement = HTMLButtonElement { unHTMLButtonElement :: JSVal }
+
+instance Eq (HTMLButtonElement) where
+  (HTMLButtonElement a) == (HTMLButtonElement b) = js_eq a b
+
+instance PToJSVal HTMLButtonElement where
+  pToJSVal = unHTMLButtonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLButtonElement where
+  pFromJSVal = HTMLButtonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLButtonElement where
+  toJSVal = return . unHTMLButtonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLButtonElement where
+  fromJSVal = return . fmap HTMLButtonElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLButtonElement
+instance IsElement HTMLButtonElement
+instance IsNode HTMLButtonElement
+instance IsEventTarget HTMLButtonElement
+instance IsSlotable HTMLButtonElement
+instance IsParentNode HTMLButtonElement
+instance IsNonDocumentTypeChildNode HTMLButtonElement
+instance IsDocumentAndElementEventHandlers HTMLButtonElement
+instance IsChildNode HTMLButtonElement
+instance IsAnimatable HTMLButtonElement
+instance IsGlobalEventHandlers HTMLButtonElement
+instance IsElementCSSInlineStyle HTMLButtonElement
+instance IsGObject HTMLButtonElement where
+  typeGType _ = gTypeHTMLButtonElement
+  {-# INLINE typeGType #-}
+noHTMLButtonElement :: Maybe HTMLButtonElement
+noHTMLButtonElement = Nothing
+{-# INLINE noHTMLButtonElement #-}
+
+foreign import javascript unsafe "window[\"HTMLButtonElement\"]" gTypeHTMLButtonElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLCanvasElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement Mozilla HTMLCanvasElement documentation>
+newtype HTMLCanvasElement = HTMLCanvasElement { unHTMLCanvasElement :: JSVal }
+
+instance Eq (HTMLCanvasElement) where
+  (HTMLCanvasElement a) == (HTMLCanvasElement b) = js_eq a b
+
+instance PToJSVal HTMLCanvasElement where
+  pToJSVal = unHTMLCanvasElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCanvasElement where
+  pFromJSVal = HTMLCanvasElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCanvasElement where
+  toJSVal = return . unHTMLCanvasElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCanvasElement where
+  fromJSVal = return . fmap HTMLCanvasElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLCanvasElement
+instance IsElement HTMLCanvasElement
+instance IsNode HTMLCanvasElement
+instance IsEventTarget HTMLCanvasElement
+instance IsSlotable HTMLCanvasElement
+instance IsParentNode HTMLCanvasElement
+instance IsNonDocumentTypeChildNode HTMLCanvasElement
+instance IsDocumentAndElementEventHandlers HTMLCanvasElement
+instance IsChildNode HTMLCanvasElement
+instance IsAnimatable HTMLCanvasElement
+instance IsGlobalEventHandlers HTMLCanvasElement
+instance IsElementCSSInlineStyle HTMLCanvasElement
+instance IsGObject HTMLCanvasElement where
+  typeGType _ = gTypeHTMLCanvasElement
+  {-# INLINE typeGType #-}
+noHTMLCanvasElement :: Maybe HTMLCanvasElement
+noHTMLCanvasElement = Nothing
+{-# INLINE noHTMLCanvasElement #-}
+
+foreign import javascript unsafe "window[\"HTMLCanvasElement\"]" gTypeHTMLCanvasElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLCollection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLCollection Mozilla HTMLCollection documentation>
+newtype HTMLCollection = HTMLCollection { unHTMLCollection :: JSVal }
+
+instance Eq (HTMLCollection) where
+  (HTMLCollection a) == (HTMLCollection b) = js_eq a b
+
+instance PToJSVal HTMLCollection where
+  pToJSVal = unHTMLCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLCollection where
+  pFromJSVal = HTMLCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLCollection where
+  toJSVal = return . unHTMLCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLCollection where
+  fromJSVal = return . fmap HTMLCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsHTMLCollection o
+toHTMLCollection :: IsHTMLCollection o => o -> HTMLCollection
+toHTMLCollection = HTMLCollection . coerce
+
+instance IsHTMLCollection HTMLCollection
+instance IsGObject HTMLCollection where
+  typeGType _ = gTypeHTMLCollection
+  {-# INLINE typeGType #-}
+noHTMLCollection :: Maybe HTMLCollection
+noHTMLCollection = Nothing
+{-# INLINE noHTMLCollection #-}
+
+foreign import javascript unsafe "window[\"HTMLCollection\"]" gTypeHTMLCollection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDListElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDListElement Mozilla HTMLDListElement documentation>
+newtype HTMLDListElement = HTMLDListElement { unHTMLDListElement :: JSVal }
+
+instance Eq (HTMLDListElement) where
+  (HTMLDListElement a) == (HTMLDListElement b) = js_eq a b
+
+instance PToJSVal HTMLDListElement where
+  pToJSVal = unHTMLDListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDListElement where
+  pFromJSVal = HTMLDListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDListElement where
+  toJSVal = return . unHTMLDListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDListElement where
+  fromJSVal = return . fmap HTMLDListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDListElement
+instance IsElement HTMLDListElement
+instance IsNode HTMLDListElement
+instance IsEventTarget HTMLDListElement
+instance IsSlotable HTMLDListElement
+instance IsParentNode HTMLDListElement
+instance IsNonDocumentTypeChildNode HTMLDListElement
+instance IsDocumentAndElementEventHandlers HTMLDListElement
+instance IsChildNode HTMLDListElement
+instance IsAnimatable HTMLDListElement
+instance IsGlobalEventHandlers HTMLDListElement
+instance IsElementCSSInlineStyle HTMLDListElement
+instance IsGObject HTMLDListElement where
+  typeGType _ = gTypeHTMLDListElement
+  {-# INLINE typeGType #-}
+noHTMLDListElement :: Maybe HTMLDListElement
+noHTMLDListElement = Nothing
+{-# INLINE noHTMLDListElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDListElement\"]" gTypeHTMLDListElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDataElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataElement Mozilla HTMLDataElement documentation>
+newtype HTMLDataElement = HTMLDataElement { unHTMLDataElement :: JSVal }
+
+instance Eq (HTMLDataElement) where
+  (HTMLDataElement a) == (HTMLDataElement b) = js_eq a b
+
+instance PToJSVal HTMLDataElement where
+  pToJSVal = unHTMLDataElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDataElement where
+  pFromJSVal = HTMLDataElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDataElement where
+  toJSVal = return . unHTMLDataElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDataElement where
+  fromJSVal = return . fmap HTMLDataElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDataElement
+instance IsElement HTMLDataElement
+instance IsNode HTMLDataElement
+instance IsEventTarget HTMLDataElement
+instance IsSlotable HTMLDataElement
+instance IsParentNode HTMLDataElement
+instance IsNonDocumentTypeChildNode HTMLDataElement
+instance IsDocumentAndElementEventHandlers HTMLDataElement
+instance IsChildNode HTMLDataElement
+instance IsAnimatable HTMLDataElement
+instance IsGlobalEventHandlers HTMLDataElement
+instance IsElementCSSInlineStyle HTMLDataElement
+instance IsGObject HTMLDataElement where
+  typeGType _ = gTypeHTMLDataElement
+  {-# INLINE typeGType #-}
+noHTMLDataElement :: Maybe HTMLDataElement
+noHTMLDataElement = Nothing
+{-# INLINE noHTMLDataElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDataElement\"]" gTypeHTMLDataElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDataListElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDataListElement Mozilla HTMLDataListElement documentation>
+newtype HTMLDataListElement = HTMLDataListElement { unHTMLDataListElement :: JSVal }
+
+instance Eq (HTMLDataListElement) where
+  (HTMLDataListElement a) == (HTMLDataListElement b) = js_eq a b
+
+instance PToJSVal HTMLDataListElement where
+  pToJSVal = unHTMLDataListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDataListElement where
+  pFromJSVal = HTMLDataListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDataListElement where
+  toJSVal = return . unHTMLDataListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDataListElement where
+  fromJSVal = return . fmap HTMLDataListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDataListElement
+instance IsElement HTMLDataListElement
+instance IsNode HTMLDataListElement
+instance IsEventTarget HTMLDataListElement
+instance IsSlotable HTMLDataListElement
+instance IsParentNode HTMLDataListElement
+instance IsNonDocumentTypeChildNode HTMLDataListElement
+instance IsDocumentAndElementEventHandlers HTMLDataListElement
+instance IsChildNode HTMLDataListElement
+instance IsAnimatable HTMLDataListElement
+instance IsGlobalEventHandlers HTMLDataListElement
+instance IsElementCSSInlineStyle HTMLDataListElement
+instance IsGObject HTMLDataListElement where
+  typeGType _ = gTypeHTMLDataListElement
+  {-# INLINE typeGType #-}
+noHTMLDataListElement :: Maybe HTMLDataListElement
+noHTMLDataListElement = Nothing
+{-# INLINE noHTMLDataListElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDataListElement\"]" gTypeHTMLDataListElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDetailsElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDetailsElement Mozilla HTMLDetailsElement documentation>
+newtype HTMLDetailsElement = HTMLDetailsElement { unHTMLDetailsElement :: JSVal }
+
+instance Eq (HTMLDetailsElement) where
+  (HTMLDetailsElement a) == (HTMLDetailsElement b) = js_eq a b
+
+instance PToJSVal HTMLDetailsElement where
+  pToJSVal = unHTMLDetailsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDetailsElement where
+  pFromJSVal = HTMLDetailsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDetailsElement where
+  toJSVal = return . unHTMLDetailsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDetailsElement where
+  fromJSVal = return . fmap HTMLDetailsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDetailsElement
+instance IsElement HTMLDetailsElement
+instance IsNode HTMLDetailsElement
+instance IsEventTarget HTMLDetailsElement
+instance IsSlotable HTMLDetailsElement
+instance IsParentNode HTMLDetailsElement
+instance IsNonDocumentTypeChildNode HTMLDetailsElement
+instance IsDocumentAndElementEventHandlers HTMLDetailsElement
+instance IsChildNode HTMLDetailsElement
+instance IsAnimatable HTMLDetailsElement
+instance IsGlobalEventHandlers HTMLDetailsElement
+instance IsElementCSSInlineStyle HTMLDetailsElement
+instance IsGObject HTMLDetailsElement where
+  typeGType _ = gTypeHTMLDetailsElement
+  {-# INLINE typeGType #-}
+noHTMLDetailsElement :: Maybe HTMLDetailsElement
+noHTMLDetailsElement = Nothing
+{-# INLINE noHTMLDetailsElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDetailsElement\"]" gTypeHTMLDetailsElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDirectoryElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDirectoryElement Mozilla HTMLDirectoryElement documentation>
+newtype HTMLDirectoryElement = HTMLDirectoryElement { unHTMLDirectoryElement :: JSVal }
+
+instance Eq (HTMLDirectoryElement) where
+  (HTMLDirectoryElement a) == (HTMLDirectoryElement b) = js_eq a b
+
+instance PToJSVal HTMLDirectoryElement where
+  pToJSVal = unHTMLDirectoryElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDirectoryElement where
+  pFromJSVal = HTMLDirectoryElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDirectoryElement where
+  toJSVal = return . unHTMLDirectoryElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDirectoryElement where
+  fromJSVal = return . fmap HTMLDirectoryElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDirectoryElement
+instance IsElement HTMLDirectoryElement
+instance IsNode HTMLDirectoryElement
+instance IsEventTarget HTMLDirectoryElement
+instance IsSlotable HTMLDirectoryElement
+instance IsParentNode HTMLDirectoryElement
+instance IsNonDocumentTypeChildNode HTMLDirectoryElement
+instance IsDocumentAndElementEventHandlers HTMLDirectoryElement
+instance IsChildNode HTMLDirectoryElement
+instance IsAnimatable HTMLDirectoryElement
+instance IsGlobalEventHandlers HTMLDirectoryElement
+instance IsElementCSSInlineStyle HTMLDirectoryElement
+instance IsGObject HTMLDirectoryElement where
+  typeGType _ = gTypeHTMLDirectoryElement
+  {-# INLINE typeGType #-}
+noHTMLDirectoryElement :: Maybe HTMLDirectoryElement
+noHTMLDirectoryElement = Nothing
+{-# INLINE noHTMLDirectoryElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDirectoryElement\"]" gTypeHTMLDirectoryElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDivElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDivElement Mozilla HTMLDivElement documentation>
+newtype HTMLDivElement = HTMLDivElement { unHTMLDivElement :: JSVal }
+
+instance Eq (HTMLDivElement) where
+  (HTMLDivElement a) == (HTMLDivElement b) = js_eq a b
+
+instance PToJSVal HTMLDivElement where
+  pToJSVal = unHTMLDivElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDivElement where
+  pFromJSVal = HTMLDivElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDivElement where
+  toJSVal = return . unHTMLDivElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDivElement where
+  fromJSVal = return . fmap HTMLDivElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLDivElement
+instance IsElement HTMLDivElement
+instance IsNode HTMLDivElement
+instance IsEventTarget HTMLDivElement
+instance IsSlotable HTMLDivElement
+instance IsParentNode HTMLDivElement
+instance IsNonDocumentTypeChildNode HTMLDivElement
+instance IsDocumentAndElementEventHandlers HTMLDivElement
+instance IsChildNode HTMLDivElement
+instance IsAnimatable HTMLDivElement
+instance IsGlobalEventHandlers HTMLDivElement
+instance IsElementCSSInlineStyle HTMLDivElement
+instance IsGObject HTMLDivElement where
+  typeGType _ = gTypeHTMLDivElement
+  {-# INLINE typeGType #-}
+noHTMLDivElement :: Maybe HTMLDivElement
+noHTMLDivElement = Nothing
+{-# INLINE noHTMLDivElement #-}
+
+foreign import javascript unsafe "window[\"HTMLDivElement\"]" gTypeHTMLDivElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLDocument".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Document"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.DocumentOrShadowRoot"
+--     * "GHCJS.DOM.NonElementParentNode"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLDocument Mozilla HTMLDocument documentation>
+newtype HTMLDocument = HTMLDocument { unHTMLDocument :: JSVal }
+
+instance Eq (HTMLDocument) where
+  (HTMLDocument a) == (HTMLDocument b) = js_eq a b
+
+instance PToJSVal HTMLDocument where
+  pToJSVal = unHTMLDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLDocument where
+  pFromJSVal = HTMLDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLDocument where
+  toJSVal = return . unHTMLDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLDocument where
+  fromJSVal = return . fmap HTMLDocument . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDocument HTMLDocument
+instance IsNode HTMLDocument
+instance IsEventTarget HTMLDocument
+instance IsGlobalEventHandlers HTMLDocument
+instance IsDocumentOrShadowRoot HTMLDocument
+instance IsNonElementParentNode HTMLDocument
+instance IsParentNode HTMLDocument
+instance IsDocumentAndElementEventHandlers HTMLDocument
+instance IsGObject HTMLDocument where
+  typeGType _ = gTypeHTMLDocument
+  {-# INLINE typeGType #-}
+noHTMLDocument :: Maybe HTMLDocument
+noHTMLDocument = Nothing
+{-# INLINE noHTMLDocument #-}
+
+foreign import javascript unsafe "window[\"HTMLDocument\"]" gTypeHTMLDocument :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement Mozilla HTMLElement documentation>
+newtype HTMLElement = HTMLElement { unHTMLElement :: JSVal }
+
+instance Eq (HTMLElement) where
+  (HTMLElement a) == (HTMLElement b) = js_eq a b
+
+instance PToJSVal HTMLElement where
+  pToJSVal = unHTMLElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLElement where
+  pFromJSVal = HTMLElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLElement where
+  toJSVal = return . unHTMLElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLElement where
+  fromJSVal = return . fmap HTMLElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLElement o
+toHTMLElement :: IsHTMLElement o => o -> HTMLElement
+toHTMLElement = HTMLElement . coerce
+
+instance IsHTMLElement HTMLElement
+instance IsElement HTMLElement
+instance IsNode HTMLElement
+instance IsEventTarget HTMLElement
+instance IsSlotable HTMLElement
+instance IsParentNode HTMLElement
+instance IsNonDocumentTypeChildNode HTMLElement
+instance IsDocumentAndElementEventHandlers HTMLElement
+instance IsChildNode HTMLElement
+instance IsAnimatable HTMLElement
+instance IsGlobalEventHandlers HTMLElement
+instance IsElementCSSInlineStyle HTMLElement
+instance IsGObject HTMLElement where
+  typeGType _ = gTypeHTMLElement
+  {-# INLINE typeGType #-}
+noHTMLElement :: Maybe HTMLElement
+noHTMLElement = Nothing
+{-# INLINE noHTMLElement #-}
+
+foreign import javascript unsafe "window[\"HTMLElement\"]" gTypeHTMLElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLEmbedElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLEmbedElement Mozilla HTMLEmbedElement documentation>
+newtype HTMLEmbedElement = HTMLEmbedElement { unHTMLEmbedElement :: JSVal }
+
+instance Eq (HTMLEmbedElement) where
+  (HTMLEmbedElement a) == (HTMLEmbedElement b) = js_eq a b
+
+instance PToJSVal HTMLEmbedElement where
+  pToJSVal = unHTMLEmbedElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLEmbedElement where
+  pFromJSVal = HTMLEmbedElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLEmbedElement where
+  toJSVal = return . unHTMLEmbedElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLEmbedElement where
+  fromJSVal = return . fmap HTMLEmbedElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLEmbedElement
+instance IsElement HTMLEmbedElement
+instance IsNode HTMLEmbedElement
+instance IsEventTarget HTMLEmbedElement
+instance IsSlotable HTMLEmbedElement
+instance IsParentNode HTMLEmbedElement
+instance IsNonDocumentTypeChildNode HTMLEmbedElement
+instance IsDocumentAndElementEventHandlers HTMLEmbedElement
+instance IsChildNode HTMLEmbedElement
+instance IsAnimatable HTMLEmbedElement
+instance IsGlobalEventHandlers HTMLEmbedElement
+instance IsElementCSSInlineStyle HTMLEmbedElement
+instance IsGObject HTMLEmbedElement where
+  typeGType _ = gTypeHTMLEmbedElement
+  {-# INLINE typeGType #-}
+noHTMLEmbedElement :: Maybe HTMLEmbedElement
+noHTMLEmbedElement = Nothing
+{-# INLINE noHTMLEmbedElement #-}
+
+foreign import javascript unsafe "window[\"HTMLEmbedElement\"]" gTypeHTMLEmbedElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFieldSetElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFieldSetElement Mozilla HTMLFieldSetElement documentation>
+newtype HTMLFieldSetElement = HTMLFieldSetElement { unHTMLFieldSetElement :: JSVal }
+
+instance Eq (HTMLFieldSetElement) where
+  (HTMLFieldSetElement a) == (HTMLFieldSetElement b) = js_eq a b
+
+instance PToJSVal HTMLFieldSetElement where
+  pToJSVal = unHTMLFieldSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFieldSetElement where
+  pFromJSVal = HTMLFieldSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFieldSetElement where
+  toJSVal = return . unHTMLFieldSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFieldSetElement where
+  fromJSVal = return . fmap HTMLFieldSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLFieldSetElement
+instance IsElement HTMLFieldSetElement
+instance IsNode HTMLFieldSetElement
+instance IsEventTarget HTMLFieldSetElement
+instance IsSlotable HTMLFieldSetElement
+instance IsParentNode HTMLFieldSetElement
+instance IsNonDocumentTypeChildNode HTMLFieldSetElement
+instance IsDocumentAndElementEventHandlers HTMLFieldSetElement
+instance IsChildNode HTMLFieldSetElement
+instance IsAnimatable HTMLFieldSetElement
+instance IsGlobalEventHandlers HTMLFieldSetElement
+instance IsElementCSSInlineStyle HTMLFieldSetElement
+instance IsGObject HTMLFieldSetElement where
+  typeGType _ = gTypeHTMLFieldSetElement
+  {-# INLINE typeGType #-}
+noHTMLFieldSetElement :: Maybe HTMLFieldSetElement
+noHTMLFieldSetElement = Nothing
+{-# INLINE noHTMLFieldSetElement #-}
+
+foreign import javascript unsafe "window[\"HTMLFieldSetElement\"]" gTypeHTMLFieldSetElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFontElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFontElement Mozilla HTMLFontElement documentation>
+newtype HTMLFontElement = HTMLFontElement { unHTMLFontElement :: JSVal }
+
+instance Eq (HTMLFontElement) where
+  (HTMLFontElement a) == (HTMLFontElement b) = js_eq a b
+
+instance PToJSVal HTMLFontElement where
+  pToJSVal = unHTMLFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFontElement where
+  pFromJSVal = HTMLFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFontElement where
+  toJSVal = return . unHTMLFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFontElement where
+  fromJSVal = return . fmap HTMLFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLFontElement
+instance IsElement HTMLFontElement
+instance IsNode HTMLFontElement
+instance IsEventTarget HTMLFontElement
+instance IsSlotable HTMLFontElement
+instance IsParentNode HTMLFontElement
+instance IsNonDocumentTypeChildNode HTMLFontElement
+instance IsDocumentAndElementEventHandlers HTMLFontElement
+instance IsChildNode HTMLFontElement
+instance IsAnimatable HTMLFontElement
+instance IsGlobalEventHandlers HTMLFontElement
+instance IsElementCSSInlineStyle HTMLFontElement
+instance IsGObject HTMLFontElement where
+  typeGType _ = gTypeHTMLFontElement
+  {-# INLINE typeGType #-}
+noHTMLFontElement :: Maybe HTMLFontElement
+noHTMLFontElement = Nothing
+{-# INLINE noHTMLFontElement #-}
+
+foreign import javascript unsafe "window[\"HTMLFontElement\"]" gTypeHTMLFontElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFormControlsCollection".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormControlsCollection Mozilla HTMLFormControlsCollection documentation>
+newtype HTMLFormControlsCollection = HTMLFormControlsCollection { unHTMLFormControlsCollection :: JSVal }
+
+instance Eq (HTMLFormControlsCollection) where
+  (HTMLFormControlsCollection a) == (HTMLFormControlsCollection b) = js_eq a b
+
+instance PToJSVal HTMLFormControlsCollection where
+  pToJSVal = unHTMLFormControlsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormControlsCollection where
+  pFromJSVal = HTMLFormControlsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormControlsCollection where
+  toJSVal = return . unHTMLFormControlsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormControlsCollection where
+  fromJSVal = return . fmap HTMLFormControlsCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLCollection HTMLFormControlsCollection
+instance IsGObject HTMLFormControlsCollection where
+  typeGType _ = gTypeHTMLFormControlsCollection
+  {-# INLINE typeGType #-}
+noHTMLFormControlsCollection :: Maybe HTMLFormControlsCollection
+noHTMLFormControlsCollection = Nothing
+{-# INLINE noHTMLFormControlsCollection #-}
+
+foreign import javascript unsafe "window[\"HTMLFormControlsCollection\"]" gTypeHTMLFormControlsCollection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFormElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement Mozilla HTMLFormElement documentation>
+newtype HTMLFormElement = HTMLFormElement { unHTMLFormElement :: JSVal }
+
+instance Eq (HTMLFormElement) where
+  (HTMLFormElement a) == (HTMLFormElement b) = js_eq a b
+
+instance PToJSVal HTMLFormElement where
+  pToJSVal = unHTMLFormElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFormElement where
+  pFromJSVal = HTMLFormElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFormElement where
+  toJSVal = return . unHTMLFormElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFormElement where
+  fromJSVal = return . fmap HTMLFormElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLFormElement
+instance IsElement HTMLFormElement
+instance IsNode HTMLFormElement
+instance IsEventTarget HTMLFormElement
+instance IsSlotable HTMLFormElement
+instance IsParentNode HTMLFormElement
+instance IsNonDocumentTypeChildNode HTMLFormElement
+instance IsDocumentAndElementEventHandlers HTMLFormElement
+instance IsChildNode HTMLFormElement
+instance IsAnimatable HTMLFormElement
+instance IsGlobalEventHandlers HTMLFormElement
+instance IsElementCSSInlineStyle HTMLFormElement
+instance IsGObject HTMLFormElement where
+  typeGType _ = gTypeHTMLFormElement
+  {-# INLINE typeGType #-}
+noHTMLFormElement :: Maybe HTMLFormElement
+noHTMLFormElement = Nothing
+{-# INLINE noHTMLFormElement #-}
+
+foreign import javascript unsafe "window[\"HTMLFormElement\"]" gTypeHTMLFormElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFrameElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameElement Mozilla HTMLFrameElement documentation>
+newtype HTMLFrameElement = HTMLFrameElement { unHTMLFrameElement :: JSVal }
+
+instance Eq (HTMLFrameElement) where
+  (HTMLFrameElement a) == (HTMLFrameElement b) = js_eq a b
+
+instance PToJSVal HTMLFrameElement where
+  pToJSVal = unHTMLFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameElement where
+  pFromJSVal = HTMLFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameElement where
+  toJSVal = return . unHTMLFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameElement where
+  fromJSVal = return . fmap HTMLFrameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLFrameElement
+instance IsElement HTMLFrameElement
+instance IsNode HTMLFrameElement
+instance IsEventTarget HTMLFrameElement
+instance IsSlotable HTMLFrameElement
+instance IsParentNode HTMLFrameElement
+instance IsNonDocumentTypeChildNode HTMLFrameElement
+instance IsDocumentAndElementEventHandlers HTMLFrameElement
+instance IsChildNode HTMLFrameElement
+instance IsAnimatable HTMLFrameElement
+instance IsGlobalEventHandlers HTMLFrameElement
+instance IsElementCSSInlineStyle HTMLFrameElement
+instance IsGObject HTMLFrameElement where
+  typeGType _ = gTypeHTMLFrameElement
+  {-# INLINE typeGType #-}
+noHTMLFrameElement :: Maybe HTMLFrameElement
+noHTMLFrameElement = Nothing
+{-# INLINE noHTMLFrameElement #-}
+
+foreign import javascript unsafe "window[\"HTMLFrameElement\"]" gTypeHTMLFrameElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLFrameSetElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.WindowEventHandlers"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLFrameSetElement Mozilla HTMLFrameSetElement documentation>
+newtype HTMLFrameSetElement = HTMLFrameSetElement { unHTMLFrameSetElement :: JSVal }
+
+instance Eq (HTMLFrameSetElement) where
+  (HTMLFrameSetElement a) == (HTMLFrameSetElement b) = js_eq a b
+
+instance PToJSVal HTMLFrameSetElement where
+  pToJSVal = unHTMLFrameSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLFrameSetElement where
+  pFromJSVal = HTMLFrameSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLFrameSetElement where
+  toJSVal = return . unHTMLFrameSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLFrameSetElement where
+  fromJSVal = return . fmap HTMLFrameSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLFrameSetElement
+instance IsElement HTMLFrameSetElement
+instance IsNode HTMLFrameSetElement
+instance IsEventTarget HTMLFrameSetElement
+instance IsSlotable HTMLFrameSetElement
+instance IsParentNode HTMLFrameSetElement
+instance IsNonDocumentTypeChildNode HTMLFrameSetElement
+instance IsDocumentAndElementEventHandlers HTMLFrameSetElement
+instance IsChildNode HTMLFrameSetElement
+instance IsAnimatable HTMLFrameSetElement
+instance IsGlobalEventHandlers HTMLFrameSetElement
+instance IsElementCSSInlineStyle HTMLFrameSetElement
+instance IsWindowEventHandlers HTMLFrameSetElement
+instance IsGObject HTMLFrameSetElement where
+  typeGType _ = gTypeHTMLFrameSetElement
+  {-# INLINE typeGType #-}
+noHTMLFrameSetElement :: Maybe HTMLFrameSetElement
+noHTMLFrameSetElement = Nothing
+{-# INLINE noHTMLFrameSetElement #-}
+
+foreign import javascript unsafe "window[\"HTMLFrameSetElement\"]" gTypeHTMLFrameSetElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLHRElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHRElement Mozilla HTMLHRElement documentation>
+newtype HTMLHRElement = HTMLHRElement { unHTMLHRElement :: JSVal }
+
+instance Eq (HTMLHRElement) where
+  (HTMLHRElement a) == (HTMLHRElement b) = js_eq a b
+
+instance PToJSVal HTMLHRElement where
+  pToJSVal = unHTMLHRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHRElement where
+  pFromJSVal = HTMLHRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHRElement where
+  toJSVal = return . unHTMLHRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHRElement where
+  fromJSVal = return . fmap HTMLHRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLHRElement
+instance IsElement HTMLHRElement
+instance IsNode HTMLHRElement
+instance IsEventTarget HTMLHRElement
+instance IsSlotable HTMLHRElement
+instance IsParentNode HTMLHRElement
+instance IsNonDocumentTypeChildNode HTMLHRElement
+instance IsDocumentAndElementEventHandlers HTMLHRElement
+instance IsChildNode HTMLHRElement
+instance IsAnimatable HTMLHRElement
+instance IsGlobalEventHandlers HTMLHRElement
+instance IsElementCSSInlineStyle HTMLHRElement
+instance IsGObject HTMLHRElement where
+  typeGType _ = gTypeHTMLHRElement
+  {-# INLINE typeGType #-}
+noHTMLHRElement :: Maybe HTMLHRElement
+noHTMLHRElement = Nothing
+{-# INLINE noHTMLHRElement #-}
+
+foreign import javascript unsafe "window[\"HTMLHRElement\"]" gTypeHTMLHRElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLHeadElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadElement Mozilla HTMLHeadElement documentation>
+newtype HTMLHeadElement = HTMLHeadElement { unHTMLHeadElement :: JSVal }
+
+instance Eq (HTMLHeadElement) where
+  (HTMLHeadElement a) == (HTMLHeadElement b) = js_eq a b
+
+instance PToJSVal HTMLHeadElement where
+  pToJSVal = unHTMLHeadElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadElement where
+  pFromJSVal = HTMLHeadElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadElement where
+  toJSVal = return . unHTMLHeadElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadElement where
+  fromJSVal = return . fmap HTMLHeadElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLHeadElement
+instance IsElement HTMLHeadElement
+instance IsNode HTMLHeadElement
+instance IsEventTarget HTMLHeadElement
+instance IsSlotable HTMLHeadElement
+instance IsParentNode HTMLHeadElement
+instance IsNonDocumentTypeChildNode HTMLHeadElement
+instance IsDocumentAndElementEventHandlers HTMLHeadElement
+instance IsChildNode HTMLHeadElement
+instance IsAnimatable HTMLHeadElement
+instance IsGlobalEventHandlers HTMLHeadElement
+instance IsElementCSSInlineStyle HTMLHeadElement
+instance IsGObject HTMLHeadElement where
+  typeGType _ = gTypeHTMLHeadElement
+  {-# INLINE typeGType #-}
+noHTMLHeadElement :: Maybe HTMLHeadElement
+noHTMLHeadElement = Nothing
+{-# INLINE noHTMLHeadElement #-}
+
+foreign import javascript unsafe "window[\"HTMLHeadElement\"]" gTypeHTMLHeadElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLHeadingElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHeadingElement Mozilla HTMLHeadingElement documentation>
+newtype HTMLHeadingElement = HTMLHeadingElement { unHTMLHeadingElement :: JSVal }
+
+instance Eq (HTMLHeadingElement) where
+  (HTMLHeadingElement a) == (HTMLHeadingElement b) = js_eq a b
+
+instance PToJSVal HTMLHeadingElement where
+  pToJSVal = unHTMLHeadingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHeadingElement where
+  pFromJSVal = HTMLHeadingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHeadingElement where
+  toJSVal = return . unHTMLHeadingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHeadingElement where
+  fromJSVal = return . fmap HTMLHeadingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLHeadingElement
+instance IsElement HTMLHeadingElement
+instance IsNode HTMLHeadingElement
+instance IsEventTarget HTMLHeadingElement
+instance IsSlotable HTMLHeadingElement
+instance IsParentNode HTMLHeadingElement
+instance IsNonDocumentTypeChildNode HTMLHeadingElement
+instance IsDocumentAndElementEventHandlers HTMLHeadingElement
+instance IsChildNode HTMLHeadingElement
+instance IsAnimatable HTMLHeadingElement
+instance IsGlobalEventHandlers HTMLHeadingElement
+instance IsElementCSSInlineStyle HTMLHeadingElement
+instance IsGObject HTMLHeadingElement where
+  typeGType _ = gTypeHTMLHeadingElement
+  {-# INLINE typeGType #-}
+noHTMLHeadingElement :: Maybe HTMLHeadingElement
+noHTMLHeadingElement = Nothing
+{-# INLINE noHTMLHeadingElement #-}
+
+foreign import javascript unsafe "window[\"HTMLHeadingElement\"]" gTypeHTMLHeadingElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLHtmlElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHtmlElement Mozilla HTMLHtmlElement documentation>
+newtype HTMLHtmlElement = HTMLHtmlElement { unHTMLHtmlElement :: JSVal }
+
+instance Eq (HTMLHtmlElement) where
+  (HTMLHtmlElement a) == (HTMLHtmlElement b) = js_eq a b
+
+instance PToJSVal HTMLHtmlElement where
+  pToJSVal = unHTMLHtmlElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHtmlElement where
+  pFromJSVal = HTMLHtmlElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHtmlElement where
+  toJSVal = return . unHTMLHtmlElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHtmlElement where
+  fromJSVal = return . fmap HTMLHtmlElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLHtmlElement
+instance IsElement HTMLHtmlElement
+instance IsNode HTMLHtmlElement
+instance IsEventTarget HTMLHtmlElement
+instance IsSlotable HTMLHtmlElement
+instance IsParentNode HTMLHtmlElement
+instance IsNonDocumentTypeChildNode HTMLHtmlElement
+instance IsDocumentAndElementEventHandlers HTMLHtmlElement
+instance IsChildNode HTMLHtmlElement
+instance IsAnimatable HTMLHtmlElement
+instance IsGlobalEventHandlers HTMLHtmlElement
+instance IsElementCSSInlineStyle HTMLHtmlElement
+instance IsGObject HTMLHtmlElement where
+  typeGType _ = gTypeHTMLHtmlElement
+  {-# INLINE typeGType #-}
+noHTMLHtmlElement :: Maybe HTMLHtmlElement
+noHTMLHtmlElement = Nothing
+{-# INLINE noHTMLHtmlElement #-}
+
+foreign import javascript unsafe "window[\"HTMLHtmlElement\"]" gTypeHTMLHtmlElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLHyperlinkElementUtils".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLHyperlinkElementUtils Mozilla HTMLHyperlinkElementUtils documentation>
+newtype HTMLHyperlinkElementUtils = HTMLHyperlinkElementUtils { unHTMLHyperlinkElementUtils :: JSVal }
+
+instance Eq (HTMLHyperlinkElementUtils) where
+  (HTMLHyperlinkElementUtils a) == (HTMLHyperlinkElementUtils b) = js_eq a b
+
+instance PToJSVal HTMLHyperlinkElementUtils where
+  pToJSVal = unHTMLHyperlinkElementUtils
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLHyperlinkElementUtils where
+  pFromJSVal = HTMLHyperlinkElementUtils
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLHyperlinkElementUtils where
+  toJSVal = return . unHTMLHyperlinkElementUtils
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLHyperlinkElementUtils where
+  fromJSVal = return . fmap HTMLHyperlinkElementUtils . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsHTMLHyperlinkElementUtils o
+toHTMLHyperlinkElementUtils :: IsHTMLHyperlinkElementUtils o => o -> HTMLHyperlinkElementUtils
+toHTMLHyperlinkElementUtils = HTMLHyperlinkElementUtils . coerce
+
+instance IsHTMLHyperlinkElementUtils HTMLHyperlinkElementUtils
+instance IsGObject HTMLHyperlinkElementUtils where
+  typeGType _ = gTypeHTMLHyperlinkElementUtils
+  {-# INLINE typeGType #-}
+noHTMLHyperlinkElementUtils :: Maybe HTMLHyperlinkElementUtils
+noHTMLHyperlinkElementUtils = Nothing
+{-# INLINE noHTMLHyperlinkElementUtils #-}
+
+foreign import javascript unsafe "window[\"HTMLHyperlinkElementUtils\"]" gTypeHTMLHyperlinkElementUtils :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLIFrameElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLIFrameElement Mozilla HTMLIFrameElement documentation>
+newtype HTMLIFrameElement = HTMLIFrameElement { unHTMLIFrameElement :: JSVal }
+
+instance Eq (HTMLIFrameElement) where
+  (HTMLIFrameElement a) == (HTMLIFrameElement b) = js_eq a b
+
+instance PToJSVal HTMLIFrameElement where
+  pToJSVal = unHTMLIFrameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLIFrameElement where
+  pFromJSVal = HTMLIFrameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLIFrameElement where
+  toJSVal = return . unHTMLIFrameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLIFrameElement where
+  fromJSVal = return . fmap HTMLIFrameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLIFrameElement
+instance IsElement HTMLIFrameElement
+instance IsNode HTMLIFrameElement
+instance IsEventTarget HTMLIFrameElement
+instance IsSlotable HTMLIFrameElement
+instance IsParentNode HTMLIFrameElement
+instance IsNonDocumentTypeChildNode HTMLIFrameElement
+instance IsDocumentAndElementEventHandlers HTMLIFrameElement
+instance IsChildNode HTMLIFrameElement
+instance IsAnimatable HTMLIFrameElement
+instance IsGlobalEventHandlers HTMLIFrameElement
+instance IsElementCSSInlineStyle HTMLIFrameElement
+instance IsGObject HTMLIFrameElement where
+  typeGType _ = gTypeHTMLIFrameElement
+  {-# INLINE typeGType #-}
+noHTMLIFrameElement :: Maybe HTMLIFrameElement
+noHTMLIFrameElement = Nothing
+{-# INLINE noHTMLIFrameElement #-}
+
+foreign import javascript unsafe "window[\"HTMLIFrameElement\"]" gTypeHTMLIFrameElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLImageElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLImageElement Mozilla HTMLImageElement documentation>
+newtype HTMLImageElement = HTMLImageElement { unHTMLImageElement :: JSVal }
+
+instance Eq (HTMLImageElement) where
+  (HTMLImageElement a) == (HTMLImageElement b) = js_eq a b
+
+instance PToJSVal HTMLImageElement where
+  pToJSVal = unHTMLImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLImageElement where
+  pFromJSVal = HTMLImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLImageElement where
+  toJSVal = return . unHTMLImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLImageElement where
+  fromJSVal = return . fmap HTMLImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLImageElement
+instance IsElement HTMLImageElement
+instance IsNode HTMLImageElement
+instance IsEventTarget HTMLImageElement
+instance IsSlotable HTMLImageElement
+instance IsParentNode HTMLImageElement
+instance IsNonDocumentTypeChildNode HTMLImageElement
+instance IsDocumentAndElementEventHandlers HTMLImageElement
+instance IsChildNode HTMLImageElement
+instance IsAnimatable HTMLImageElement
+instance IsGlobalEventHandlers HTMLImageElement
+instance IsElementCSSInlineStyle HTMLImageElement
+instance IsGObject HTMLImageElement where
+  typeGType _ = gTypeHTMLImageElement
+  {-# INLINE typeGType #-}
+noHTMLImageElement :: Maybe HTMLImageElement
+noHTMLImageElement = Nothing
+{-# INLINE noHTMLImageElement #-}
+
+foreign import javascript unsafe "window[\"HTMLImageElement\"]" gTypeHTMLImageElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLInputElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLInputElement Mozilla HTMLInputElement documentation>
+newtype HTMLInputElement = HTMLInputElement { unHTMLInputElement :: JSVal }
+
+instance Eq (HTMLInputElement) where
+  (HTMLInputElement a) == (HTMLInputElement b) = js_eq a b
+
+instance PToJSVal HTMLInputElement where
+  pToJSVal = unHTMLInputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLInputElement where
+  pFromJSVal = HTMLInputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLInputElement where
+  toJSVal = return . unHTMLInputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLInputElement where
+  fromJSVal = return . fmap HTMLInputElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLInputElement
+instance IsElement HTMLInputElement
+instance IsNode HTMLInputElement
+instance IsEventTarget HTMLInputElement
+instance IsSlotable HTMLInputElement
+instance IsParentNode HTMLInputElement
+instance IsNonDocumentTypeChildNode HTMLInputElement
+instance IsDocumentAndElementEventHandlers HTMLInputElement
+instance IsChildNode HTMLInputElement
+instance IsAnimatable HTMLInputElement
+instance IsGlobalEventHandlers HTMLInputElement
+instance IsElementCSSInlineStyle HTMLInputElement
+instance IsGObject HTMLInputElement where
+  typeGType _ = gTypeHTMLInputElement
+  {-# INLINE typeGType #-}
+noHTMLInputElement :: Maybe HTMLInputElement
+noHTMLInputElement = Nothing
+{-# INLINE noHTMLInputElement #-}
+
+foreign import javascript unsafe "window[\"HTMLInputElement\"]" gTypeHTMLInputElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLKeygenElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLKeygenElement Mozilla HTMLKeygenElement documentation>
+newtype HTMLKeygenElement = HTMLKeygenElement { unHTMLKeygenElement :: JSVal }
+
+instance Eq (HTMLKeygenElement) where
+  (HTMLKeygenElement a) == (HTMLKeygenElement b) = js_eq a b
+
+instance PToJSVal HTMLKeygenElement where
+  pToJSVal = unHTMLKeygenElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLKeygenElement where
+  pFromJSVal = HTMLKeygenElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLKeygenElement where
+  toJSVal = return . unHTMLKeygenElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLKeygenElement where
+  fromJSVal = return . fmap HTMLKeygenElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLKeygenElement
+instance IsElement HTMLKeygenElement
+instance IsNode HTMLKeygenElement
+instance IsEventTarget HTMLKeygenElement
+instance IsSlotable HTMLKeygenElement
+instance IsParentNode HTMLKeygenElement
+instance IsNonDocumentTypeChildNode HTMLKeygenElement
+instance IsDocumentAndElementEventHandlers HTMLKeygenElement
+instance IsChildNode HTMLKeygenElement
+instance IsAnimatable HTMLKeygenElement
+instance IsGlobalEventHandlers HTMLKeygenElement
+instance IsElementCSSInlineStyle HTMLKeygenElement
+instance IsGObject HTMLKeygenElement where
+  typeGType _ = gTypeHTMLKeygenElement
+  {-# INLINE typeGType #-}
+noHTMLKeygenElement :: Maybe HTMLKeygenElement
+noHTMLKeygenElement = Nothing
+{-# INLINE noHTMLKeygenElement #-}
+
+foreign import javascript unsafe "window[\"HTMLKeygenElement\"]" gTypeHTMLKeygenElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLLIElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLIElement Mozilla HTMLLIElement documentation>
+newtype HTMLLIElement = HTMLLIElement { unHTMLLIElement :: JSVal }
+
+instance Eq (HTMLLIElement) where
+  (HTMLLIElement a) == (HTMLLIElement b) = js_eq a b
+
+instance PToJSVal HTMLLIElement where
+  pToJSVal = unHTMLLIElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLIElement where
+  pFromJSVal = HTMLLIElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLIElement where
+  toJSVal = return . unHTMLLIElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLIElement where
+  fromJSVal = return . fmap HTMLLIElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLLIElement
+instance IsElement HTMLLIElement
+instance IsNode HTMLLIElement
+instance IsEventTarget HTMLLIElement
+instance IsSlotable HTMLLIElement
+instance IsParentNode HTMLLIElement
+instance IsNonDocumentTypeChildNode HTMLLIElement
+instance IsDocumentAndElementEventHandlers HTMLLIElement
+instance IsChildNode HTMLLIElement
+instance IsAnimatable HTMLLIElement
+instance IsGlobalEventHandlers HTMLLIElement
+instance IsElementCSSInlineStyle HTMLLIElement
+instance IsGObject HTMLLIElement where
+  typeGType _ = gTypeHTMLLIElement
+  {-# INLINE typeGType #-}
+noHTMLLIElement :: Maybe HTMLLIElement
+noHTMLLIElement = Nothing
+{-# INLINE noHTMLLIElement #-}
+
+foreign import javascript unsafe "window[\"HTMLLIElement\"]" gTypeHTMLLIElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLLabelElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLabelElement Mozilla HTMLLabelElement documentation>
+newtype HTMLLabelElement = HTMLLabelElement { unHTMLLabelElement :: JSVal }
+
+instance Eq (HTMLLabelElement) where
+  (HTMLLabelElement a) == (HTMLLabelElement b) = js_eq a b
+
+instance PToJSVal HTMLLabelElement where
+  pToJSVal = unHTMLLabelElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLabelElement where
+  pFromJSVal = HTMLLabelElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLabelElement where
+  toJSVal = return . unHTMLLabelElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLabelElement where
+  fromJSVal = return . fmap HTMLLabelElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLLabelElement
+instance IsElement HTMLLabelElement
+instance IsNode HTMLLabelElement
+instance IsEventTarget HTMLLabelElement
+instance IsSlotable HTMLLabelElement
+instance IsParentNode HTMLLabelElement
+instance IsNonDocumentTypeChildNode HTMLLabelElement
+instance IsDocumentAndElementEventHandlers HTMLLabelElement
+instance IsChildNode HTMLLabelElement
+instance IsAnimatable HTMLLabelElement
+instance IsGlobalEventHandlers HTMLLabelElement
+instance IsElementCSSInlineStyle HTMLLabelElement
+instance IsGObject HTMLLabelElement where
+  typeGType _ = gTypeHTMLLabelElement
+  {-# INLINE typeGType #-}
+noHTMLLabelElement :: Maybe HTMLLabelElement
+noHTMLLabelElement = Nothing
+{-# INLINE noHTMLLabelElement #-}
+
+foreign import javascript unsafe "window[\"HTMLLabelElement\"]" gTypeHTMLLabelElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLLegendElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLegendElement Mozilla HTMLLegendElement documentation>
+newtype HTMLLegendElement = HTMLLegendElement { unHTMLLegendElement :: JSVal }
+
+instance Eq (HTMLLegendElement) where
+  (HTMLLegendElement a) == (HTMLLegendElement b) = js_eq a b
+
+instance PToJSVal HTMLLegendElement where
+  pToJSVal = unHTMLLegendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLegendElement where
+  pFromJSVal = HTMLLegendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLegendElement where
+  toJSVal = return . unHTMLLegendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLegendElement where
+  fromJSVal = return . fmap HTMLLegendElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLLegendElement
+instance IsElement HTMLLegendElement
+instance IsNode HTMLLegendElement
+instance IsEventTarget HTMLLegendElement
+instance IsSlotable HTMLLegendElement
+instance IsParentNode HTMLLegendElement
+instance IsNonDocumentTypeChildNode HTMLLegendElement
+instance IsDocumentAndElementEventHandlers HTMLLegendElement
+instance IsChildNode HTMLLegendElement
+instance IsAnimatable HTMLLegendElement
+instance IsGlobalEventHandlers HTMLLegendElement
+instance IsElementCSSInlineStyle HTMLLegendElement
+instance IsGObject HTMLLegendElement where
+  typeGType _ = gTypeHTMLLegendElement
+  {-# INLINE typeGType #-}
+noHTMLLegendElement :: Maybe HTMLLegendElement
+noHTMLLegendElement = Nothing
+{-# INLINE noHTMLLegendElement #-}
+
+foreign import javascript unsafe "window[\"HTMLLegendElement\"]" gTypeHTMLLegendElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLLinkElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLLinkElement Mozilla HTMLLinkElement documentation>
+newtype HTMLLinkElement = HTMLLinkElement { unHTMLLinkElement :: JSVal }
+
+instance Eq (HTMLLinkElement) where
+  (HTMLLinkElement a) == (HTMLLinkElement b) = js_eq a b
+
+instance PToJSVal HTMLLinkElement where
+  pToJSVal = unHTMLLinkElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLLinkElement where
+  pFromJSVal = HTMLLinkElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLLinkElement where
+  toJSVal = return . unHTMLLinkElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLLinkElement where
+  fromJSVal = return . fmap HTMLLinkElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLLinkElement
+instance IsElement HTMLLinkElement
+instance IsNode HTMLLinkElement
+instance IsEventTarget HTMLLinkElement
+instance IsSlotable HTMLLinkElement
+instance IsParentNode HTMLLinkElement
+instance IsNonDocumentTypeChildNode HTMLLinkElement
+instance IsDocumentAndElementEventHandlers HTMLLinkElement
+instance IsChildNode HTMLLinkElement
+instance IsAnimatable HTMLLinkElement
+instance IsGlobalEventHandlers HTMLLinkElement
+instance IsElementCSSInlineStyle HTMLLinkElement
+instance IsGObject HTMLLinkElement where
+  typeGType _ = gTypeHTMLLinkElement
+  {-# INLINE typeGType #-}
+noHTMLLinkElement :: Maybe HTMLLinkElement
+noHTMLLinkElement = Nothing
+{-# INLINE noHTMLLinkElement #-}
+
+foreign import javascript unsafe "window[\"HTMLLinkElement\"]" gTypeHTMLLinkElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMapElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMapElement Mozilla HTMLMapElement documentation>
+newtype HTMLMapElement = HTMLMapElement { unHTMLMapElement :: JSVal }
+
+instance Eq (HTMLMapElement) where
+  (HTMLMapElement a) == (HTMLMapElement b) = js_eq a b
+
+instance PToJSVal HTMLMapElement where
+  pToJSVal = unHTMLMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMapElement where
+  pFromJSVal = HTMLMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMapElement where
+  toJSVal = return . unHTMLMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMapElement where
+  fromJSVal = return . fmap HTMLMapElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLMapElement
+instance IsElement HTMLMapElement
+instance IsNode HTMLMapElement
+instance IsEventTarget HTMLMapElement
+instance IsSlotable HTMLMapElement
+instance IsParentNode HTMLMapElement
+instance IsNonDocumentTypeChildNode HTMLMapElement
+instance IsDocumentAndElementEventHandlers HTMLMapElement
+instance IsChildNode HTMLMapElement
+instance IsAnimatable HTMLMapElement
+instance IsGlobalEventHandlers HTMLMapElement
+instance IsElementCSSInlineStyle HTMLMapElement
+instance IsGObject HTMLMapElement where
+  typeGType _ = gTypeHTMLMapElement
+  {-# INLINE typeGType #-}
+noHTMLMapElement :: Maybe HTMLMapElement
+noHTMLMapElement = Nothing
+{-# INLINE noHTMLMapElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMapElement\"]" gTypeHTMLMapElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMarqueeElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMarqueeElement Mozilla HTMLMarqueeElement documentation>
+newtype HTMLMarqueeElement = HTMLMarqueeElement { unHTMLMarqueeElement :: JSVal }
+
+instance Eq (HTMLMarqueeElement) where
+  (HTMLMarqueeElement a) == (HTMLMarqueeElement b) = js_eq a b
+
+instance PToJSVal HTMLMarqueeElement where
+  pToJSVal = unHTMLMarqueeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMarqueeElement where
+  pFromJSVal = HTMLMarqueeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMarqueeElement where
+  toJSVal = return . unHTMLMarqueeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMarqueeElement where
+  fromJSVal = return . fmap HTMLMarqueeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLMarqueeElement
+instance IsElement HTMLMarqueeElement
+instance IsNode HTMLMarqueeElement
+instance IsEventTarget HTMLMarqueeElement
+instance IsSlotable HTMLMarqueeElement
+instance IsParentNode HTMLMarqueeElement
+instance IsNonDocumentTypeChildNode HTMLMarqueeElement
+instance IsDocumentAndElementEventHandlers HTMLMarqueeElement
+instance IsChildNode HTMLMarqueeElement
+instance IsAnimatable HTMLMarqueeElement
+instance IsGlobalEventHandlers HTMLMarqueeElement
+instance IsElementCSSInlineStyle HTMLMarqueeElement
+instance IsGObject HTMLMarqueeElement where
+  typeGType _ = gTypeHTMLMarqueeElement
+  {-# INLINE typeGType #-}
+noHTMLMarqueeElement :: Maybe HTMLMarqueeElement
+noHTMLMarqueeElement = Nothing
+{-# INLINE noHTMLMarqueeElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMarqueeElement\"]" gTypeHTMLMarqueeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMediaElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement Mozilla HTMLMediaElement documentation>
+newtype HTMLMediaElement = HTMLMediaElement { unHTMLMediaElement :: JSVal }
+
+instance Eq (HTMLMediaElement) where
+  (HTMLMediaElement a) == (HTMLMediaElement b) = js_eq a b
+
+instance PToJSVal HTMLMediaElement where
+  pToJSVal = unHTMLMediaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMediaElement where
+  pFromJSVal = HTMLMediaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMediaElement where
+  toJSVal = return . unHTMLMediaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMediaElement where
+  fromJSVal = return . fmap HTMLMediaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsHTMLElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsHTMLMediaElement o
+toHTMLMediaElement :: IsHTMLMediaElement o => o -> HTMLMediaElement
+toHTMLMediaElement = HTMLMediaElement . coerce
+
+instance IsHTMLMediaElement HTMLMediaElement
+instance IsHTMLElement HTMLMediaElement
+instance IsElement HTMLMediaElement
+instance IsNode HTMLMediaElement
+instance IsEventTarget HTMLMediaElement
+instance IsSlotable HTMLMediaElement
+instance IsParentNode HTMLMediaElement
+instance IsNonDocumentTypeChildNode HTMLMediaElement
+instance IsDocumentAndElementEventHandlers HTMLMediaElement
+instance IsChildNode HTMLMediaElement
+instance IsAnimatable HTMLMediaElement
+instance IsGlobalEventHandlers HTMLMediaElement
+instance IsElementCSSInlineStyle HTMLMediaElement
+instance IsGObject HTMLMediaElement where
+  typeGType _ = gTypeHTMLMediaElement
+  {-# INLINE typeGType #-}
+noHTMLMediaElement :: Maybe HTMLMediaElement
+noHTMLMediaElement = Nothing
+{-# INLINE noHTMLMediaElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMediaElement\"]" gTypeHTMLMediaElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMenuElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMenuElement Mozilla HTMLMenuElement documentation>
+newtype HTMLMenuElement = HTMLMenuElement { unHTMLMenuElement :: JSVal }
+
+instance Eq (HTMLMenuElement) where
+  (HTMLMenuElement a) == (HTMLMenuElement b) = js_eq a b
+
+instance PToJSVal HTMLMenuElement where
+  pToJSVal = unHTMLMenuElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMenuElement where
+  pFromJSVal = HTMLMenuElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMenuElement where
+  toJSVal = return . unHTMLMenuElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMenuElement where
+  fromJSVal = return . fmap HTMLMenuElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLMenuElement
+instance IsElement HTMLMenuElement
+instance IsNode HTMLMenuElement
+instance IsEventTarget HTMLMenuElement
+instance IsSlotable HTMLMenuElement
+instance IsParentNode HTMLMenuElement
+instance IsNonDocumentTypeChildNode HTMLMenuElement
+instance IsDocumentAndElementEventHandlers HTMLMenuElement
+instance IsChildNode HTMLMenuElement
+instance IsAnimatable HTMLMenuElement
+instance IsGlobalEventHandlers HTMLMenuElement
+instance IsElementCSSInlineStyle HTMLMenuElement
+instance IsGObject HTMLMenuElement where
+  typeGType _ = gTypeHTMLMenuElement
+  {-# INLINE typeGType #-}
+noHTMLMenuElement :: Maybe HTMLMenuElement
+noHTMLMenuElement = Nothing
+{-# INLINE noHTMLMenuElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMenuElement\"]" gTypeHTMLMenuElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMetaElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMetaElement Mozilla HTMLMetaElement documentation>
+newtype HTMLMetaElement = HTMLMetaElement { unHTMLMetaElement :: JSVal }
+
+instance Eq (HTMLMetaElement) where
+  (HTMLMetaElement a) == (HTMLMetaElement b) = js_eq a b
+
+instance PToJSVal HTMLMetaElement where
+  pToJSVal = unHTMLMetaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMetaElement where
+  pFromJSVal = HTMLMetaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMetaElement where
+  toJSVal = return . unHTMLMetaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMetaElement where
+  fromJSVal = return . fmap HTMLMetaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLMetaElement
+instance IsElement HTMLMetaElement
+instance IsNode HTMLMetaElement
+instance IsEventTarget HTMLMetaElement
+instance IsSlotable HTMLMetaElement
+instance IsParentNode HTMLMetaElement
+instance IsNonDocumentTypeChildNode HTMLMetaElement
+instance IsDocumentAndElementEventHandlers HTMLMetaElement
+instance IsChildNode HTMLMetaElement
+instance IsAnimatable HTMLMetaElement
+instance IsGlobalEventHandlers HTMLMetaElement
+instance IsElementCSSInlineStyle HTMLMetaElement
+instance IsGObject HTMLMetaElement where
+  typeGType _ = gTypeHTMLMetaElement
+  {-# INLINE typeGType #-}
+noHTMLMetaElement :: Maybe HTMLMetaElement
+noHTMLMetaElement = Nothing
+{-# INLINE noHTMLMetaElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMetaElement\"]" gTypeHTMLMetaElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLMeterElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLMeterElement Mozilla HTMLMeterElement documentation>
+newtype HTMLMeterElement = HTMLMeterElement { unHTMLMeterElement :: JSVal }
+
+instance Eq (HTMLMeterElement) where
+  (HTMLMeterElement a) == (HTMLMeterElement b) = js_eq a b
+
+instance PToJSVal HTMLMeterElement where
+  pToJSVal = unHTMLMeterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLMeterElement where
+  pFromJSVal = HTMLMeterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLMeterElement where
+  toJSVal = return . unHTMLMeterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLMeterElement where
+  fromJSVal = return . fmap HTMLMeterElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLMeterElement
+instance IsElement HTMLMeterElement
+instance IsNode HTMLMeterElement
+instance IsEventTarget HTMLMeterElement
+instance IsSlotable HTMLMeterElement
+instance IsParentNode HTMLMeterElement
+instance IsNonDocumentTypeChildNode HTMLMeterElement
+instance IsDocumentAndElementEventHandlers HTMLMeterElement
+instance IsChildNode HTMLMeterElement
+instance IsAnimatable HTMLMeterElement
+instance IsGlobalEventHandlers HTMLMeterElement
+instance IsElementCSSInlineStyle HTMLMeterElement
+instance IsGObject HTMLMeterElement where
+  typeGType _ = gTypeHTMLMeterElement
+  {-# INLINE typeGType #-}
+noHTMLMeterElement :: Maybe HTMLMeterElement
+noHTMLMeterElement = Nothing
+{-# INLINE noHTMLMeterElement #-}
+
+foreign import javascript unsafe "window[\"HTMLMeterElement\"]" gTypeHTMLMeterElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLModElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLModElement Mozilla HTMLModElement documentation>
+newtype HTMLModElement = HTMLModElement { unHTMLModElement :: JSVal }
+
+instance Eq (HTMLModElement) where
+  (HTMLModElement a) == (HTMLModElement b) = js_eq a b
+
+instance PToJSVal HTMLModElement where
+  pToJSVal = unHTMLModElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLModElement where
+  pFromJSVal = HTMLModElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLModElement where
+  toJSVal = return . unHTMLModElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLModElement where
+  fromJSVal = return . fmap HTMLModElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLModElement
+instance IsElement HTMLModElement
+instance IsNode HTMLModElement
+instance IsEventTarget HTMLModElement
+instance IsSlotable HTMLModElement
+instance IsParentNode HTMLModElement
+instance IsNonDocumentTypeChildNode HTMLModElement
+instance IsDocumentAndElementEventHandlers HTMLModElement
+instance IsChildNode HTMLModElement
+instance IsAnimatable HTMLModElement
+instance IsGlobalEventHandlers HTMLModElement
+instance IsElementCSSInlineStyle HTMLModElement
+instance IsGObject HTMLModElement where
+  typeGType _ = gTypeHTMLModElement
+  {-# INLINE typeGType #-}
+noHTMLModElement :: Maybe HTMLModElement
+noHTMLModElement = Nothing
+{-# INLINE noHTMLModElement #-}
+
+foreign import javascript unsafe "window[\"HTMLModElement\"]" gTypeHTMLModElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLOListElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOListElement Mozilla HTMLOListElement documentation>
+newtype HTMLOListElement = HTMLOListElement { unHTMLOListElement :: JSVal }
+
+instance Eq (HTMLOListElement) where
+  (HTMLOListElement a) == (HTMLOListElement b) = js_eq a b
+
+instance PToJSVal HTMLOListElement where
+  pToJSVal = unHTMLOListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOListElement where
+  pFromJSVal = HTMLOListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOListElement where
+  toJSVal = return . unHTMLOListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOListElement where
+  fromJSVal = return . fmap HTMLOListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLOListElement
+instance IsElement HTMLOListElement
+instance IsNode HTMLOListElement
+instance IsEventTarget HTMLOListElement
+instance IsSlotable HTMLOListElement
+instance IsParentNode HTMLOListElement
+instance IsNonDocumentTypeChildNode HTMLOListElement
+instance IsDocumentAndElementEventHandlers HTMLOListElement
+instance IsChildNode HTMLOListElement
+instance IsAnimatable HTMLOListElement
+instance IsGlobalEventHandlers HTMLOListElement
+instance IsElementCSSInlineStyle HTMLOListElement
+instance IsGObject HTMLOListElement where
+  typeGType _ = gTypeHTMLOListElement
+  {-# INLINE typeGType #-}
+noHTMLOListElement :: Maybe HTMLOListElement
+noHTMLOListElement = Nothing
+{-# INLINE noHTMLOListElement #-}
+
+foreign import javascript unsafe "window[\"HTMLOListElement\"]" gTypeHTMLOListElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLObjectElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLObjectElement Mozilla HTMLObjectElement documentation>
+newtype HTMLObjectElement = HTMLObjectElement { unHTMLObjectElement :: JSVal }
+
+instance Eq (HTMLObjectElement) where
+  (HTMLObjectElement a) == (HTMLObjectElement b) = js_eq a b
+
+instance PToJSVal HTMLObjectElement where
+  pToJSVal = unHTMLObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLObjectElement where
+  pFromJSVal = HTMLObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLObjectElement where
+  toJSVal = return . unHTMLObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLObjectElement where
+  fromJSVal = return . fmap HTMLObjectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLObjectElement
+instance IsElement HTMLObjectElement
+instance IsNode HTMLObjectElement
+instance IsEventTarget HTMLObjectElement
+instance IsSlotable HTMLObjectElement
+instance IsParentNode HTMLObjectElement
+instance IsNonDocumentTypeChildNode HTMLObjectElement
+instance IsDocumentAndElementEventHandlers HTMLObjectElement
+instance IsChildNode HTMLObjectElement
+instance IsAnimatable HTMLObjectElement
+instance IsGlobalEventHandlers HTMLObjectElement
+instance IsElementCSSInlineStyle HTMLObjectElement
+instance IsGObject HTMLObjectElement where
+  typeGType _ = gTypeHTMLObjectElement
+  {-# INLINE typeGType #-}
+noHTMLObjectElement :: Maybe HTMLObjectElement
+noHTMLObjectElement = Nothing
+{-# INLINE noHTMLObjectElement #-}
+
+foreign import javascript unsafe "window[\"HTMLObjectElement\"]" gTypeHTMLObjectElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLOptGroupElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptGroupElement Mozilla HTMLOptGroupElement documentation>
+newtype HTMLOptGroupElement = HTMLOptGroupElement { unHTMLOptGroupElement :: JSVal }
+
+instance Eq (HTMLOptGroupElement) where
+  (HTMLOptGroupElement a) == (HTMLOptGroupElement b) = js_eq a b
+
+instance PToJSVal HTMLOptGroupElement where
+  pToJSVal = unHTMLOptGroupElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptGroupElement where
+  pFromJSVal = HTMLOptGroupElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptGroupElement where
+  toJSVal = return . unHTMLOptGroupElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptGroupElement where
+  fromJSVal = return . fmap HTMLOptGroupElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLOptGroupElement
+instance IsElement HTMLOptGroupElement
+instance IsNode HTMLOptGroupElement
+instance IsEventTarget HTMLOptGroupElement
+instance IsSlotable HTMLOptGroupElement
+instance IsParentNode HTMLOptGroupElement
+instance IsNonDocumentTypeChildNode HTMLOptGroupElement
+instance IsDocumentAndElementEventHandlers HTMLOptGroupElement
+instance IsChildNode HTMLOptGroupElement
+instance IsAnimatable HTMLOptGroupElement
+instance IsGlobalEventHandlers HTMLOptGroupElement
+instance IsElementCSSInlineStyle HTMLOptGroupElement
+instance IsGObject HTMLOptGroupElement where
+  typeGType _ = gTypeHTMLOptGroupElement
+  {-# INLINE typeGType #-}
+noHTMLOptGroupElement :: Maybe HTMLOptGroupElement
+noHTMLOptGroupElement = Nothing
+{-# INLINE noHTMLOptGroupElement #-}
+
+foreign import javascript unsafe "window[\"HTMLOptGroupElement\"]" gTypeHTMLOptGroupElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLOptionElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionElement Mozilla HTMLOptionElement documentation>
+newtype HTMLOptionElement = HTMLOptionElement { unHTMLOptionElement :: JSVal }
+
+instance Eq (HTMLOptionElement) where
+  (HTMLOptionElement a) == (HTMLOptionElement b) = js_eq a b
+
+instance PToJSVal HTMLOptionElement where
+  pToJSVal = unHTMLOptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionElement where
+  pFromJSVal = HTMLOptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionElement where
+  toJSVal = return . unHTMLOptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionElement where
+  fromJSVal = return . fmap HTMLOptionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLOptionElement
+instance IsElement HTMLOptionElement
+instance IsNode HTMLOptionElement
+instance IsEventTarget HTMLOptionElement
+instance IsSlotable HTMLOptionElement
+instance IsParentNode HTMLOptionElement
+instance IsNonDocumentTypeChildNode HTMLOptionElement
+instance IsDocumentAndElementEventHandlers HTMLOptionElement
+instance IsChildNode HTMLOptionElement
+instance IsAnimatable HTMLOptionElement
+instance IsGlobalEventHandlers HTMLOptionElement
+instance IsElementCSSInlineStyle HTMLOptionElement
+instance IsGObject HTMLOptionElement where
+  typeGType _ = gTypeHTMLOptionElement
+  {-# INLINE typeGType #-}
+noHTMLOptionElement :: Maybe HTMLOptionElement
+noHTMLOptionElement = Nothing
+{-# INLINE noHTMLOptionElement #-}
+
+foreign import javascript unsafe "window[\"HTMLOptionElement\"]" gTypeHTMLOptionElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLOptionsCollection".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLCollection"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOptionsCollection Mozilla HTMLOptionsCollection documentation>
+newtype HTMLOptionsCollection = HTMLOptionsCollection { unHTMLOptionsCollection :: JSVal }
+
+instance Eq (HTMLOptionsCollection) where
+  (HTMLOptionsCollection a) == (HTMLOptionsCollection b) = js_eq a b
+
+instance PToJSVal HTMLOptionsCollection where
+  pToJSVal = unHTMLOptionsCollection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOptionsCollection where
+  pFromJSVal = HTMLOptionsCollection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOptionsCollection where
+  toJSVal = return . unHTMLOptionsCollection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOptionsCollection where
+  fromJSVal = return . fmap HTMLOptionsCollection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLCollection HTMLOptionsCollection
+instance IsGObject HTMLOptionsCollection where
+  typeGType _ = gTypeHTMLOptionsCollection
+  {-# INLINE typeGType #-}
+noHTMLOptionsCollection :: Maybe HTMLOptionsCollection
+noHTMLOptionsCollection = Nothing
+{-# INLINE noHTMLOptionsCollection #-}
+
+foreign import javascript unsafe "window[\"HTMLOptionsCollection\"]" gTypeHTMLOptionsCollection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLOutputElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLOutputElement Mozilla HTMLOutputElement documentation>
+newtype HTMLOutputElement = HTMLOutputElement { unHTMLOutputElement :: JSVal }
+
+instance Eq (HTMLOutputElement) where
+  (HTMLOutputElement a) == (HTMLOutputElement b) = js_eq a b
+
+instance PToJSVal HTMLOutputElement where
+  pToJSVal = unHTMLOutputElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLOutputElement where
+  pFromJSVal = HTMLOutputElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLOutputElement where
+  toJSVal = return . unHTMLOutputElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLOutputElement where
+  fromJSVal = return . fmap HTMLOutputElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLOutputElement
+instance IsElement HTMLOutputElement
+instance IsNode HTMLOutputElement
+instance IsEventTarget HTMLOutputElement
+instance IsSlotable HTMLOutputElement
+instance IsParentNode HTMLOutputElement
+instance IsNonDocumentTypeChildNode HTMLOutputElement
+instance IsDocumentAndElementEventHandlers HTMLOutputElement
+instance IsChildNode HTMLOutputElement
+instance IsAnimatable HTMLOutputElement
+instance IsGlobalEventHandlers HTMLOutputElement
+instance IsElementCSSInlineStyle HTMLOutputElement
+instance IsGObject HTMLOutputElement where
+  typeGType _ = gTypeHTMLOutputElement
+  {-# INLINE typeGType #-}
+noHTMLOutputElement :: Maybe HTMLOutputElement
+noHTMLOutputElement = Nothing
+{-# INLINE noHTMLOutputElement #-}
+
+foreign import javascript unsafe "window[\"HTMLOutputElement\"]" gTypeHTMLOutputElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLParagraphElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParagraphElement Mozilla HTMLParagraphElement documentation>
+newtype HTMLParagraphElement = HTMLParagraphElement { unHTMLParagraphElement :: JSVal }
+
+instance Eq (HTMLParagraphElement) where
+  (HTMLParagraphElement a) == (HTMLParagraphElement b) = js_eq a b
+
+instance PToJSVal HTMLParagraphElement where
+  pToJSVal = unHTMLParagraphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParagraphElement where
+  pFromJSVal = HTMLParagraphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParagraphElement where
+  toJSVal = return . unHTMLParagraphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParagraphElement where
+  fromJSVal = return . fmap HTMLParagraphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLParagraphElement
+instance IsElement HTMLParagraphElement
+instance IsNode HTMLParagraphElement
+instance IsEventTarget HTMLParagraphElement
+instance IsSlotable HTMLParagraphElement
+instance IsParentNode HTMLParagraphElement
+instance IsNonDocumentTypeChildNode HTMLParagraphElement
+instance IsDocumentAndElementEventHandlers HTMLParagraphElement
+instance IsChildNode HTMLParagraphElement
+instance IsAnimatable HTMLParagraphElement
+instance IsGlobalEventHandlers HTMLParagraphElement
+instance IsElementCSSInlineStyle HTMLParagraphElement
+instance IsGObject HTMLParagraphElement where
+  typeGType _ = gTypeHTMLParagraphElement
+  {-# INLINE typeGType #-}
+noHTMLParagraphElement :: Maybe HTMLParagraphElement
+noHTMLParagraphElement = Nothing
+{-# INLINE noHTMLParagraphElement #-}
+
+foreign import javascript unsafe "window[\"HTMLParagraphElement\"]" gTypeHTMLParagraphElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLParamElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLParamElement Mozilla HTMLParamElement documentation>
+newtype HTMLParamElement = HTMLParamElement { unHTMLParamElement :: JSVal }
+
+instance Eq (HTMLParamElement) where
+  (HTMLParamElement a) == (HTMLParamElement b) = js_eq a b
+
+instance PToJSVal HTMLParamElement where
+  pToJSVal = unHTMLParamElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLParamElement where
+  pFromJSVal = HTMLParamElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLParamElement where
+  toJSVal = return . unHTMLParamElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLParamElement where
+  fromJSVal = return . fmap HTMLParamElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLParamElement
+instance IsElement HTMLParamElement
+instance IsNode HTMLParamElement
+instance IsEventTarget HTMLParamElement
+instance IsSlotable HTMLParamElement
+instance IsParentNode HTMLParamElement
+instance IsNonDocumentTypeChildNode HTMLParamElement
+instance IsDocumentAndElementEventHandlers HTMLParamElement
+instance IsChildNode HTMLParamElement
+instance IsAnimatable HTMLParamElement
+instance IsGlobalEventHandlers HTMLParamElement
+instance IsElementCSSInlineStyle HTMLParamElement
+instance IsGObject HTMLParamElement where
+  typeGType _ = gTypeHTMLParamElement
+  {-# INLINE typeGType #-}
+noHTMLParamElement :: Maybe HTMLParamElement
+noHTMLParamElement = Nothing
+{-# INLINE noHTMLParamElement #-}
+
+foreign import javascript unsafe "window[\"HTMLParamElement\"]" gTypeHTMLParamElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLPictureElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPictureElement Mozilla HTMLPictureElement documentation>
+newtype HTMLPictureElement = HTMLPictureElement { unHTMLPictureElement :: JSVal }
+
+instance Eq (HTMLPictureElement) where
+  (HTMLPictureElement a) == (HTMLPictureElement b) = js_eq a b
+
+instance PToJSVal HTMLPictureElement where
+  pToJSVal = unHTMLPictureElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLPictureElement where
+  pFromJSVal = HTMLPictureElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLPictureElement where
+  toJSVal = return . unHTMLPictureElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLPictureElement where
+  fromJSVal = return . fmap HTMLPictureElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLPictureElement
+instance IsElement HTMLPictureElement
+instance IsNode HTMLPictureElement
+instance IsEventTarget HTMLPictureElement
+instance IsSlotable HTMLPictureElement
+instance IsParentNode HTMLPictureElement
+instance IsNonDocumentTypeChildNode HTMLPictureElement
+instance IsDocumentAndElementEventHandlers HTMLPictureElement
+instance IsChildNode HTMLPictureElement
+instance IsAnimatable HTMLPictureElement
+instance IsGlobalEventHandlers HTMLPictureElement
+instance IsElementCSSInlineStyle HTMLPictureElement
+instance IsGObject HTMLPictureElement where
+  typeGType _ = gTypeHTMLPictureElement
+  {-# INLINE typeGType #-}
+noHTMLPictureElement :: Maybe HTMLPictureElement
+noHTMLPictureElement = Nothing
+{-# INLINE noHTMLPictureElement #-}
+
+foreign import javascript unsafe "window[\"HTMLPictureElement\"]" gTypeHTMLPictureElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLPreElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLPreElement Mozilla HTMLPreElement documentation>
+newtype HTMLPreElement = HTMLPreElement { unHTMLPreElement :: JSVal }
+
+instance Eq (HTMLPreElement) where
+  (HTMLPreElement a) == (HTMLPreElement b) = js_eq a b
+
+instance PToJSVal HTMLPreElement where
+  pToJSVal = unHTMLPreElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLPreElement where
+  pFromJSVal = HTMLPreElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLPreElement where
+  toJSVal = return . unHTMLPreElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLPreElement where
+  fromJSVal = return . fmap HTMLPreElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLPreElement
+instance IsElement HTMLPreElement
+instance IsNode HTMLPreElement
+instance IsEventTarget HTMLPreElement
+instance IsSlotable HTMLPreElement
+instance IsParentNode HTMLPreElement
+instance IsNonDocumentTypeChildNode HTMLPreElement
+instance IsDocumentAndElementEventHandlers HTMLPreElement
+instance IsChildNode HTMLPreElement
+instance IsAnimatable HTMLPreElement
+instance IsGlobalEventHandlers HTMLPreElement
+instance IsElementCSSInlineStyle HTMLPreElement
+instance IsGObject HTMLPreElement where
+  typeGType _ = gTypeHTMLPreElement
+  {-# INLINE typeGType #-}
+noHTMLPreElement :: Maybe HTMLPreElement
+noHTMLPreElement = Nothing
+{-# INLINE noHTMLPreElement #-}
+
+foreign import javascript unsafe "window[\"HTMLPreElement\"]" gTypeHTMLPreElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLProgressElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLProgressElement Mozilla HTMLProgressElement documentation>
+newtype HTMLProgressElement = HTMLProgressElement { unHTMLProgressElement :: JSVal }
+
+instance Eq (HTMLProgressElement) where
+  (HTMLProgressElement a) == (HTMLProgressElement b) = js_eq a b
+
+instance PToJSVal HTMLProgressElement where
+  pToJSVal = unHTMLProgressElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLProgressElement where
+  pFromJSVal = HTMLProgressElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLProgressElement where
+  toJSVal = return . unHTMLProgressElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLProgressElement where
+  fromJSVal = return . fmap HTMLProgressElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLProgressElement
+instance IsElement HTMLProgressElement
+instance IsNode HTMLProgressElement
+instance IsEventTarget HTMLProgressElement
+instance IsSlotable HTMLProgressElement
+instance IsParentNode HTMLProgressElement
+instance IsNonDocumentTypeChildNode HTMLProgressElement
+instance IsDocumentAndElementEventHandlers HTMLProgressElement
+instance IsChildNode HTMLProgressElement
+instance IsAnimatable HTMLProgressElement
+instance IsGlobalEventHandlers HTMLProgressElement
+instance IsElementCSSInlineStyle HTMLProgressElement
+instance IsGObject HTMLProgressElement where
+  typeGType _ = gTypeHTMLProgressElement
+  {-# INLINE typeGType #-}
+noHTMLProgressElement :: Maybe HTMLProgressElement
+noHTMLProgressElement = Nothing
+{-# INLINE noHTMLProgressElement #-}
+
+foreign import javascript unsafe "window[\"HTMLProgressElement\"]" gTypeHTMLProgressElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLQuoteElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLQuoteElement Mozilla HTMLQuoteElement documentation>
+newtype HTMLQuoteElement = HTMLQuoteElement { unHTMLQuoteElement :: JSVal }
+
+instance Eq (HTMLQuoteElement) where
+  (HTMLQuoteElement a) == (HTMLQuoteElement b) = js_eq a b
+
+instance PToJSVal HTMLQuoteElement where
+  pToJSVal = unHTMLQuoteElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLQuoteElement where
+  pFromJSVal = HTMLQuoteElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLQuoteElement where
+  toJSVal = return . unHTMLQuoteElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLQuoteElement where
+  fromJSVal = return . fmap HTMLQuoteElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLQuoteElement
+instance IsElement HTMLQuoteElement
+instance IsNode HTMLQuoteElement
+instance IsEventTarget HTMLQuoteElement
+instance IsSlotable HTMLQuoteElement
+instance IsParentNode HTMLQuoteElement
+instance IsNonDocumentTypeChildNode HTMLQuoteElement
+instance IsDocumentAndElementEventHandlers HTMLQuoteElement
+instance IsChildNode HTMLQuoteElement
+instance IsAnimatable HTMLQuoteElement
+instance IsGlobalEventHandlers HTMLQuoteElement
+instance IsElementCSSInlineStyle HTMLQuoteElement
+instance IsGObject HTMLQuoteElement where
+  typeGType _ = gTypeHTMLQuoteElement
+  {-# INLINE typeGType #-}
+noHTMLQuoteElement :: Maybe HTMLQuoteElement
+noHTMLQuoteElement = Nothing
+{-# INLINE noHTMLQuoteElement #-}
+
+foreign import javascript unsafe "window[\"HTMLQuoteElement\"]" gTypeHTMLQuoteElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLScriptElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLScriptElement Mozilla HTMLScriptElement documentation>
+newtype HTMLScriptElement = HTMLScriptElement { unHTMLScriptElement :: JSVal }
+
+instance Eq (HTMLScriptElement) where
+  (HTMLScriptElement a) == (HTMLScriptElement b) = js_eq a b
+
+instance PToJSVal HTMLScriptElement where
+  pToJSVal = unHTMLScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLScriptElement where
+  pFromJSVal = HTMLScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLScriptElement where
+  toJSVal = return . unHTMLScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLScriptElement where
+  fromJSVal = return . fmap HTMLScriptElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLScriptElement
+instance IsElement HTMLScriptElement
+instance IsNode HTMLScriptElement
+instance IsEventTarget HTMLScriptElement
+instance IsSlotable HTMLScriptElement
+instance IsParentNode HTMLScriptElement
+instance IsNonDocumentTypeChildNode HTMLScriptElement
+instance IsDocumentAndElementEventHandlers HTMLScriptElement
+instance IsChildNode HTMLScriptElement
+instance IsAnimatable HTMLScriptElement
+instance IsGlobalEventHandlers HTMLScriptElement
+instance IsElementCSSInlineStyle HTMLScriptElement
+instance IsGObject HTMLScriptElement where
+  typeGType _ = gTypeHTMLScriptElement
+  {-# INLINE typeGType #-}
+noHTMLScriptElement :: Maybe HTMLScriptElement
+noHTMLScriptElement = Nothing
+{-# INLINE noHTMLScriptElement #-}
+
+foreign import javascript unsafe "window[\"HTMLScriptElement\"]" gTypeHTMLScriptElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLSelectElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSelectElement Mozilla HTMLSelectElement documentation>
+newtype HTMLSelectElement = HTMLSelectElement { unHTMLSelectElement :: JSVal }
+
+instance Eq (HTMLSelectElement) where
+  (HTMLSelectElement a) == (HTMLSelectElement b) = js_eq a b
+
+instance PToJSVal HTMLSelectElement where
+  pToJSVal = unHTMLSelectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSelectElement where
+  pFromJSVal = HTMLSelectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSelectElement where
+  toJSVal = return . unHTMLSelectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSelectElement where
+  fromJSVal = return . fmap HTMLSelectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLSelectElement
+instance IsElement HTMLSelectElement
+instance IsNode HTMLSelectElement
+instance IsEventTarget HTMLSelectElement
+instance IsSlotable HTMLSelectElement
+instance IsParentNode HTMLSelectElement
+instance IsNonDocumentTypeChildNode HTMLSelectElement
+instance IsDocumentAndElementEventHandlers HTMLSelectElement
+instance IsChildNode HTMLSelectElement
+instance IsAnimatable HTMLSelectElement
+instance IsGlobalEventHandlers HTMLSelectElement
+instance IsElementCSSInlineStyle HTMLSelectElement
+instance IsGObject HTMLSelectElement where
+  typeGType _ = gTypeHTMLSelectElement
+  {-# INLINE typeGType #-}
+noHTMLSelectElement :: Maybe HTMLSelectElement
+noHTMLSelectElement = Nothing
+{-# INLINE noHTMLSelectElement #-}
+
+foreign import javascript unsafe "window[\"HTMLSelectElement\"]" gTypeHTMLSelectElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLSlotElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSlotElement Mozilla HTMLSlotElement documentation>
+newtype HTMLSlotElement = HTMLSlotElement { unHTMLSlotElement :: JSVal }
+
+instance Eq (HTMLSlotElement) where
+  (HTMLSlotElement a) == (HTMLSlotElement b) = js_eq a b
+
+instance PToJSVal HTMLSlotElement where
+  pToJSVal = unHTMLSlotElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSlotElement where
+  pFromJSVal = HTMLSlotElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSlotElement where
+  toJSVal = return . unHTMLSlotElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSlotElement where
+  fromJSVal = return . fmap HTMLSlotElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLSlotElement
+instance IsElement HTMLSlotElement
+instance IsNode HTMLSlotElement
+instance IsEventTarget HTMLSlotElement
+instance IsSlotable HTMLSlotElement
+instance IsParentNode HTMLSlotElement
+instance IsNonDocumentTypeChildNode HTMLSlotElement
+instance IsDocumentAndElementEventHandlers HTMLSlotElement
+instance IsChildNode HTMLSlotElement
+instance IsAnimatable HTMLSlotElement
+instance IsGlobalEventHandlers HTMLSlotElement
+instance IsElementCSSInlineStyle HTMLSlotElement
+instance IsGObject HTMLSlotElement where
+  typeGType _ = gTypeHTMLSlotElement
+  {-# INLINE typeGType #-}
+noHTMLSlotElement :: Maybe HTMLSlotElement
+noHTMLSlotElement = Nothing
+{-# INLINE noHTMLSlotElement #-}
+
+foreign import javascript unsafe "window[\"HTMLSlotElement\"]" gTypeHTMLSlotElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLSourceElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSourceElement Mozilla HTMLSourceElement documentation>
+newtype HTMLSourceElement = HTMLSourceElement { unHTMLSourceElement :: JSVal }
+
+instance Eq (HTMLSourceElement) where
+  (HTMLSourceElement a) == (HTMLSourceElement b) = js_eq a b
+
+instance PToJSVal HTMLSourceElement where
+  pToJSVal = unHTMLSourceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSourceElement where
+  pFromJSVal = HTMLSourceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSourceElement where
+  toJSVal = return . unHTMLSourceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSourceElement where
+  fromJSVal = return . fmap HTMLSourceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLSourceElement
+instance IsElement HTMLSourceElement
+instance IsNode HTMLSourceElement
+instance IsEventTarget HTMLSourceElement
+instance IsSlotable HTMLSourceElement
+instance IsParentNode HTMLSourceElement
+instance IsNonDocumentTypeChildNode HTMLSourceElement
+instance IsDocumentAndElementEventHandlers HTMLSourceElement
+instance IsChildNode HTMLSourceElement
+instance IsAnimatable HTMLSourceElement
+instance IsGlobalEventHandlers HTMLSourceElement
+instance IsElementCSSInlineStyle HTMLSourceElement
+instance IsGObject HTMLSourceElement where
+  typeGType _ = gTypeHTMLSourceElement
+  {-# INLINE typeGType #-}
+noHTMLSourceElement :: Maybe HTMLSourceElement
+noHTMLSourceElement = Nothing
+{-# INLINE noHTMLSourceElement #-}
+
+foreign import javascript unsafe "window[\"HTMLSourceElement\"]" gTypeHTMLSourceElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLSpanElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLSpanElement Mozilla HTMLSpanElement documentation>
+newtype HTMLSpanElement = HTMLSpanElement { unHTMLSpanElement :: JSVal }
+
+instance Eq (HTMLSpanElement) where
+  (HTMLSpanElement a) == (HTMLSpanElement b) = js_eq a b
+
+instance PToJSVal HTMLSpanElement where
+  pToJSVal = unHTMLSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLSpanElement where
+  pFromJSVal = HTMLSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLSpanElement where
+  toJSVal = return . unHTMLSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLSpanElement where
+  fromJSVal = return . fmap HTMLSpanElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLSpanElement
+instance IsElement HTMLSpanElement
+instance IsNode HTMLSpanElement
+instance IsEventTarget HTMLSpanElement
+instance IsSlotable HTMLSpanElement
+instance IsParentNode HTMLSpanElement
+instance IsNonDocumentTypeChildNode HTMLSpanElement
+instance IsDocumentAndElementEventHandlers HTMLSpanElement
+instance IsChildNode HTMLSpanElement
+instance IsAnimatable HTMLSpanElement
+instance IsGlobalEventHandlers HTMLSpanElement
+instance IsElementCSSInlineStyle HTMLSpanElement
+instance IsGObject HTMLSpanElement where
+  typeGType _ = gTypeHTMLSpanElement
+  {-# INLINE typeGType #-}
+noHTMLSpanElement :: Maybe HTMLSpanElement
+noHTMLSpanElement = Nothing
+{-# INLINE noHTMLSpanElement #-}
+
+foreign import javascript unsafe "window[\"HTMLSpanElement\"]" gTypeHTMLSpanElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLStyleElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLStyleElement Mozilla HTMLStyleElement documentation>
+newtype HTMLStyleElement = HTMLStyleElement { unHTMLStyleElement :: JSVal }
+
+instance Eq (HTMLStyleElement) where
+  (HTMLStyleElement a) == (HTMLStyleElement b) = js_eq a b
+
+instance PToJSVal HTMLStyleElement where
+  pToJSVal = unHTMLStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLStyleElement where
+  pFromJSVal = HTMLStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLStyleElement where
+  toJSVal = return . unHTMLStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLStyleElement where
+  fromJSVal = return . fmap HTMLStyleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLStyleElement
+instance IsElement HTMLStyleElement
+instance IsNode HTMLStyleElement
+instance IsEventTarget HTMLStyleElement
+instance IsSlotable HTMLStyleElement
+instance IsParentNode HTMLStyleElement
+instance IsNonDocumentTypeChildNode HTMLStyleElement
+instance IsDocumentAndElementEventHandlers HTMLStyleElement
+instance IsChildNode HTMLStyleElement
+instance IsAnimatable HTMLStyleElement
+instance IsGlobalEventHandlers HTMLStyleElement
+instance IsElementCSSInlineStyle HTMLStyleElement
+instance IsGObject HTMLStyleElement where
+  typeGType _ = gTypeHTMLStyleElement
+  {-# INLINE typeGType #-}
+noHTMLStyleElement :: Maybe HTMLStyleElement
+noHTMLStyleElement = Nothing
+{-# INLINE noHTMLStyleElement #-}
+
+foreign import javascript unsafe "window[\"HTMLStyleElement\"]" gTypeHTMLStyleElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableCaptionElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCaptionElement Mozilla HTMLTableCaptionElement documentation>
+newtype HTMLTableCaptionElement = HTMLTableCaptionElement { unHTMLTableCaptionElement :: JSVal }
+
+instance Eq (HTMLTableCaptionElement) where
+  (HTMLTableCaptionElement a) == (HTMLTableCaptionElement b) = js_eq a b
+
+instance PToJSVal HTMLTableCaptionElement where
+  pToJSVal = unHTMLTableCaptionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCaptionElement where
+  pFromJSVal = HTMLTableCaptionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCaptionElement where
+  toJSVal = return . unHTMLTableCaptionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCaptionElement where
+  fromJSVal = return . fmap HTMLTableCaptionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableCaptionElement
+instance IsElement HTMLTableCaptionElement
+instance IsNode HTMLTableCaptionElement
+instance IsEventTarget HTMLTableCaptionElement
+instance IsSlotable HTMLTableCaptionElement
+instance IsParentNode HTMLTableCaptionElement
+instance IsNonDocumentTypeChildNode HTMLTableCaptionElement
+instance IsDocumentAndElementEventHandlers HTMLTableCaptionElement
+instance IsChildNode HTMLTableCaptionElement
+instance IsAnimatable HTMLTableCaptionElement
+instance IsGlobalEventHandlers HTMLTableCaptionElement
+instance IsElementCSSInlineStyle HTMLTableCaptionElement
+instance IsGObject HTMLTableCaptionElement where
+  typeGType _ = gTypeHTMLTableCaptionElement
+  {-# INLINE typeGType #-}
+noHTMLTableCaptionElement :: Maybe HTMLTableCaptionElement
+noHTMLTableCaptionElement = Nothing
+{-# INLINE noHTMLTableCaptionElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableCaptionElement\"]" gTypeHTMLTableCaptionElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableCellElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableCellElement Mozilla HTMLTableCellElement documentation>
+newtype HTMLTableCellElement = HTMLTableCellElement { unHTMLTableCellElement :: JSVal }
+
+instance Eq (HTMLTableCellElement) where
+  (HTMLTableCellElement a) == (HTMLTableCellElement b) = js_eq a b
+
+instance PToJSVal HTMLTableCellElement where
+  pToJSVal = unHTMLTableCellElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableCellElement where
+  pFromJSVal = HTMLTableCellElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableCellElement where
+  toJSVal = return . unHTMLTableCellElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableCellElement where
+  fromJSVal = return . fmap HTMLTableCellElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableCellElement
+instance IsElement HTMLTableCellElement
+instance IsNode HTMLTableCellElement
+instance IsEventTarget HTMLTableCellElement
+instance IsSlotable HTMLTableCellElement
+instance IsParentNode HTMLTableCellElement
+instance IsNonDocumentTypeChildNode HTMLTableCellElement
+instance IsDocumentAndElementEventHandlers HTMLTableCellElement
+instance IsChildNode HTMLTableCellElement
+instance IsAnimatable HTMLTableCellElement
+instance IsGlobalEventHandlers HTMLTableCellElement
+instance IsElementCSSInlineStyle HTMLTableCellElement
+instance IsGObject HTMLTableCellElement where
+  typeGType _ = gTypeHTMLTableCellElement
+  {-# INLINE typeGType #-}
+noHTMLTableCellElement :: Maybe HTMLTableCellElement
+noHTMLTableCellElement = Nothing
+{-# INLINE noHTMLTableCellElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableCellElement\"]" gTypeHTMLTableCellElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableColElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableColElement Mozilla HTMLTableColElement documentation>
+newtype HTMLTableColElement = HTMLTableColElement { unHTMLTableColElement :: JSVal }
+
+instance Eq (HTMLTableColElement) where
+  (HTMLTableColElement a) == (HTMLTableColElement b) = js_eq a b
+
+instance PToJSVal HTMLTableColElement where
+  pToJSVal = unHTMLTableColElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableColElement where
+  pFromJSVal = HTMLTableColElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableColElement where
+  toJSVal = return . unHTMLTableColElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableColElement where
+  fromJSVal = return . fmap HTMLTableColElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableColElement
+instance IsElement HTMLTableColElement
+instance IsNode HTMLTableColElement
+instance IsEventTarget HTMLTableColElement
+instance IsSlotable HTMLTableColElement
+instance IsParentNode HTMLTableColElement
+instance IsNonDocumentTypeChildNode HTMLTableColElement
+instance IsDocumentAndElementEventHandlers HTMLTableColElement
+instance IsChildNode HTMLTableColElement
+instance IsAnimatable HTMLTableColElement
+instance IsGlobalEventHandlers HTMLTableColElement
+instance IsElementCSSInlineStyle HTMLTableColElement
+instance IsGObject HTMLTableColElement where
+  typeGType _ = gTypeHTMLTableColElement
+  {-# INLINE typeGType #-}
+noHTMLTableColElement :: Maybe HTMLTableColElement
+noHTMLTableColElement = Nothing
+{-# INLINE noHTMLTableColElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableColElement\"]" gTypeHTMLTableColElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableElement Mozilla HTMLTableElement documentation>
+newtype HTMLTableElement = HTMLTableElement { unHTMLTableElement :: JSVal }
+
+instance Eq (HTMLTableElement) where
+  (HTMLTableElement a) == (HTMLTableElement b) = js_eq a b
+
+instance PToJSVal HTMLTableElement where
+  pToJSVal = unHTMLTableElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableElement where
+  pFromJSVal = HTMLTableElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableElement where
+  toJSVal = return . unHTMLTableElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableElement where
+  fromJSVal = return . fmap HTMLTableElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableElement
+instance IsElement HTMLTableElement
+instance IsNode HTMLTableElement
+instance IsEventTarget HTMLTableElement
+instance IsSlotable HTMLTableElement
+instance IsParentNode HTMLTableElement
+instance IsNonDocumentTypeChildNode HTMLTableElement
+instance IsDocumentAndElementEventHandlers HTMLTableElement
+instance IsChildNode HTMLTableElement
+instance IsAnimatable HTMLTableElement
+instance IsGlobalEventHandlers HTMLTableElement
+instance IsElementCSSInlineStyle HTMLTableElement
+instance IsGObject HTMLTableElement where
+  typeGType _ = gTypeHTMLTableElement
+  {-# INLINE typeGType #-}
+noHTMLTableElement :: Maybe HTMLTableElement
+noHTMLTableElement = Nothing
+{-# INLINE noHTMLTableElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableElement\"]" gTypeHTMLTableElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableRowElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableRowElement Mozilla HTMLTableRowElement documentation>
+newtype HTMLTableRowElement = HTMLTableRowElement { unHTMLTableRowElement :: JSVal }
+
+instance Eq (HTMLTableRowElement) where
+  (HTMLTableRowElement a) == (HTMLTableRowElement b) = js_eq a b
+
+instance PToJSVal HTMLTableRowElement where
+  pToJSVal = unHTMLTableRowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableRowElement where
+  pFromJSVal = HTMLTableRowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableRowElement where
+  toJSVal = return . unHTMLTableRowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableRowElement where
+  fromJSVal = return . fmap HTMLTableRowElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableRowElement
+instance IsElement HTMLTableRowElement
+instance IsNode HTMLTableRowElement
+instance IsEventTarget HTMLTableRowElement
+instance IsSlotable HTMLTableRowElement
+instance IsParentNode HTMLTableRowElement
+instance IsNonDocumentTypeChildNode HTMLTableRowElement
+instance IsDocumentAndElementEventHandlers HTMLTableRowElement
+instance IsChildNode HTMLTableRowElement
+instance IsAnimatable HTMLTableRowElement
+instance IsGlobalEventHandlers HTMLTableRowElement
+instance IsElementCSSInlineStyle HTMLTableRowElement
+instance IsGObject HTMLTableRowElement where
+  typeGType _ = gTypeHTMLTableRowElement
+  {-# INLINE typeGType #-}
+noHTMLTableRowElement :: Maybe HTMLTableRowElement
+noHTMLTableRowElement = Nothing
+{-# INLINE noHTMLTableRowElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableRowElement\"]" gTypeHTMLTableRowElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTableSectionElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTableSectionElement Mozilla HTMLTableSectionElement documentation>
+newtype HTMLTableSectionElement = HTMLTableSectionElement { unHTMLTableSectionElement :: JSVal }
+
+instance Eq (HTMLTableSectionElement) where
+  (HTMLTableSectionElement a) == (HTMLTableSectionElement b) = js_eq a b
+
+instance PToJSVal HTMLTableSectionElement where
+  pToJSVal = unHTMLTableSectionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTableSectionElement where
+  pFromJSVal = HTMLTableSectionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTableSectionElement where
+  toJSVal = return . unHTMLTableSectionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTableSectionElement where
+  fromJSVal = return . fmap HTMLTableSectionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTableSectionElement
+instance IsElement HTMLTableSectionElement
+instance IsNode HTMLTableSectionElement
+instance IsEventTarget HTMLTableSectionElement
+instance IsSlotable HTMLTableSectionElement
+instance IsParentNode HTMLTableSectionElement
+instance IsNonDocumentTypeChildNode HTMLTableSectionElement
+instance IsDocumentAndElementEventHandlers HTMLTableSectionElement
+instance IsChildNode HTMLTableSectionElement
+instance IsAnimatable HTMLTableSectionElement
+instance IsGlobalEventHandlers HTMLTableSectionElement
+instance IsElementCSSInlineStyle HTMLTableSectionElement
+instance IsGObject HTMLTableSectionElement where
+  typeGType _ = gTypeHTMLTableSectionElement
+  {-# INLINE typeGType #-}
+noHTMLTableSectionElement :: Maybe HTMLTableSectionElement
+noHTMLTableSectionElement = Nothing
+{-# INLINE noHTMLTableSectionElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTableSectionElement\"]" gTypeHTMLTableSectionElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTemplateElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTemplateElement Mozilla HTMLTemplateElement documentation>
+newtype HTMLTemplateElement = HTMLTemplateElement { unHTMLTemplateElement :: JSVal }
+
+instance Eq (HTMLTemplateElement) where
+  (HTMLTemplateElement a) == (HTMLTemplateElement b) = js_eq a b
+
+instance PToJSVal HTMLTemplateElement where
+  pToJSVal = unHTMLTemplateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTemplateElement where
+  pFromJSVal = HTMLTemplateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTemplateElement where
+  toJSVal = return . unHTMLTemplateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTemplateElement where
+  fromJSVal = return . fmap HTMLTemplateElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTemplateElement
+instance IsElement HTMLTemplateElement
+instance IsNode HTMLTemplateElement
+instance IsEventTarget HTMLTemplateElement
+instance IsSlotable HTMLTemplateElement
+instance IsParentNode HTMLTemplateElement
+instance IsNonDocumentTypeChildNode HTMLTemplateElement
+instance IsDocumentAndElementEventHandlers HTMLTemplateElement
+instance IsChildNode HTMLTemplateElement
+instance IsAnimatable HTMLTemplateElement
+instance IsGlobalEventHandlers HTMLTemplateElement
+instance IsElementCSSInlineStyle HTMLTemplateElement
+instance IsGObject HTMLTemplateElement where
+  typeGType _ = gTypeHTMLTemplateElement
+  {-# INLINE typeGType #-}
+noHTMLTemplateElement :: Maybe HTMLTemplateElement
+noHTMLTemplateElement = Nothing
+{-# INLINE noHTMLTemplateElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTemplateElement\"]" gTypeHTMLTemplateElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTextAreaElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement Mozilla HTMLTextAreaElement documentation>
+newtype HTMLTextAreaElement = HTMLTextAreaElement { unHTMLTextAreaElement :: JSVal }
+
+instance Eq (HTMLTextAreaElement) where
+  (HTMLTextAreaElement a) == (HTMLTextAreaElement b) = js_eq a b
+
+instance PToJSVal HTMLTextAreaElement where
+  pToJSVal = unHTMLTextAreaElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTextAreaElement where
+  pFromJSVal = HTMLTextAreaElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTextAreaElement where
+  toJSVal = return . unHTMLTextAreaElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTextAreaElement where
+  fromJSVal = return . fmap HTMLTextAreaElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTextAreaElement
+instance IsElement HTMLTextAreaElement
+instance IsNode HTMLTextAreaElement
+instance IsEventTarget HTMLTextAreaElement
+instance IsSlotable HTMLTextAreaElement
+instance IsParentNode HTMLTextAreaElement
+instance IsNonDocumentTypeChildNode HTMLTextAreaElement
+instance IsDocumentAndElementEventHandlers HTMLTextAreaElement
+instance IsChildNode HTMLTextAreaElement
+instance IsAnimatable HTMLTextAreaElement
+instance IsGlobalEventHandlers HTMLTextAreaElement
+instance IsElementCSSInlineStyle HTMLTextAreaElement
+instance IsGObject HTMLTextAreaElement where
+  typeGType _ = gTypeHTMLTextAreaElement
+  {-# INLINE typeGType #-}
+noHTMLTextAreaElement :: Maybe HTMLTextAreaElement
+noHTMLTextAreaElement = Nothing
+{-# INLINE noHTMLTextAreaElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTextAreaElement\"]" gTypeHTMLTextAreaElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTimeElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTimeElement Mozilla HTMLTimeElement documentation>
+newtype HTMLTimeElement = HTMLTimeElement { unHTMLTimeElement :: JSVal }
+
+instance Eq (HTMLTimeElement) where
+  (HTMLTimeElement a) == (HTMLTimeElement b) = js_eq a b
+
+instance PToJSVal HTMLTimeElement where
+  pToJSVal = unHTMLTimeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTimeElement where
+  pFromJSVal = HTMLTimeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTimeElement where
+  toJSVal = return . unHTMLTimeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTimeElement where
+  fromJSVal = return . fmap HTMLTimeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTimeElement
+instance IsElement HTMLTimeElement
+instance IsNode HTMLTimeElement
+instance IsEventTarget HTMLTimeElement
+instance IsSlotable HTMLTimeElement
+instance IsParentNode HTMLTimeElement
+instance IsNonDocumentTypeChildNode HTMLTimeElement
+instance IsDocumentAndElementEventHandlers HTMLTimeElement
+instance IsChildNode HTMLTimeElement
+instance IsAnimatable HTMLTimeElement
+instance IsGlobalEventHandlers HTMLTimeElement
+instance IsElementCSSInlineStyle HTMLTimeElement
+instance IsGObject HTMLTimeElement where
+  typeGType _ = gTypeHTMLTimeElement
+  {-# INLINE typeGType #-}
+noHTMLTimeElement :: Maybe HTMLTimeElement
+noHTMLTimeElement = Nothing
+{-# INLINE noHTMLTimeElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTimeElement\"]" gTypeHTMLTimeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTitleElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTitleElement Mozilla HTMLTitleElement documentation>
+newtype HTMLTitleElement = HTMLTitleElement { unHTMLTitleElement :: JSVal }
+
+instance Eq (HTMLTitleElement) where
+  (HTMLTitleElement a) == (HTMLTitleElement b) = js_eq a b
+
+instance PToJSVal HTMLTitleElement where
+  pToJSVal = unHTMLTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTitleElement where
+  pFromJSVal = HTMLTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTitleElement where
+  toJSVal = return . unHTMLTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTitleElement where
+  fromJSVal = return . fmap HTMLTitleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTitleElement
+instance IsElement HTMLTitleElement
+instance IsNode HTMLTitleElement
+instance IsEventTarget HTMLTitleElement
+instance IsSlotable HTMLTitleElement
+instance IsParentNode HTMLTitleElement
+instance IsNonDocumentTypeChildNode HTMLTitleElement
+instance IsDocumentAndElementEventHandlers HTMLTitleElement
+instance IsChildNode HTMLTitleElement
+instance IsAnimatable HTMLTitleElement
+instance IsGlobalEventHandlers HTMLTitleElement
+instance IsElementCSSInlineStyle HTMLTitleElement
+instance IsGObject HTMLTitleElement where
+  typeGType _ = gTypeHTMLTitleElement
+  {-# INLINE typeGType #-}
+noHTMLTitleElement :: Maybe HTMLTitleElement
+noHTMLTitleElement = Nothing
+{-# INLINE noHTMLTitleElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTitleElement\"]" gTypeHTMLTitleElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLTrackElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLTrackElement Mozilla HTMLTrackElement documentation>
+newtype HTMLTrackElement = HTMLTrackElement { unHTMLTrackElement :: JSVal }
+
+instance Eq (HTMLTrackElement) where
+  (HTMLTrackElement a) == (HTMLTrackElement b) = js_eq a b
+
+instance PToJSVal HTMLTrackElement where
+  pToJSVal = unHTMLTrackElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLTrackElement where
+  pFromJSVal = HTMLTrackElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLTrackElement where
+  toJSVal = return . unHTMLTrackElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLTrackElement where
+  fromJSVal = return . fmap HTMLTrackElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLTrackElement
+instance IsElement HTMLTrackElement
+instance IsNode HTMLTrackElement
+instance IsEventTarget HTMLTrackElement
+instance IsSlotable HTMLTrackElement
+instance IsParentNode HTMLTrackElement
+instance IsNonDocumentTypeChildNode HTMLTrackElement
+instance IsDocumentAndElementEventHandlers HTMLTrackElement
+instance IsChildNode HTMLTrackElement
+instance IsAnimatable HTMLTrackElement
+instance IsGlobalEventHandlers HTMLTrackElement
+instance IsElementCSSInlineStyle HTMLTrackElement
+instance IsGObject HTMLTrackElement where
+  typeGType _ = gTypeHTMLTrackElement
+  {-# INLINE typeGType #-}
+noHTMLTrackElement :: Maybe HTMLTrackElement
+noHTMLTrackElement = Nothing
+{-# INLINE noHTMLTrackElement #-}
+
+foreign import javascript unsafe "window[\"HTMLTrackElement\"]" gTypeHTMLTrackElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLUListElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUListElement Mozilla HTMLUListElement documentation>
+newtype HTMLUListElement = HTMLUListElement { unHTMLUListElement :: JSVal }
+
+instance Eq (HTMLUListElement) where
+  (HTMLUListElement a) == (HTMLUListElement b) = js_eq a b
+
+instance PToJSVal HTMLUListElement where
+  pToJSVal = unHTMLUListElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUListElement where
+  pFromJSVal = HTMLUListElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUListElement where
+  toJSVal = return . unHTMLUListElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUListElement where
+  fromJSVal = return . fmap HTMLUListElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLUListElement
+instance IsElement HTMLUListElement
+instance IsNode HTMLUListElement
+instance IsEventTarget HTMLUListElement
+instance IsSlotable HTMLUListElement
+instance IsParentNode HTMLUListElement
+instance IsNonDocumentTypeChildNode HTMLUListElement
+instance IsDocumentAndElementEventHandlers HTMLUListElement
+instance IsChildNode HTMLUListElement
+instance IsAnimatable HTMLUListElement
+instance IsGlobalEventHandlers HTMLUListElement
+instance IsElementCSSInlineStyle HTMLUListElement
+instance IsGObject HTMLUListElement where
+  typeGType _ = gTypeHTMLUListElement
+  {-# INLINE typeGType #-}
+noHTMLUListElement :: Maybe HTMLUListElement
+noHTMLUListElement = Nothing
+{-# INLINE noHTMLUListElement #-}
+
+foreign import javascript unsafe "window[\"HTMLUListElement\"]" gTypeHTMLUListElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLUnknownElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLUnknownElement Mozilla HTMLUnknownElement documentation>
+newtype HTMLUnknownElement = HTMLUnknownElement { unHTMLUnknownElement :: JSVal }
+
+instance Eq (HTMLUnknownElement) where
+  (HTMLUnknownElement a) == (HTMLUnknownElement b) = js_eq a b
+
+instance PToJSVal HTMLUnknownElement where
+  pToJSVal = unHTMLUnknownElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLUnknownElement where
+  pFromJSVal = HTMLUnknownElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLUnknownElement where
+  toJSVal = return . unHTMLUnknownElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLUnknownElement where
+  fromJSVal = return . fmap HTMLUnknownElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLElement HTMLUnknownElement
+instance IsElement HTMLUnknownElement
+instance IsNode HTMLUnknownElement
+instance IsEventTarget HTMLUnknownElement
+instance IsSlotable HTMLUnknownElement
+instance IsParentNode HTMLUnknownElement
+instance IsNonDocumentTypeChildNode HTMLUnknownElement
+instance IsDocumentAndElementEventHandlers HTMLUnknownElement
+instance IsChildNode HTMLUnknownElement
+instance IsAnimatable HTMLUnknownElement
+instance IsGlobalEventHandlers HTMLUnknownElement
+instance IsElementCSSInlineStyle HTMLUnknownElement
+instance IsGObject HTMLUnknownElement where
+  typeGType _ = gTypeHTMLUnknownElement
+  {-# INLINE typeGType #-}
+noHTMLUnknownElement :: Maybe HTMLUnknownElement
+noHTMLUnknownElement = Nothing
+{-# INLINE noHTMLUnknownElement #-}
+
+foreign import javascript unsafe "window[\"HTMLUnknownElement\"]" gTypeHTMLUnknownElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HTMLVideoElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.HTMLMediaElement"
+--     * "GHCJS.DOM.HTMLElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HTMLVideoElement Mozilla HTMLVideoElement documentation>
+newtype HTMLVideoElement = HTMLVideoElement { unHTMLVideoElement :: JSVal }
+
+instance Eq (HTMLVideoElement) where
+  (HTMLVideoElement a) == (HTMLVideoElement b) = js_eq a b
+
+instance PToJSVal HTMLVideoElement where
+  pToJSVal = unHTMLVideoElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HTMLVideoElement where
+  pFromJSVal = HTMLVideoElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HTMLVideoElement where
+  toJSVal = return . unHTMLVideoElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HTMLVideoElement where
+  fromJSVal = return . fmap HTMLVideoElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsHTMLMediaElement HTMLVideoElement
+instance IsHTMLElement HTMLVideoElement
+instance IsElement HTMLVideoElement
+instance IsNode HTMLVideoElement
+instance IsEventTarget HTMLVideoElement
+instance IsSlotable HTMLVideoElement
+instance IsParentNode HTMLVideoElement
+instance IsNonDocumentTypeChildNode HTMLVideoElement
+instance IsDocumentAndElementEventHandlers HTMLVideoElement
+instance IsChildNode HTMLVideoElement
+instance IsAnimatable HTMLVideoElement
+instance IsGlobalEventHandlers HTMLVideoElement
+instance IsElementCSSInlineStyle HTMLVideoElement
+instance IsGObject HTMLVideoElement where
+  typeGType _ = gTypeHTMLVideoElement
+  {-# INLINE typeGType #-}
+noHTMLVideoElement :: Maybe HTMLVideoElement
+noHTMLVideoElement = Nothing
+{-# INLINE noHTMLVideoElement #-}
+
+foreign import javascript unsafe "window[\"HTMLVideoElement\"]" gTypeHTMLVideoElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HashChangeEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEvent Mozilla HashChangeEvent documentation>
+newtype HashChangeEvent = HashChangeEvent { unHashChangeEvent :: JSVal }
+
+instance Eq (HashChangeEvent) where
+  (HashChangeEvent a) == (HashChangeEvent b) = js_eq a b
+
+instance PToJSVal HashChangeEvent where
+  pToJSVal = unHashChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HashChangeEvent where
+  pFromJSVal = HashChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HashChangeEvent where
+  toJSVal = return . unHashChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HashChangeEvent where
+  fromJSVal = return . fmap HashChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent HashChangeEvent
+instance IsGObject HashChangeEvent where
+  typeGType _ = gTypeHashChangeEvent
+  {-# INLINE typeGType #-}
+noHashChangeEvent :: Maybe HashChangeEvent
+noHashChangeEvent = Nothing
+{-# INLINE noHashChangeEvent #-}
+
+foreign import javascript unsafe "window[\"HashChangeEvent\"]" gTypeHashChangeEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HashChangeEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HashChangeEventInit Mozilla HashChangeEventInit documentation>
+newtype HashChangeEventInit = HashChangeEventInit { unHashChangeEventInit :: JSVal }
+
+instance Eq (HashChangeEventInit) where
+  (HashChangeEventInit a) == (HashChangeEventInit b) = js_eq a b
+
+instance PToJSVal HashChangeEventInit where
+  pToJSVal = unHashChangeEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HashChangeEventInit where
+  pFromJSVal = HashChangeEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HashChangeEventInit where
+  toJSVal = return . unHashChangeEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HashChangeEventInit where
+  fromJSVal = return . fmap HashChangeEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit HashChangeEventInit
+instance IsGObject HashChangeEventInit where
+  typeGType _ = gTypeHashChangeEventInit
+  {-# INLINE typeGType #-}
+noHashChangeEventInit :: Maybe HashChangeEventInit
+noHashChangeEventInit = Nothing
+{-# INLINE noHashChangeEventInit #-}
+
+foreign import javascript unsafe "window[\"HashChangeEventInit\"]" gTypeHashChangeEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Headers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Headers Mozilla Headers documentation>
+newtype Headers = Headers { unHeaders :: JSVal }
+
+instance Eq (Headers) where
+  (Headers a) == (Headers b) = js_eq a b
+
+instance PToJSVal Headers where
+  pToJSVal = unHeaders
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Headers where
+  pFromJSVal = Headers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Headers where
+  toJSVal = return . unHeaders
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Headers where
+  fromJSVal = return . fmap Headers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Headers where
+  typeGType _ = gTypeHeaders
+  {-# INLINE typeGType #-}
+noHeaders :: Maybe Headers
+noHeaders = Nothing
+{-# INLINE noHeaders #-}
+
+foreign import javascript unsafe "window[\"Headers\"]" gTypeHeaders :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.History".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/History Mozilla History documentation>
+newtype History = History { unHistory :: JSVal }
+
+instance Eq (History) where
+  (History a) == (History b) = js_eq a b
+
+instance PToJSVal History where
+  pToJSVal = unHistory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal History where
+  pFromJSVal = History
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal History where
+  toJSVal = return . unHistory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal History where
+  fromJSVal = return . fmap History . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject History where
+  typeGType _ = gTypeHistory
+  {-# INLINE typeGType #-}
+noHistory :: Maybe History
+noHistory = Nothing
+{-# INLINE noHistory #-}
+
+foreign import javascript unsafe "window[\"History\"]" gTypeHistory :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HkdfParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HkdfParams Mozilla HkdfParams documentation>
+newtype HkdfParams = HkdfParams { unHkdfParams :: JSVal }
+
+instance Eq (HkdfParams) where
+  (HkdfParams a) == (HkdfParams b) = js_eq a b
+
+instance PToJSVal HkdfParams where
+  pToJSVal = unHkdfParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HkdfParams where
+  pFromJSVal = HkdfParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HkdfParams where
+  toJSVal = return . unHkdfParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HkdfParams where
+  fromJSVal = return . fmap HkdfParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters HkdfParams
+instance IsGObject HkdfParams where
+  typeGType _ = gTypeHkdfParams
+  {-# INLINE typeGType #-}
+noHkdfParams :: Maybe HkdfParams
+noHkdfParams = Nothing
+{-# INLINE noHkdfParams #-}
+
+foreign import javascript unsafe "window[\"HkdfParams\"]" gTypeHkdfParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.HmacKeyParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/HmacKeyParams Mozilla HmacKeyParams documentation>
+newtype HmacKeyParams = HmacKeyParams { unHmacKeyParams :: JSVal }
+
+instance Eq (HmacKeyParams) where
+  (HmacKeyParams a) == (HmacKeyParams b) = js_eq a b
+
+instance PToJSVal HmacKeyParams where
+  pToJSVal = unHmacKeyParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal HmacKeyParams where
+  pFromJSVal = HmacKeyParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal HmacKeyParams where
+  toJSVal = return . unHmacKeyParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal HmacKeyParams where
+  fromJSVal = return . fmap HmacKeyParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters HmacKeyParams
+instance IsGObject HmacKeyParams where
+  typeGType _ = gTypeHmacKeyParams
+  {-# INLINE typeGType #-}
+noHmacKeyParams :: Maybe HmacKeyParams
+noHmacKeyParams = Nothing
+{-# INLINE noHmacKeyParams #-}
+
+foreign import javascript unsafe "window[\"HmacKeyParams\"]" gTypeHmacKeyParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBCursor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursor Mozilla IDBCursor documentation>
+newtype IDBCursor = IDBCursor { unIDBCursor :: JSVal }
+
+instance Eq (IDBCursor) where
+  (IDBCursor a) == (IDBCursor b) = js_eq a b
+
+instance PToJSVal IDBCursor where
+  pToJSVal = unIDBCursor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursor where
+  pFromJSVal = IDBCursor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursor where
+  toJSVal = return . unIDBCursor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursor where
+  fromJSVal = return . fmap IDBCursor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsIDBCursor o
+toIDBCursor :: IsIDBCursor o => o -> IDBCursor
+toIDBCursor = IDBCursor . coerce
+
+instance IsIDBCursor IDBCursor
+instance IsGObject IDBCursor where
+  typeGType _ = gTypeIDBCursor
+  {-# INLINE typeGType #-}
+noIDBCursor :: Maybe IDBCursor
+noIDBCursor = Nothing
+{-# INLINE noIDBCursor #-}
+
+foreign import javascript unsafe "window[\"IDBCursor\"]" gTypeIDBCursor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBCursorWithValue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.IDBCursor"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBCursorWithValue Mozilla IDBCursorWithValue documentation>
+newtype IDBCursorWithValue = IDBCursorWithValue { unIDBCursorWithValue :: JSVal }
+
+instance Eq (IDBCursorWithValue) where
+  (IDBCursorWithValue a) == (IDBCursorWithValue b) = js_eq a b
+
+instance PToJSVal IDBCursorWithValue where
+  pToJSVal = unIDBCursorWithValue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBCursorWithValue where
+  pFromJSVal = IDBCursorWithValue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBCursorWithValue where
+  toJSVal = return . unIDBCursorWithValue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBCursorWithValue where
+  fromJSVal = return . fmap IDBCursorWithValue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsIDBCursor IDBCursorWithValue
+instance IsGObject IDBCursorWithValue where
+  typeGType _ = gTypeIDBCursorWithValue
+  {-# INLINE typeGType #-}
+noIDBCursorWithValue :: Maybe IDBCursorWithValue
+noIDBCursorWithValue = Nothing
+{-# INLINE noIDBCursorWithValue #-}
+
+foreign import javascript unsafe "window[\"IDBCursorWithValue\"]" gTypeIDBCursorWithValue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBDatabase".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase Mozilla IDBDatabase documentation>
+newtype IDBDatabase = IDBDatabase { unIDBDatabase :: JSVal }
+
+instance Eq (IDBDatabase) where
+  (IDBDatabase a) == (IDBDatabase b) = js_eq a b
+
+instance PToJSVal IDBDatabase where
+  pToJSVal = unIDBDatabase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBDatabase where
+  pFromJSVal = IDBDatabase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBDatabase where
+  toJSVal = return . unIDBDatabase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBDatabase where
+  fromJSVal = return . fmap IDBDatabase . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget IDBDatabase
+instance IsGObject IDBDatabase where
+  typeGType _ = gTypeIDBDatabase
+  {-# INLINE typeGType #-}
+noIDBDatabase :: Maybe IDBDatabase
+noIDBDatabase = Nothing
+{-# INLINE noIDBDatabase #-}
+
+foreign import javascript unsafe "window[\"IDBDatabase\"]" gTypeIDBDatabase :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBFactory".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBFactory Mozilla IDBFactory documentation>
+newtype IDBFactory = IDBFactory { unIDBFactory :: JSVal }
+
+instance Eq (IDBFactory) where
+  (IDBFactory a) == (IDBFactory b) = js_eq a b
+
+instance PToJSVal IDBFactory where
+  pToJSVal = unIDBFactory
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBFactory where
+  pFromJSVal = IDBFactory
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBFactory where
+  toJSVal = return . unIDBFactory
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBFactory where
+  fromJSVal = return . fmap IDBFactory . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBFactory where
+  typeGType _ = gTypeIDBFactory
+  {-# INLINE typeGType #-}
+noIDBFactory :: Maybe IDBFactory
+noIDBFactory = Nothing
+{-# INLINE noIDBFactory #-}
+
+foreign import javascript unsafe "window[\"IDBFactory\"]" gTypeIDBFactory :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBIndex".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex Mozilla IDBIndex documentation>
+newtype IDBIndex = IDBIndex { unIDBIndex :: JSVal }
+
+instance Eq (IDBIndex) where
+  (IDBIndex a) == (IDBIndex b) = js_eq a b
+
+instance PToJSVal IDBIndex where
+  pToJSVal = unIDBIndex
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBIndex where
+  pFromJSVal = IDBIndex
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBIndex where
+  toJSVal = return . unIDBIndex
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBIndex where
+  fromJSVal = return . fmap IDBIndex . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBIndex where
+  typeGType _ = gTypeIDBIndex
+  {-# INLINE typeGType #-}
+noIDBIndex :: Maybe IDBIndex
+noIDBIndex = Nothing
+{-# INLINE noIDBIndex #-}
+
+foreign import javascript unsafe "window[\"IDBIndex\"]" gTypeIDBIndex :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBIndexParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBIndexParameters Mozilla IDBIndexParameters documentation>
+newtype IDBIndexParameters = IDBIndexParameters { unIDBIndexParameters :: JSVal }
+
+instance Eq (IDBIndexParameters) where
+  (IDBIndexParameters a) == (IDBIndexParameters b) = js_eq a b
+
+instance PToJSVal IDBIndexParameters where
+  pToJSVal = unIDBIndexParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBIndexParameters where
+  pFromJSVal = IDBIndexParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBIndexParameters where
+  toJSVal = return . unIDBIndexParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBIndexParameters where
+  fromJSVal = return . fmap IDBIndexParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBIndexParameters where
+  typeGType _ = gTypeIDBIndexParameters
+  {-# INLINE typeGType #-}
+noIDBIndexParameters :: Maybe IDBIndexParameters
+noIDBIndexParameters = Nothing
+{-# INLINE noIDBIndexParameters #-}
+
+foreign import javascript unsafe "window[\"IDBIndexParameters\"]" gTypeIDBIndexParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBKeyRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBKeyRange Mozilla IDBKeyRange documentation>
+newtype IDBKeyRange = IDBKeyRange { unIDBKeyRange :: JSVal }
+
+instance Eq (IDBKeyRange) where
+  (IDBKeyRange a) == (IDBKeyRange b) = js_eq a b
+
+instance PToJSVal IDBKeyRange where
+  pToJSVal = unIDBKeyRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBKeyRange where
+  pFromJSVal = IDBKeyRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBKeyRange where
+  toJSVal = return . unIDBKeyRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBKeyRange where
+  fromJSVal = return . fmap IDBKeyRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBKeyRange where
+  typeGType _ = gTypeIDBKeyRange
+  {-# INLINE typeGType #-}
+noIDBKeyRange :: Maybe IDBKeyRange
+noIDBKeyRange = Nothing
+{-# INLINE noIDBKeyRange #-}
+
+foreign import javascript unsafe "window[\"IDBKeyRange\"]" gTypeIDBKeyRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBObjectStore".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStore Mozilla IDBObjectStore documentation>
+newtype IDBObjectStore = IDBObjectStore { unIDBObjectStore :: JSVal }
+
+instance Eq (IDBObjectStore) where
+  (IDBObjectStore a) == (IDBObjectStore b) = js_eq a b
+
+instance PToJSVal IDBObjectStore where
+  pToJSVal = unIDBObjectStore
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBObjectStore where
+  pFromJSVal = IDBObjectStore
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBObjectStore where
+  toJSVal = return . unIDBObjectStore
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBObjectStore where
+  fromJSVal = return . fmap IDBObjectStore . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBObjectStore where
+  typeGType _ = gTypeIDBObjectStore
+  {-# INLINE typeGType #-}
+noIDBObjectStore :: Maybe IDBObjectStore
+noIDBObjectStore = Nothing
+{-# INLINE noIDBObjectStore #-}
+
+foreign import javascript unsafe "window[\"IDBObjectStore\"]" gTypeIDBObjectStore :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBObjectStoreParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBObjectStoreParameters Mozilla IDBObjectStoreParameters documentation>
+newtype IDBObjectStoreParameters = IDBObjectStoreParameters { unIDBObjectStoreParameters :: JSVal }
+
+instance Eq (IDBObjectStoreParameters) where
+  (IDBObjectStoreParameters a) == (IDBObjectStoreParameters b) = js_eq a b
+
+instance PToJSVal IDBObjectStoreParameters where
+  pToJSVal = unIDBObjectStoreParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBObjectStoreParameters where
+  pFromJSVal = IDBObjectStoreParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBObjectStoreParameters where
+  toJSVal = return . unIDBObjectStoreParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBObjectStoreParameters where
+  fromJSVal = return . fmap IDBObjectStoreParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IDBObjectStoreParameters where
+  typeGType _ = gTypeIDBObjectStoreParameters
+  {-# INLINE typeGType #-}
+noIDBObjectStoreParameters :: Maybe IDBObjectStoreParameters
+noIDBObjectStoreParameters = Nothing
+{-# INLINE noIDBObjectStoreParameters #-}
+
+foreign import javascript unsafe "window[\"IDBObjectStoreParameters\"]" gTypeIDBObjectStoreParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBOpenDBRequest".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.IDBRequest"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBOpenDBRequest Mozilla IDBOpenDBRequest documentation>
+newtype IDBOpenDBRequest = IDBOpenDBRequest { unIDBOpenDBRequest :: JSVal }
+
+instance Eq (IDBOpenDBRequest) where
+  (IDBOpenDBRequest a) == (IDBOpenDBRequest b) = js_eq a b
+
+instance PToJSVal IDBOpenDBRequest where
+  pToJSVal = unIDBOpenDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBOpenDBRequest where
+  pFromJSVal = IDBOpenDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBOpenDBRequest where
+  toJSVal = return . unIDBOpenDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBOpenDBRequest where
+  fromJSVal = return . fmap IDBOpenDBRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsIDBRequest IDBOpenDBRequest
+instance IsEventTarget IDBOpenDBRequest
+instance IsGObject IDBOpenDBRequest where
+  typeGType _ = gTypeIDBOpenDBRequest
+  {-# INLINE typeGType #-}
+noIDBOpenDBRequest :: Maybe IDBOpenDBRequest
+noIDBOpenDBRequest = Nothing
+{-# INLINE noIDBOpenDBRequest #-}
+
+foreign import javascript unsafe "window[\"IDBOpenDBRequest\"]" gTypeIDBOpenDBRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBRequest".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBRequest Mozilla IDBRequest documentation>
+newtype IDBRequest = IDBRequest { unIDBRequest :: JSVal }
+
+instance Eq (IDBRequest) where
+  (IDBRequest a) == (IDBRequest b) = js_eq a b
+
+instance PToJSVal IDBRequest where
+  pToJSVal = unIDBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBRequest where
+  pFromJSVal = IDBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBRequest where
+  toJSVal = return . unIDBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBRequest where
+  fromJSVal = return . fmap IDBRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsIDBRequest o
+toIDBRequest :: IsIDBRequest o => o -> IDBRequest
+toIDBRequest = IDBRequest . coerce
+
+instance IsIDBRequest IDBRequest
+instance IsEventTarget IDBRequest
+instance IsGObject IDBRequest where
+  typeGType _ = gTypeIDBRequest
+  {-# INLINE typeGType #-}
+noIDBRequest :: Maybe IDBRequest
+noIDBRequest = Nothing
+{-# INLINE noIDBRequest #-}
+
+foreign import javascript unsafe "window[\"IDBRequest\"]" gTypeIDBRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBTransaction".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBTransaction Mozilla IDBTransaction documentation>
+newtype IDBTransaction = IDBTransaction { unIDBTransaction :: JSVal }
+
+instance Eq (IDBTransaction) where
+  (IDBTransaction a) == (IDBTransaction b) = js_eq a b
+
+instance PToJSVal IDBTransaction where
+  pToJSVal = unIDBTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBTransaction where
+  pFromJSVal = IDBTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBTransaction where
+  toJSVal = return . unIDBTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBTransaction where
+  fromJSVal = return . fmap IDBTransaction . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget IDBTransaction
+instance IsGObject IDBTransaction where
+  typeGType _ = gTypeIDBTransaction
+  {-# INLINE typeGType #-}
+noIDBTransaction :: Maybe IDBTransaction
+noIDBTransaction = Nothing
+{-# INLINE noIDBTransaction #-}
+
+foreign import javascript unsafe "window[\"IDBTransaction\"]" gTypeIDBTransaction :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBVersionChangeEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEvent Mozilla IDBVersionChangeEvent documentation>
+newtype IDBVersionChangeEvent = IDBVersionChangeEvent { unIDBVersionChangeEvent :: JSVal }
+
+instance Eq (IDBVersionChangeEvent) where
+  (IDBVersionChangeEvent a) == (IDBVersionChangeEvent b) = js_eq a b
+
+instance PToJSVal IDBVersionChangeEvent where
+  pToJSVal = unIDBVersionChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBVersionChangeEvent where
+  pFromJSVal = IDBVersionChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBVersionChangeEvent where
+  toJSVal = return . unIDBVersionChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBVersionChangeEvent where
+  fromJSVal = return . fmap IDBVersionChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent IDBVersionChangeEvent
+instance IsGObject IDBVersionChangeEvent where
+  typeGType _ = gTypeIDBVersionChangeEvent
+  {-# INLINE typeGType #-}
+noIDBVersionChangeEvent :: Maybe IDBVersionChangeEvent
+noIDBVersionChangeEvent = Nothing
+{-# INLINE noIDBVersionChangeEvent #-}
+
+foreign import javascript unsafe "window[\"IDBVersionChangeEvent\"]" gTypeIDBVersionChangeEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IDBVersionChangeEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IDBVersionChangeEventInit Mozilla IDBVersionChangeEventInit documentation>
+newtype IDBVersionChangeEventInit = IDBVersionChangeEventInit { unIDBVersionChangeEventInit :: JSVal }
+
+instance Eq (IDBVersionChangeEventInit) where
+  (IDBVersionChangeEventInit a) == (IDBVersionChangeEventInit b) = js_eq a b
+
+instance PToJSVal IDBVersionChangeEventInit where
+  pToJSVal = unIDBVersionChangeEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IDBVersionChangeEventInit where
+  pFromJSVal = IDBVersionChangeEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IDBVersionChangeEventInit where
+  toJSVal = return . unIDBVersionChangeEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IDBVersionChangeEventInit where
+  fromJSVal = return . fmap IDBVersionChangeEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit IDBVersionChangeEventInit
+instance IsGObject IDBVersionChangeEventInit where
+  typeGType _ = gTypeIDBVersionChangeEventInit
+  {-# INLINE typeGType #-}
+noIDBVersionChangeEventInit :: Maybe IDBVersionChangeEventInit
+noIDBVersionChangeEventInit = Nothing
+{-# INLINE noIDBVersionChangeEventInit #-}
+
+foreign import javascript unsafe "window[\"IDBVersionChangeEventInit\"]" gTypeIDBVersionChangeEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ImageData".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ImageData Mozilla ImageData documentation>
+newtype ImageData = ImageData { unImageData :: JSVal }
+
+instance Eq (ImageData) where
+  (ImageData a) == (ImageData b) = js_eq a b
+
+instance PToJSVal ImageData where
+  pToJSVal = unImageData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ImageData where
+  pFromJSVal = ImageData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ImageData where
+  toJSVal = return . unImageData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ImageData where
+  fromJSVal = return . fmap ImageData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ImageData where
+  typeGType _ = gTypeImageData
+  {-# INLINE typeGType #-}
+noImageData :: Maybe ImageData
+noImageData = Nothing
+{-# INLINE noImageData #-}
+
+foreign import javascript unsafe "window[\"ImageData\"]" gTypeImageData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.InputEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InputEvent Mozilla InputEvent documentation>
+newtype InputEvent = InputEvent { unInputEvent :: JSVal }
+
+instance Eq (InputEvent) where
+  (InputEvent a) == (InputEvent b) = js_eq a b
+
+instance PToJSVal InputEvent where
+  pToJSVal = unInputEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InputEvent where
+  pFromJSVal = InputEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InputEvent where
+  toJSVal = return . unInputEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InputEvent where
+  fromJSVal = return . fmap InputEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent InputEvent
+instance IsEvent InputEvent
+instance IsGObject InputEvent where
+  typeGType _ = gTypeInputEvent
+  {-# INLINE typeGType #-}
+noInputEvent :: Maybe InputEvent
+noInputEvent = Nothing
+{-# INLINE noInputEvent #-}
+
+foreign import javascript unsafe "window[\"InputEvent\"]" gTypeInputEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.InputEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InputEventInit Mozilla InputEventInit documentation>
+newtype InputEventInit = InputEventInit { unInputEventInit :: JSVal }
+
+instance Eq (InputEventInit) where
+  (InputEventInit a) == (InputEventInit b) = js_eq a b
+
+instance PToJSVal InputEventInit where
+  pToJSVal = unInputEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InputEventInit where
+  pFromJSVal = InputEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InputEventInit where
+  toJSVal = return . unInputEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InputEventInit where
+  fromJSVal = return . fmap InputEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEventInit InputEventInit
+instance IsEventInit InputEventInit
+instance IsGObject InputEventInit where
+  typeGType _ = gTypeInputEventInit
+  {-# INLINE typeGType #-}
+noInputEventInit :: Maybe InputEventInit
+noInputEventInit = Nothing
+{-# INLINE noInputEventInit #-}
+
+foreign import javascript unsafe "window[\"InputEventInit\"]" gTypeInputEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.InspectorFrontendHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/InspectorFrontendHost Mozilla InspectorFrontendHost documentation>
+newtype InspectorFrontendHost = InspectorFrontendHost { unInspectorFrontendHost :: JSVal }
+
+instance Eq (InspectorFrontendHost) where
+  (InspectorFrontendHost a) == (InspectorFrontendHost b) = js_eq a b
+
+instance PToJSVal InspectorFrontendHost where
+  pToJSVal = unInspectorFrontendHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal InspectorFrontendHost where
+  pFromJSVal = InspectorFrontendHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal InspectorFrontendHost where
+  toJSVal = return . unInspectorFrontendHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal InspectorFrontendHost where
+  fromJSVal = return . fmap InspectorFrontendHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject InspectorFrontendHost where
+  typeGType _ = gTypeInspectorFrontendHost
+  {-# INLINE typeGType #-}
+noInspectorFrontendHost :: Maybe InspectorFrontendHost
+noInspectorFrontendHost = Nothing
+{-# INLINE noInspectorFrontendHost #-}
+
+foreign import javascript unsafe "window[\"InspectorFrontendHost\"]" gTypeInspectorFrontendHost :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IntersectionObserver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver Mozilla IntersectionObserver documentation>
+newtype IntersectionObserver = IntersectionObserver { unIntersectionObserver :: JSVal }
+
+instance Eq (IntersectionObserver) where
+  (IntersectionObserver a) == (IntersectionObserver b) = js_eq a b
+
+instance PToJSVal IntersectionObserver where
+  pToJSVal = unIntersectionObserver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IntersectionObserver where
+  pFromJSVal = IntersectionObserver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IntersectionObserver where
+  toJSVal = return . unIntersectionObserver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IntersectionObserver where
+  fromJSVal = return . fmap IntersectionObserver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IntersectionObserver where
+  typeGType _ = gTypeIntersectionObserver
+  {-# INLINE typeGType #-}
+noIntersectionObserver :: Maybe IntersectionObserver
+noIntersectionObserver = Nothing
+{-# INLINE noIntersectionObserver #-}
+
+foreign import javascript unsafe "window[\"IntersectionObserver\"]" gTypeIntersectionObserver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IntersectionObserverEntry".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntry Mozilla IntersectionObserverEntry documentation>
+newtype IntersectionObserverEntry = IntersectionObserverEntry { unIntersectionObserverEntry :: JSVal }
+
+instance Eq (IntersectionObserverEntry) where
+  (IntersectionObserverEntry a) == (IntersectionObserverEntry b) = js_eq a b
+
+instance PToJSVal IntersectionObserverEntry where
+  pToJSVal = unIntersectionObserverEntry
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IntersectionObserverEntry where
+  pFromJSVal = IntersectionObserverEntry
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IntersectionObserverEntry where
+  toJSVal = return . unIntersectionObserverEntry
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IntersectionObserverEntry where
+  fromJSVal = return . fmap IntersectionObserverEntry . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IntersectionObserverEntry where
+  typeGType _ = gTypeIntersectionObserverEntry
+  {-# INLINE typeGType #-}
+noIntersectionObserverEntry :: Maybe IntersectionObserverEntry
+noIntersectionObserverEntry = Nothing
+{-# INLINE noIntersectionObserverEntry #-}
+
+foreign import javascript unsafe "window[\"IntersectionObserverEntry\"]" gTypeIntersectionObserverEntry :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IntersectionObserverEntryInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverEntryInit Mozilla IntersectionObserverEntryInit documentation>
+newtype IntersectionObserverEntryInit = IntersectionObserverEntryInit { unIntersectionObserverEntryInit :: JSVal }
+
+instance Eq (IntersectionObserverEntryInit) where
+  (IntersectionObserverEntryInit a) == (IntersectionObserverEntryInit b) = js_eq a b
+
+instance PToJSVal IntersectionObserverEntryInit where
+  pToJSVal = unIntersectionObserverEntryInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IntersectionObserverEntryInit where
+  pFromJSVal = IntersectionObserverEntryInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IntersectionObserverEntryInit where
+  toJSVal = return . unIntersectionObserverEntryInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IntersectionObserverEntryInit where
+  fromJSVal = return . fmap IntersectionObserverEntryInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IntersectionObserverEntryInit where
+  typeGType _ = gTypeIntersectionObserverEntryInit
+  {-# INLINE typeGType #-}
+noIntersectionObserverEntryInit :: Maybe IntersectionObserverEntryInit
+noIntersectionObserverEntryInit = Nothing
+{-# INLINE noIntersectionObserverEntryInit #-}
+
+foreign import javascript unsafe "window[\"IntersectionObserverEntryInit\"]" gTypeIntersectionObserverEntryInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.IntersectionObserverInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserverInit Mozilla IntersectionObserverInit documentation>
+newtype IntersectionObserverInit = IntersectionObserverInit { unIntersectionObserverInit :: JSVal }
+
+instance Eq (IntersectionObserverInit) where
+  (IntersectionObserverInit a) == (IntersectionObserverInit b) = js_eq a b
+
+instance PToJSVal IntersectionObserverInit where
+  pToJSVal = unIntersectionObserverInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal IntersectionObserverInit where
+  pFromJSVal = IntersectionObserverInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal IntersectionObserverInit where
+  toJSVal = return . unIntersectionObserverInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal IntersectionObserverInit where
+  fromJSVal = return . fmap IntersectionObserverInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject IntersectionObserverInit where
+  typeGType _ = gTypeIntersectionObserverInit
+  {-# INLINE typeGType #-}
+noIntersectionObserverInit :: Maybe IntersectionObserverInit
+noIntersectionObserverInit = Nothing
+{-# INLINE noIntersectionObserverInit #-}
+
+foreign import javascript unsafe "window[\"IntersectionObserverInit\"]" gTypeIntersectionObserverInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.JsonWebKey".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/JsonWebKey Mozilla JsonWebKey documentation>
+newtype JsonWebKey = JsonWebKey { unJsonWebKey :: JSVal }
+
+instance Eq (JsonWebKey) where
+  (JsonWebKey a) == (JsonWebKey b) = js_eq a b
+
+instance PToJSVal JsonWebKey where
+  pToJSVal = unJsonWebKey
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal JsonWebKey where
+  pFromJSVal = JsonWebKey
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal JsonWebKey where
+  toJSVal = return . unJsonWebKey
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal JsonWebKey where
+  fromJSVal = return . fmap JsonWebKey . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject JsonWebKey where
+  typeGType _ = gTypeJsonWebKey
+  {-# INLINE typeGType #-}
+noJsonWebKey :: Maybe JsonWebKey
+noJsonWebKey = Nothing
+{-# INLINE noJsonWebKey #-}
+
+foreign import javascript unsafe "window[\"JsonWebKey\"]" gTypeJsonWebKey :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.KeyboardEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent Mozilla KeyboardEvent documentation>
+newtype KeyboardEvent = KeyboardEvent { unKeyboardEvent :: JSVal }
+
+instance Eq (KeyboardEvent) where
+  (KeyboardEvent a) == (KeyboardEvent b) = js_eq a b
+
+instance PToJSVal KeyboardEvent where
+  pToJSVal = unKeyboardEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyboardEvent where
+  pFromJSVal = KeyboardEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyboardEvent where
+  toJSVal = return . unKeyboardEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyboardEvent where
+  fromJSVal = return . fmap KeyboardEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent KeyboardEvent
+instance IsEvent KeyboardEvent
+instance IsGObject KeyboardEvent where
+  typeGType _ = gTypeKeyboardEvent
+  {-# INLINE typeGType #-}
+noKeyboardEvent :: Maybe KeyboardEvent
+noKeyboardEvent = Nothing
+{-# INLINE noKeyboardEvent #-}
+
+foreign import javascript unsafe "window[\"KeyboardEvent\"]" gTypeKeyboardEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.KeyboardEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventModifierInit"
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEventInit Mozilla KeyboardEventInit documentation>
+newtype KeyboardEventInit = KeyboardEventInit { unKeyboardEventInit :: JSVal }
+
+instance Eq (KeyboardEventInit) where
+  (KeyboardEventInit a) == (KeyboardEventInit b) = js_eq a b
+
+instance PToJSVal KeyboardEventInit where
+  pToJSVal = unKeyboardEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyboardEventInit where
+  pFromJSVal = KeyboardEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyboardEventInit where
+  toJSVal = return . unKeyboardEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyboardEventInit where
+  fromJSVal = return . fmap KeyboardEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventModifierInit KeyboardEventInit
+instance IsUIEventInit KeyboardEventInit
+instance IsEventInit KeyboardEventInit
+instance IsGObject KeyboardEventInit where
+  typeGType _ = gTypeKeyboardEventInit
+  {-# INLINE typeGType #-}
+noKeyboardEventInit :: Maybe KeyboardEventInit
+noKeyboardEventInit = Nothing
+{-# INLINE noKeyboardEventInit #-}
+
+foreign import javascript unsafe "window[\"KeyboardEventInit\"]" gTypeKeyboardEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.KeyframeEffect".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AnimationEffect"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/KeyframeEffect Mozilla KeyframeEffect documentation>
+newtype KeyframeEffect = KeyframeEffect { unKeyframeEffect :: JSVal }
+
+instance Eq (KeyframeEffect) where
+  (KeyframeEffect a) == (KeyframeEffect b) = js_eq a b
+
+instance PToJSVal KeyframeEffect where
+  pToJSVal = unKeyframeEffect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal KeyframeEffect where
+  pFromJSVal = KeyframeEffect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal KeyframeEffect where
+  toJSVal = return . unKeyframeEffect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal KeyframeEffect where
+  fromJSVal = return . fmap KeyframeEffect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAnimationEffect KeyframeEffect
+instance IsGObject KeyframeEffect where
+  typeGType _ = gTypeKeyframeEffect
+  {-# INLINE typeGType #-}
+noKeyframeEffect :: Maybe KeyframeEffect
+noKeyframeEffect = Nothing
+{-# INLINE noKeyframeEffect #-}
+
+foreign import javascript unsafe "window[\"KeyframeEffect\"]" gTypeKeyframeEffect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Location".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Location Mozilla Location documentation>
+newtype Location = Location { unLocation :: JSVal }
+
+instance Eq (Location) where
+  (Location a) == (Location b) = js_eq a b
+
+instance PToJSVal Location where
+  pToJSVal = unLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Location where
+  pFromJSVal = Location
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Location where
+  toJSVal = return . unLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Location where
+  fromJSVal = return . fmap Location . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Location where
+  typeGType _ = gTypeLocation
+  {-# INLINE typeGType #-}
+noLocation :: Maybe Location
+noLocation = Nothing
+{-# INLINE noLocation #-}
+
+foreign import javascript unsafe "window[\"Location\"]" gTypeLocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.LongRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/LongRange Mozilla LongRange documentation>
+newtype LongRange = LongRange { unLongRange :: JSVal }
+
+instance Eq (LongRange) where
+  (LongRange a) == (LongRange b) = js_eq a b
+
+instance PToJSVal LongRange where
+  pToJSVal = unLongRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal LongRange where
+  pFromJSVal = LongRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal LongRange where
+  toJSVal = return . unLongRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal LongRange where
+  fromJSVal = return . fmap LongRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsLongRange o
+toLongRange :: IsLongRange o => o -> LongRange
+toLongRange = LongRange . coerce
+
+instance IsLongRange LongRange
+instance IsGObject LongRange where
+  typeGType _ = gTypeLongRange
+  {-# INLINE typeGType #-}
+noLongRange :: Maybe LongRange
+noLongRange = Nothing
+{-# INLINE noLongRange #-}
+
+foreign import javascript unsafe "window[\"LongRange\"]" gTypeLongRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaController".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaController Mozilla MediaController documentation>
+newtype MediaController = MediaController { unMediaController :: JSVal }
+
+instance Eq (MediaController) where
+  (MediaController a) == (MediaController b) = js_eq a b
+
+instance PToJSVal MediaController where
+  pToJSVal = unMediaController
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaController where
+  pFromJSVal = MediaController
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaController where
+  toJSVal = return . unMediaController
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaController where
+  fromJSVal = return . fmap MediaController . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MediaController
+instance IsGObject MediaController where
+  typeGType _ = gTypeMediaController
+  {-# INLINE typeGType #-}
+noMediaController :: Maybe MediaController
+noMediaController = Nothing
+{-# INLINE noMediaController #-}
+
+foreign import javascript unsafe "window[\"MediaController\"]" gTypeMediaController :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaControlsHost".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaControlsHost Mozilla MediaControlsHost documentation>
+newtype MediaControlsHost = MediaControlsHost { unMediaControlsHost :: JSVal }
+
+instance Eq (MediaControlsHost) where
+  (MediaControlsHost a) == (MediaControlsHost b) = js_eq a b
+
+instance PToJSVal MediaControlsHost where
+  pToJSVal = unMediaControlsHost
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaControlsHost where
+  pFromJSVal = MediaControlsHost
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaControlsHost where
+  toJSVal = return . unMediaControlsHost
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaControlsHost where
+  fromJSVal = return . fmap MediaControlsHost . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaControlsHost where
+  typeGType _ = gTypeMediaControlsHost
+  {-# INLINE typeGType #-}
+noMediaControlsHost :: Maybe MediaControlsHost
+noMediaControlsHost = Nothing
+{-# INLINE noMediaControlsHost #-}
+
+foreign import javascript unsafe "window[\"MediaControlsHost\"]" gTypeMediaControlsHost :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaDeviceInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaDeviceInfo Mozilla MediaDeviceInfo documentation>
+newtype MediaDeviceInfo = MediaDeviceInfo { unMediaDeviceInfo :: JSVal }
+
+instance Eq (MediaDeviceInfo) where
+  (MediaDeviceInfo a) == (MediaDeviceInfo b) = js_eq a b
+
+instance PToJSVal MediaDeviceInfo where
+  pToJSVal = unMediaDeviceInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaDeviceInfo where
+  pFromJSVal = MediaDeviceInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaDeviceInfo where
+  toJSVal = return . unMediaDeviceInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaDeviceInfo where
+  fromJSVal = return . fmap MediaDeviceInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaDeviceInfo where
+  typeGType _ = gTypeMediaDeviceInfo
+  {-# INLINE typeGType #-}
+noMediaDeviceInfo :: Maybe MediaDeviceInfo
+noMediaDeviceInfo = Nothing
+{-# INLINE noMediaDeviceInfo #-}
+
+foreign import javascript unsafe "window[\"MediaDeviceInfo\"]" gTypeMediaDeviceInfo :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaDevices".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaDevices Mozilla MediaDevices documentation>
+newtype MediaDevices = MediaDevices { unMediaDevices :: JSVal }
+
+instance Eq (MediaDevices) where
+  (MediaDevices a) == (MediaDevices b) = js_eq a b
+
+instance PToJSVal MediaDevices where
+  pToJSVal = unMediaDevices
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaDevices where
+  pFromJSVal = MediaDevices
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaDevices where
+  toJSVal = return . unMediaDevices
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaDevices where
+  fromJSVal = return . fmap MediaDevices . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaDevices where
+  typeGType _ = gTypeMediaDevices
+  {-# INLINE typeGType #-}
+noMediaDevices :: Maybe MediaDevices
+noMediaDevices = Nothing
+{-# INLINE noMediaDevices #-}
+
+foreign import javascript unsafe "window[\"MediaDevices\"]" gTypeMediaDevices :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaElementAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaElementAudioSourceNode Mozilla MediaElementAudioSourceNode documentation>
+newtype MediaElementAudioSourceNode = MediaElementAudioSourceNode { unMediaElementAudioSourceNode :: JSVal }
+
+instance Eq (MediaElementAudioSourceNode) where
+  (MediaElementAudioSourceNode a) == (MediaElementAudioSourceNode b) = js_eq a b
+
+instance PToJSVal MediaElementAudioSourceNode where
+  pToJSVal = unMediaElementAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaElementAudioSourceNode where
+  pFromJSVal = MediaElementAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaElementAudioSourceNode where
+  toJSVal = return . unMediaElementAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaElementAudioSourceNode where
+  fromJSVal = return . fmap MediaElementAudioSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode MediaElementAudioSourceNode
+instance IsEventTarget MediaElementAudioSourceNode
+instance IsGObject MediaElementAudioSourceNode where
+  typeGType _ = gTypeMediaElementAudioSourceNode
+  {-# INLINE typeGType #-}
+noMediaElementAudioSourceNode :: Maybe MediaElementAudioSourceNode
+noMediaElementAudioSourceNode = Nothing
+{-# INLINE noMediaElementAudioSourceNode #-}
+
+foreign import javascript unsafe "window[\"MediaElementAudioSourceNode\"]" gTypeMediaElementAudioSourceNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaEncryptedEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEvent Mozilla MediaEncryptedEvent documentation>
+newtype MediaEncryptedEvent = MediaEncryptedEvent { unMediaEncryptedEvent :: JSVal }
+
+instance Eq (MediaEncryptedEvent) where
+  (MediaEncryptedEvent a) == (MediaEncryptedEvent b) = js_eq a b
+
+instance PToJSVal MediaEncryptedEvent where
+  pToJSVal = unMediaEncryptedEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaEncryptedEvent where
+  pFromJSVal = MediaEncryptedEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaEncryptedEvent where
+  toJSVal = return . unMediaEncryptedEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaEncryptedEvent where
+  fromJSVal = return . fmap MediaEncryptedEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaEncryptedEvent
+instance IsGObject MediaEncryptedEvent where
+  typeGType _ = gTypeMediaEncryptedEvent
+  {-# INLINE typeGType #-}
+noMediaEncryptedEvent :: Maybe MediaEncryptedEvent
+noMediaEncryptedEvent = Nothing
+{-# INLINE noMediaEncryptedEvent #-}
+
+foreign import javascript unsafe "window[\"MediaEncryptedEvent\"]" gTypeMediaEncryptedEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaEncryptedEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaEncryptedEventInit Mozilla MediaEncryptedEventInit documentation>
+newtype MediaEncryptedEventInit = MediaEncryptedEventInit { unMediaEncryptedEventInit :: JSVal }
+
+instance Eq (MediaEncryptedEventInit) where
+  (MediaEncryptedEventInit a) == (MediaEncryptedEventInit b) = js_eq a b
+
+instance PToJSVal MediaEncryptedEventInit where
+  pToJSVal = unMediaEncryptedEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaEncryptedEventInit where
+  pFromJSVal = MediaEncryptedEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaEncryptedEventInit where
+  toJSVal = return . unMediaEncryptedEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaEncryptedEventInit where
+  fromJSVal = return . fmap MediaEncryptedEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit MediaEncryptedEventInit
+instance IsGObject MediaEncryptedEventInit where
+  typeGType _ = gTypeMediaEncryptedEventInit
+  {-# INLINE typeGType #-}
+noMediaEncryptedEventInit :: Maybe MediaEncryptedEventInit
+noMediaEncryptedEventInit = Nothing
+{-# INLINE noMediaEncryptedEventInit #-}
+
+foreign import javascript unsafe "window[\"MediaEncryptedEventInit\"]" gTypeMediaEncryptedEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaError Mozilla MediaError documentation>
+newtype MediaError = MediaError { unMediaError :: JSVal }
+
+instance Eq (MediaError) where
+  (MediaError a) == (MediaError b) = js_eq a b
+
+instance PToJSVal MediaError where
+  pToJSVal = unMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaError where
+  pFromJSVal = MediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaError where
+  toJSVal = return . unMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaError where
+  fromJSVal = return . fmap MediaError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaError where
+  typeGType _ = gTypeMediaError
+  {-# INLINE typeGType #-}
+noMediaError :: Maybe MediaError
+noMediaError = Nothing
+{-# INLINE noMediaError #-}
+
+foreign import javascript unsafe "window[\"MediaError\"]" gTypeMediaError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyMessageEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation>
+newtype MediaKeyMessageEvent = MediaKeyMessageEvent { unMediaKeyMessageEvent :: JSVal }
+
+instance Eq (MediaKeyMessageEvent) where
+  (MediaKeyMessageEvent a) == (MediaKeyMessageEvent b) = js_eq a b
+
+instance PToJSVal MediaKeyMessageEvent where
+  pToJSVal = unMediaKeyMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyMessageEvent where
+  pFromJSVal = MediaKeyMessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyMessageEvent where
+  toJSVal = return . unMediaKeyMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyMessageEvent where
+  fromJSVal = return . fmap MediaKeyMessageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaKeyMessageEvent
+instance IsGObject MediaKeyMessageEvent where
+  typeGType _ = gTypeMediaKeyMessageEvent
+  {-# INLINE typeGType #-}
+noMediaKeyMessageEvent :: Maybe MediaKeyMessageEvent
+noMediaKeyMessageEvent = Nothing
+{-# INLINE noMediaKeyMessageEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyMessageEvent\"]" gTypeMediaKeyMessageEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyMessageEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyMessageEventInit Mozilla MediaKeyMessageEventInit documentation>
+newtype MediaKeyMessageEventInit = MediaKeyMessageEventInit { unMediaKeyMessageEventInit :: JSVal }
+
+instance Eq (MediaKeyMessageEventInit) where
+  (MediaKeyMessageEventInit a) == (MediaKeyMessageEventInit b) = js_eq a b
+
+instance PToJSVal MediaKeyMessageEventInit where
+  pToJSVal = unMediaKeyMessageEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyMessageEventInit where
+  pFromJSVal = MediaKeyMessageEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyMessageEventInit where
+  toJSVal = return . unMediaKeyMessageEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyMessageEventInit where
+  fromJSVal = return . fmap MediaKeyMessageEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit MediaKeyMessageEventInit
+instance IsGObject MediaKeyMessageEventInit where
+  typeGType _ = gTypeMediaKeyMessageEventInit
+  {-# INLINE typeGType #-}
+noMediaKeyMessageEventInit :: Maybe MediaKeyMessageEventInit
+noMediaKeyMessageEventInit = Nothing
+{-# INLINE noMediaKeyMessageEventInit #-}
+
+foreign import javascript unsafe "window[\"MediaKeyMessageEventInit\"]" gTypeMediaKeyMessageEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeySession".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession Mozilla WebKitMediaKeySession documentation>
+newtype MediaKeySession = MediaKeySession { unMediaKeySession :: JSVal }
+
+instance Eq (MediaKeySession) where
+  (MediaKeySession a) == (MediaKeySession b) = js_eq a b
+
+instance PToJSVal MediaKeySession where
+  pToJSVal = unMediaKeySession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySession where
+  pFromJSVal = MediaKeySession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySession where
+  toJSVal = return . unMediaKeySession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySession where
+  fromJSVal = return . fmap MediaKeySession . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MediaKeySession
+instance IsGObject MediaKeySession where
+  typeGType _ = gTypeMediaKeySession
+  {-# INLINE typeGType #-}
+noMediaKeySession :: Maybe MediaKeySession
+noMediaKeySession = Nothing
+{-# INLINE noMediaKeySession #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeySession\"]" gTypeMediaKeySession :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeyStatusMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeyStatusMap Mozilla MediaKeyStatusMap documentation>
+newtype MediaKeyStatusMap = MediaKeyStatusMap { unMediaKeyStatusMap :: JSVal }
+
+instance Eq (MediaKeyStatusMap) where
+  (MediaKeyStatusMap a) == (MediaKeyStatusMap b) = js_eq a b
+
+instance PToJSVal MediaKeyStatusMap where
+  pToJSVal = unMediaKeyStatusMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeyStatusMap where
+  pFromJSVal = MediaKeyStatusMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeyStatusMap where
+  toJSVal = return . unMediaKeyStatusMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeyStatusMap where
+  fromJSVal = return . fmap MediaKeyStatusMap . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeyStatusMap where
+  typeGType _ = gTypeMediaKeyStatusMap
+  {-# INLINE typeGType #-}
+noMediaKeyStatusMap :: Maybe MediaKeyStatusMap
+noMediaKeyStatusMap = Nothing
+{-# INLINE noMediaKeyStatusMap #-}
+
+foreign import javascript unsafe "window[\"MediaKeyStatusMap\"]" gTypeMediaKeyStatusMap :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeySystemAccess".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemAccess Mozilla MediaKeySystemAccess documentation>
+newtype MediaKeySystemAccess = MediaKeySystemAccess { unMediaKeySystemAccess :: JSVal }
+
+instance Eq (MediaKeySystemAccess) where
+  (MediaKeySystemAccess a) == (MediaKeySystemAccess b) = js_eq a b
+
+instance PToJSVal MediaKeySystemAccess where
+  pToJSVal = unMediaKeySystemAccess
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySystemAccess where
+  pFromJSVal = MediaKeySystemAccess
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySystemAccess where
+  toJSVal = return . unMediaKeySystemAccess
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySystemAccess where
+  fromJSVal = return . fmap MediaKeySystemAccess . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeySystemAccess where
+  typeGType _ = gTypeMediaKeySystemAccess
+  {-# INLINE typeGType #-}
+noMediaKeySystemAccess :: Maybe MediaKeySystemAccess
+noMediaKeySystemAccess = Nothing
+{-# INLINE noMediaKeySystemAccess #-}
+
+foreign import javascript unsafe "window[\"MediaKeySystemAccess\"]" gTypeMediaKeySystemAccess :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeySystemConfiguration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemConfiguration Mozilla MediaKeySystemConfiguration documentation>
+newtype MediaKeySystemConfiguration = MediaKeySystemConfiguration { unMediaKeySystemConfiguration :: JSVal }
+
+instance Eq (MediaKeySystemConfiguration) where
+  (MediaKeySystemConfiguration a) == (MediaKeySystemConfiguration b) = js_eq a b
+
+instance PToJSVal MediaKeySystemConfiguration where
+  pToJSVal = unMediaKeySystemConfiguration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySystemConfiguration where
+  pFromJSVal = MediaKeySystemConfiguration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySystemConfiguration where
+  toJSVal = return . unMediaKeySystemConfiguration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySystemConfiguration where
+  fromJSVal = return . fmap MediaKeySystemConfiguration . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeySystemConfiguration where
+  typeGType _ = gTypeMediaKeySystemConfiguration
+  {-# INLINE typeGType #-}
+noMediaKeySystemConfiguration :: Maybe MediaKeySystemConfiguration
+noMediaKeySystemConfiguration = Nothing
+{-# INLINE noMediaKeySystemConfiguration #-}
+
+foreign import javascript unsafe "window[\"MediaKeySystemConfiguration\"]" gTypeMediaKeySystemConfiguration :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeySystemMediaCapability".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaKeySystemMediaCapability Mozilla MediaKeySystemMediaCapability documentation>
+newtype MediaKeySystemMediaCapability = MediaKeySystemMediaCapability { unMediaKeySystemMediaCapability :: JSVal }
+
+instance Eq (MediaKeySystemMediaCapability) where
+  (MediaKeySystemMediaCapability a) == (MediaKeySystemMediaCapability b) = js_eq a b
+
+instance PToJSVal MediaKeySystemMediaCapability where
+  pToJSVal = unMediaKeySystemMediaCapability
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeySystemMediaCapability where
+  pFromJSVal = MediaKeySystemMediaCapability
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeySystemMediaCapability where
+  toJSVal = return . unMediaKeySystemMediaCapability
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeySystemMediaCapability where
+  fromJSVal = return . fmap MediaKeySystemMediaCapability . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeySystemMediaCapability where
+  typeGType _ = gTypeMediaKeySystemMediaCapability
+  {-# INLINE typeGType #-}
+noMediaKeySystemMediaCapability :: Maybe MediaKeySystemMediaCapability
+noMediaKeySystemMediaCapability = Nothing
+{-# INLINE noMediaKeySystemMediaCapability #-}
+
+foreign import javascript unsafe "window[\"MediaKeySystemMediaCapability\"]" gTypeMediaKeySystemMediaCapability :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaKeys".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation>
+newtype MediaKeys = MediaKeys { unMediaKeys :: JSVal }
+
+instance Eq (MediaKeys) where
+  (MediaKeys a) == (MediaKeys b) = js_eq a b
+
+instance PToJSVal MediaKeys where
+  pToJSVal = unMediaKeys
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaKeys where
+  pFromJSVal = MediaKeys
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaKeys where
+  toJSVal = return . unMediaKeys
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaKeys where
+  fromJSVal = return . fmap MediaKeys . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaKeys where
+  typeGType _ = gTypeMediaKeys
+  {-# INLINE typeGType #-}
+noMediaKeys :: Maybe MediaKeys
+noMediaKeys = Nothing
+{-# INLINE noMediaKeys #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeys\"]" gTypeMediaKeys :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaList Mozilla MediaList documentation>
+newtype MediaList = MediaList { unMediaList :: JSVal }
+
+instance Eq (MediaList) where
+  (MediaList a) == (MediaList b) = js_eq a b
+
+instance PToJSVal MediaList where
+  pToJSVal = unMediaList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaList where
+  pFromJSVal = MediaList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaList where
+  toJSVal = return . unMediaList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaList where
+  fromJSVal = return . fmap MediaList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaList where
+  typeGType _ = gTypeMediaList
+  {-# INLINE typeGType #-}
+noMediaList :: Maybe MediaList
+noMediaList = Nothing
+{-# INLINE noMediaList #-}
+
+foreign import javascript unsafe "window[\"MediaList\"]" gTypeMediaList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaMetadata".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaMetadata Mozilla MediaMetadata documentation>
+newtype MediaMetadata = MediaMetadata { unMediaMetadata :: JSVal }
+
+instance Eq (MediaMetadata) where
+  (MediaMetadata a) == (MediaMetadata b) = js_eq a b
+
+instance PToJSVal MediaMetadata where
+  pToJSVal = unMediaMetadata
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaMetadata where
+  pFromJSVal = MediaMetadata
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaMetadata where
+  toJSVal = return . unMediaMetadata
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaMetadata where
+  fromJSVal = return . fmap MediaMetadata . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaMetadata where
+  typeGType _ = gTypeMediaMetadata
+  {-# INLINE typeGType #-}
+noMediaMetadata :: Maybe MediaMetadata
+noMediaMetadata = Nothing
+{-# INLINE noMediaMetadata #-}
+
+foreign import javascript unsafe "window[\"MediaMetadata\"]" gTypeMediaMetadata :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaQueryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaQueryList Mozilla MediaQueryList documentation>
+newtype MediaQueryList = MediaQueryList { unMediaQueryList :: JSVal }
+
+instance Eq (MediaQueryList) where
+  (MediaQueryList a) == (MediaQueryList b) = js_eq a b
+
+instance PToJSVal MediaQueryList where
+  pToJSVal = unMediaQueryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaQueryList where
+  pFromJSVal = MediaQueryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaQueryList where
+  toJSVal = return . unMediaQueryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaQueryList where
+  fromJSVal = return . fmap MediaQueryList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaQueryList where
+  typeGType _ = gTypeMediaQueryList
+  {-# INLINE typeGType #-}
+noMediaQueryList :: Maybe MediaQueryList
+noMediaQueryList = Nothing
+{-# INLINE noMediaQueryList #-}
+
+foreign import javascript unsafe "window[\"MediaQueryList\"]" gTypeMediaQueryList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaRemoteControls".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaRemoteControls Mozilla MediaRemoteControls documentation>
+newtype MediaRemoteControls = MediaRemoteControls { unMediaRemoteControls :: JSVal }
+
+instance Eq (MediaRemoteControls) where
+  (MediaRemoteControls a) == (MediaRemoteControls b) = js_eq a b
+
+instance PToJSVal MediaRemoteControls where
+  pToJSVal = unMediaRemoteControls
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaRemoteControls where
+  pFromJSVal = MediaRemoteControls
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaRemoteControls where
+  toJSVal = return . unMediaRemoteControls
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaRemoteControls where
+  fromJSVal = return . fmap MediaRemoteControls . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MediaRemoteControls
+instance IsGObject MediaRemoteControls where
+  typeGType _ = gTypeMediaRemoteControls
+  {-# INLINE typeGType #-}
+noMediaRemoteControls :: Maybe MediaRemoteControls
+noMediaRemoteControls = Nothing
+{-# INLINE noMediaRemoteControls #-}
+
+foreign import javascript unsafe "window[\"MediaRemoteControls\"]" gTypeMediaRemoteControls :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaSession".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSession Mozilla MediaSession documentation>
+newtype MediaSession = MediaSession { unMediaSession :: JSVal }
+
+instance Eq (MediaSession) where
+  (MediaSession a) == (MediaSession b) = js_eq a b
+
+instance PToJSVal MediaSession where
+  pToJSVal = unMediaSession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSession where
+  pFromJSVal = MediaSession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSession where
+  toJSVal = return . unMediaSession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSession where
+  fromJSVal = return . fmap MediaSession . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaSession where
+  typeGType _ = gTypeMediaSession
+  {-# INLINE typeGType #-}
+noMediaSession :: Maybe MediaSession
+noMediaSession = Nothing
+{-# INLINE noMediaSession #-}
+
+foreign import javascript unsafe "window[\"MediaSession\"]" gTypeMediaSession :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaSource".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaSource Mozilla MediaSource documentation>
+newtype MediaSource = MediaSource { unMediaSource :: JSVal }
+
+instance Eq (MediaSource) where
+  (MediaSource a) == (MediaSource b) = js_eq a b
+
+instance PToJSVal MediaSource where
+  pToJSVal = unMediaSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaSource where
+  pFromJSVal = MediaSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaSource where
+  toJSVal = return . unMediaSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaSource where
+  fromJSVal = return . fmap MediaSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MediaSource
+instance IsGObject MediaSource where
+  typeGType _ = gTypeMediaSource
+  {-# INLINE typeGType #-}
+noMediaSource :: Maybe MediaSource
+noMediaSource = Nothing
+{-# INLINE noMediaSource #-}
+
+foreign import javascript unsafe "window[\"MediaSource\"]" gTypeMediaSource :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStream".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitMediaStream Mozilla webkitMediaStream documentation>
+newtype MediaStream = MediaStream { unMediaStream :: JSVal }
+
+instance Eq (MediaStream) where
+  (MediaStream a) == (MediaStream b) = js_eq a b
+
+instance PToJSVal MediaStream where
+  pToJSVal = unMediaStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStream where
+  pFromJSVal = MediaStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStream where
+  toJSVal = return . unMediaStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStream where
+  fromJSVal = return . fmap MediaStream . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MediaStream
+instance IsGObject MediaStream where
+  typeGType _ = gTypeMediaStream
+  {-# INLINE typeGType #-}
+noMediaStream :: Maybe MediaStream
+noMediaStream = Nothing
+{-# INLINE noMediaStream #-}
+
+foreign import javascript unsafe "window[\"webkitMediaStream\"]" gTypeMediaStream :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamAudioDestinationNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioDestinationNode Mozilla MediaStreamAudioDestinationNode documentation>
+newtype MediaStreamAudioDestinationNode = MediaStreamAudioDestinationNode { unMediaStreamAudioDestinationNode :: JSVal }
+
+instance Eq (MediaStreamAudioDestinationNode) where
+  (MediaStreamAudioDestinationNode a) == (MediaStreamAudioDestinationNode b) = js_eq a b
+
+instance PToJSVal MediaStreamAudioDestinationNode where
+  pToJSVal = unMediaStreamAudioDestinationNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioDestinationNode where
+  pFromJSVal = MediaStreamAudioDestinationNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioDestinationNode where
+  toJSVal = return . unMediaStreamAudioDestinationNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioDestinationNode where
+  fromJSVal = return . fmap MediaStreamAudioDestinationNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode MediaStreamAudioDestinationNode
+instance IsEventTarget MediaStreamAudioDestinationNode
+instance IsGObject MediaStreamAudioDestinationNode where
+  typeGType _ = gTypeMediaStreamAudioDestinationNode
+  {-# INLINE typeGType #-}
+noMediaStreamAudioDestinationNode :: Maybe MediaStreamAudioDestinationNode
+noMediaStreamAudioDestinationNode = Nothing
+{-# INLINE noMediaStreamAudioDestinationNode #-}
+
+foreign import javascript unsafe "window[\"MediaStreamAudioDestinationNode\"]" gTypeMediaStreamAudioDestinationNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamAudioSourceNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamAudioSourceNode Mozilla MediaStreamAudioSourceNode documentation>
+newtype MediaStreamAudioSourceNode = MediaStreamAudioSourceNode { unMediaStreamAudioSourceNode :: JSVal }
+
+instance Eq (MediaStreamAudioSourceNode) where
+  (MediaStreamAudioSourceNode a) == (MediaStreamAudioSourceNode b) = js_eq a b
+
+instance PToJSVal MediaStreamAudioSourceNode where
+  pToJSVal = unMediaStreamAudioSourceNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamAudioSourceNode where
+  pFromJSVal = MediaStreamAudioSourceNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamAudioSourceNode where
+  toJSVal = return . unMediaStreamAudioSourceNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamAudioSourceNode where
+  fromJSVal = return . fmap MediaStreamAudioSourceNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode MediaStreamAudioSourceNode
+instance IsEventTarget MediaStreamAudioSourceNode
+instance IsGObject MediaStreamAudioSourceNode where
+  typeGType _ = gTypeMediaStreamAudioSourceNode
+  {-# INLINE typeGType #-}
+noMediaStreamAudioSourceNode :: Maybe MediaStreamAudioSourceNode
+noMediaStreamAudioSourceNode = Nothing
+{-# INLINE noMediaStreamAudioSourceNode #-}
+
+foreign import javascript unsafe "window[\"MediaStreamAudioSourceNode\"]" gTypeMediaStreamAudioSourceNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamConstraints".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints Mozilla MediaStreamConstraints documentation>
+newtype MediaStreamConstraints = MediaStreamConstraints { unMediaStreamConstraints :: JSVal }
+
+instance Eq (MediaStreamConstraints) where
+  (MediaStreamConstraints a) == (MediaStreamConstraints b) = js_eq a b
+
+instance PToJSVal MediaStreamConstraints where
+  pToJSVal = unMediaStreamConstraints
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamConstraints where
+  pFromJSVal = MediaStreamConstraints
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamConstraints where
+  toJSVal = return . unMediaStreamConstraints
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamConstraints where
+  fromJSVal = return . fmap MediaStreamConstraints . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaStreamConstraints where
+  typeGType _ = gTypeMediaStreamConstraints
+  {-# INLINE typeGType #-}
+noMediaStreamConstraints :: Maybe MediaStreamConstraints
+noMediaStreamConstraints = Nothing
+{-# INLINE noMediaStreamConstraints #-}
+
+foreign import javascript unsafe "window[\"MediaStreamConstraints\"]" gTypeMediaStreamConstraints :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEvent Mozilla MediaStreamEvent documentation>
+newtype MediaStreamEvent = MediaStreamEvent { unMediaStreamEvent :: JSVal }
+
+instance Eq (MediaStreamEvent) where
+  (MediaStreamEvent a) == (MediaStreamEvent b) = js_eq a b
+
+instance PToJSVal MediaStreamEvent where
+  pToJSVal = unMediaStreamEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamEvent where
+  pFromJSVal = MediaStreamEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamEvent where
+  toJSVal = return . unMediaStreamEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamEvent where
+  fromJSVal = return . fmap MediaStreamEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaStreamEvent
+instance IsGObject MediaStreamEvent where
+  typeGType _ = gTypeMediaStreamEvent
+  {-# INLINE typeGType #-}
+noMediaStreamEvent :: Maybe MediaStreamEvent
+noMediaStreamEvent = Nothing
+{-# INLINE noMediaStreamEvent #-}
+
+foreign import javascript unsafe "window[\"MediaStreamEvent\"]" gTypeMediaStreamEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamEventInit Mozilla MediaStreamEventInit documentation>
+newtype MediaStreamEventInit = MediaStreamEventInit { unMediaStreamEventInit :: JSVal }
+
+instance Eq (MediaStreamEventInit) where
+  (MediaStreamEventInit a) == (MediaStreamEventInit b) = js_eq a b
+
+instance PToJSVal MediaStreamEventInit where
+  pToJSVal = unMediaStreamEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamEventInit where
+  pFromJSVal = MediaStreamEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamEventInit where
+  toJSVal = return . unMediaStreamEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamEventInit where
+  fromJSVal = return . fmap MediaStreamEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit MediaStreamEventInit
+instance IsGObject MediaStreamEventInit where
+  typeGType _ = gTypeMediaStreamEventInit
+  {-# INLINE typeGType #-}
+noMediaStreamEventInit :: Maybe MediaStreamEventInit
+noMediaStreamEventInit = Nothing
+{-# INLINE noMediaStreamEventInit #-}
+
+foreign import javascript unsafe "window[\"MediaStreamEventInit\"]" gTypeMediaStreamEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamTrack".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrack Mozilla MediaStreamTrack documentation>
+newtype MediaStreamTrack = MediaStreamTrack { unMediaStreamTrack :: JSVal }
+
+instance Eq (MediaStreamTrack) where
+  (MediaStreamTrack a) == (MediaStreamTrack b) = js_eq a b
+
+instance PToJSVal MediaStreamTrack where
+  pToJSVal = unMediaStreamTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrack where
+  pFromJSVal = MediaStreamTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrack where
+  toJSVal = return . unMediaStreamTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrack where
+  fromJSVal = return . fmap MediaStreamTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsMediaStreamTrack o
+toMediaStreamTrack :: IsMediaStreamTrack o => o -> MediaStreamTrack
+toMediaStreamTrack = MediaStreamTrack . coerce
+
+instance IsMediaStreamTrack MediaStreamTrack
+instance IsEventTarget MediaStreamTrack
+instance IsGObject MediaStreamTrack where
+  typeGType _ = gTypeMediaStreamTrack
+  {-# INLINE typeGType #-}
+noMediaStreamTrack :: Maybe MediaStreamTrack
+noMediaStreamTrack = Nothing
+{-# INLINE noMediaStreamTrack #-}
+
+foreign import javascript unsafe "window[\"MediaStreamTrack\"]" gTypeMediaStreamTrack :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamTrackEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEvent Mozilla MediaStreamTrackEvent documentation>
+newtype MediaStreamTrackEvent = MediaStreamTrackEvent { unMediaStreamTrackEvent :: JSVal }
+
+instance Eq (MediaStreamTrackEvent) where
+  (MediaStreamTrackEvent a) == (MediaStreamTrackEvent b) = js_eq a b
+
+instance PToJSVal MediaStreamTrackEvent where
+  pToJSVal = unMediaStreamTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrackEvent where
+  pFromJSVal = MediaStreamTrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrackEvent where
+  toJSVal = return . unMediaStreamTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrackEvent where
+  fromJSVal = return . fmap MediaStreamTrackEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MediaStreamTrackEvent
+instance IsGObject MediaStreamTrackEvent where
+  typeGType _ = gTypeMediaStreamTrackEvent
+  {-# INLINE typeGType #-}
+noMediaStreamTrackEvent :: Maybe MediaStreamTrackEvent
+noMediaStreamTrackEvent = Nothing
+{-# INLINE noMediaStreamTrackEvent #-}
+
+foreign import javascript unsafe "window[\"MediaStreamTrackEvent\"]" gTypeMediaStreamTrackEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaStreamTrackEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamTrackEventInit Mozilla MediaStreamTrackEventInit documentation>
+newtype MediaStreamTrackEventInit = MediaStreamTrackEventInit { unMediaStreamTrackEventInit :: JSVal }
+
+instance Eq (MediaStreamTrackEventInit) where
+  (MediaStreamTrackEventInit a) == (MediaStreamTrackEventInit b) = js_eq a b
+
+instance PToJSVal MediaStreamTrackEventInit where
+  pToJSVal = unMediaStreamTrackEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaStreamTrackEventInit where
+  pFromJSVal = MediaStreamTrackEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaStreamTrackEventInit where
+  toJSVal = return . unMediaStreamTrackEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaStreamTrackEventInit where
+  fromJSVal = return . fmap MediaStreamTrackEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit MediaStreamTrackEventInit
+instance IsGObject MediaStreamTrackEventInit where
+  typeGType _ = gTypeMediaStreamTrackEventInit
+  {-# INLINE typeGType #-}
+noMediaStreamTrackEventInit :: Maybe MediaStreamTrackEventInit
+noMediaStreamTrackEventInit = Nothing
+{-# INLINE noMediaStreamTrackEventInit #-}
+
+foreign import javascript unsafe "window[\"MediaStreamTrackEventInit\"]" gTypeMediaStreamTrackEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackCapabilities".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackCapabilities Mozilla MediaTrackCapabilities documentation>
+newtype MediaTrackCapabilities = MediaTrackCapabilities { unMediaTrackCapabilities :: JSVal }
+
+instance Eq (MediaTrackCapabilities) where
+  (MediaTrackCapabilities a) == (MediaTrackCapabilities b) = js_eq a b
+
+instance PToJSVal MediaTrackCapabilities where
+  pToJSVal = unMediaTrackCapabilities
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackCapabilities where
+  pFromJSVal = MediaTrackCapabilities
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackCapabilities where
+  toJSVal = return . unMediaTrackCapabilities
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackCapabilities where
+  fromJSVal = return . fmap MediaTrackCapabilities . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaTrackCapabilities where
+  typeGType _ = gTypeMediaTrackCapabilities
+  {-# INLINE typeGType #-}
+noMediaTrackCapabilities :: Maybe MediaTrackCapabilities
+noMediaTrackCapabilities = Nothing
+{-# INLINE noMediaTrackCapabilities #-}
+
+foreign import javascript unsafe "window[\"MediaTrackCapabilities\"]" gTypeMediaTrackCapabilities :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackConstraintSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraintSet Mozilla MediaTrackConstraintSet documentation>
+newtype MediaTrackConstraintSet = MediaTrackConstraintSet { unMediaTrackConstraintSet :: JSVal }
+
+instance Eq (MediaTrackConstraintSet) where
+  (MediaTrackConstraintSet a) == (MediaTrackConstraintSet b) = js_eq a b
+
+instance PToJSVal MediaTrackConstraintSet where
+  pToJSVal = unMediaTrackConstraintSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraintSet where
+  pFromJSVal = MediaTrackConstraintSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraintSet where
+  toJSVal = return . unMediaTrackConstraintSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraintSet where
+  fromJSVal = return . fmap MediaTrackConstraintSet . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsMediaTrackConstraintSet o
+toMediaTrackConstraintSet :: IsMediaTrackConstraintSet o => o -> MediaTrackConstraintSet
+toMediaTrackConstraintSet = MediaTrackConstraintSet . coerce
+
+instance IsMediaTrackConstraintSet MediaTrackConstraintSet
+instance IsGObject MediaTrackConstraintSet where
+  typeGType _ = gTypeMediaTrackConstraintSet
+  {-# INLINE typeGType #-}
+noMediaTrackConstraintSet :: Maybe MediaTrackConstraintSet
+noMediaTrackConstraintSet = Nothing
+{-# INLINE noMediaTrackConstraintSet #-}
+
+foreign import javascript unsafe "window[\"MediaTrackConstraintSet\"]" gTypeMediaTrackConstraintSet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackConstraints".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MediaTrackConstraintSet"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints Mozilla MediaTrackConstraints documentation>
+newtype MediaTrackConstraints = MediaTrackConstraints { unMediaTrackConstraints :: JSVal }
+
+instance Eq (MediaTrackConstraints) where
+  (MediaTrackConstraints a) == (MediaTrackConstraints b) = js_eq a b
+
+instance PToJSVal MediaTrackConstraints where
+  pToJSVal = unMediaTrackConstraints
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackConstraints where
+  pFromJSVal = MediaTrackConstraints
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackConstraints where
+  toJSVal = return . unMediaTrackConstraints
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackConstraints where
+  fromJSVal = return . fmap MediaTrackConstraints . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMediaTrackConstraintSet MediaTrackConstraints
+instance IsGObject MediaTrackConstraints where
+  typeGType _ = gTypeMediaTrackConstraints
+  {-# INLINE typeGType #-}
+noMediaTrackConstraints :: Maybe MediaTrackConstraints
+noMediaTrackConstraints = Nothing
+{-# INLINE noMediaTrackConstraints #-}
+
+foreign import javascript unsafe "window[\"MediaTrackConstraints\"]" gTypeMediaTrackConstraints :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackSettings".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSettings Mozilla MediaTrackSettings documentation>
+newtype MediaTrackSettings = MediaTrackSettings { unMediaTrackSettings :: JSVal }
+
+instance Eq (MediaTrackSettings) where
+  (MediaTrackSettings a) == (MediaTrackSettings b) = js_eq a b
+
+instance PToJSVal MediaTrackSettings where
+  pToJSVal = unMediaTrackSettings
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackSettings where
+  pFromJSVal = MediaTrackSettings
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackSettings where
+  toJSVal = return . unMediaTrackSettings
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackSettings where
+  fromJSVal = return . fmap MediaTrackSettings . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaTrackSettings where
+  typeGType _ = gTypeMediaTrackSettings
+  {-# INLINE typeGType #-}
+noMediaTrackSettings :: Maybe MediaTrackSettings
+noMediaTrackSettings = Nothing
+{-# INLINE noMediaTrackSettings #-}
+
+foreign import javascript unsafe "window[\"MediaTrackSettings\"]" gTypeMediaTrackSettings :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MediaTrackSupportedConstraints".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackSupportedConstraints Mozilla MediaTrackSupportedConstraints documentation>
+newtype MediaTrackSupportedConstraints = MediaTrackSupportedConstraints { unMediaTrackSupportedConstraints :: JSVal }
+
+instance Eq (MediaTrackSupportedConstraints) where
+  (MediaTrackSupportedConstraints a) == (MediaTrackSupportedConstraints b) = js_eq a b
+
+instance PToJSVal MediaTrackSupportedConstraints where
+  pToJSVal = unMediaTrackSupportedConstraints
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MediaTrackSupportedConstraints where
+  pFromJSVal = MediaTrackSupportedConstraints
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MediaTrackSupportedConstraints where
+  toJSVal = return . unMediaTrackSupportedConstraints
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MediaTrackSupportedConstraints where
+  fromJSVal = return . fmap MediaTrackSupportedConstraints . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MediaTrackSupportedConstraints where
+  typeGType _ = gTypeMediaTrackSupportedConstraints
+  {-# INLINE typeGType #-}
+noMediaTrackSupportedConstraints :: Maybe MediaTrackSupportedConstraints
+noMediaTrackSupportedConstraints = Nothing
+{-# INLINE noMediaTrackSupportedConstraints #-}
+
+foreign import javascript unsafe "window[\"MediaTrackSupportedConstraints\"]" gTypeMediaTrackSupportedConstraints :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MessageChannel".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageChannel Mozilla MessageChannel documentation>
+newtype MessageChannel = MessageChannel { unMessageChannel :: JSVal }
+
+instance Eq (MessageChannel) where
+  (MessageChannel a) == (MessageChannel b) = js_eq a b
+
+instance PToJSVal MessageChannel where
+  pToJSVal = unMessageChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageChannel where
+  pFromJSVal = MessageChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageChannel where
+  toJSVal = return . unMessageChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageChannel where
+  fromJSVal = return . fmap MessageChannel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MessageChannel where
+  typeGType _ = gTypeMessageChannel
+  {-# INLINE typeGType #-}
+noMessageChannel :: Maybe MessageChannel
+noMessageChannel = Nothing
+{-# INLINE noMessageChannel #-}
+
+foreign import javascript unsafe "window[\"MessageChannel\"]" gTypeMessageChannel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MessageEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageEvent Mozilla MessageEvent documentation>
+newtype MessageEvent = MessageEvent { unMessageEvent :: JSVal }
+
+instance Eq (MessageEvent) where
+  (MessageEvent a) == (MessageEvent b) = js_eq a b
+
+instance PToJSVal MessageEvent where
+  pToJSVal = unMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageEvent where
+  pFromJSVal = MessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageEvent where
+  toJSVal = return . unMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageEvent where
+  fromJSVal = return . fmap MessageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MessageEvent
+instance IsGObject MessageEvent where
+  typeGType _ = gTypeMessageEvent
+  {-# INLINE typeGType #-}
+noMessageEvent :: Maybe MessageEvent
+noMessageEvent = Nothing
+{-# INLINE noMessageEvent #-}
+
+foreign import javascript unsafe "window[\"MessageEvent\"]" gTypeMessageEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MessageEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessageEventInit Mozilla MessageEventInit documentation>
+newtype MessageEventInit = MessageEventInit { unMessageEventInit :: JSVal }
+
+instance Eq (MessageEventInit) where
+  (MessageEventInit a) == (MessageEventInit b) = js_eq a b
+
+instance PToJSVal MessageEventInit where
+  pToJSVal = unMessageEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessageEventInit where
+  pFromJSVal = MessageEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessageEventInit where
+  toJSVal = return . unMessageEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessageEventInit where
+  fromJSVal = return . fmap MessageEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit MessageEventInit
+instance IsGObject MessageEventInit where
+  typeGType _ = gTypeMessageEventInit
+  {-# INLINE typeGType #-}
+noMessageEventInit :: Maybe MessageEventInit
+noMessageEventInit = Nothing
+{-# INLINE noMessageEventInit #-}
+
+foreign import javascript unsafe "window[\"MessageEventInit\"]" gTypeMessageEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MessagePort".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MessagePort Mozilla MessagePort documentation>
+newtype MessagePort = MessagePort { unMessagePort :: JSVal }
+
+instance Eq (MessagePort) where
+  (MessagePort a) == (MessagePort b) = js_eq a b
+
+instance PToJSVal MessagePort where
+  pToJSVal = unMessagePort
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MessagePort where
+  pFromJSVal = MessagePort
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MessagePort where
+  toJSVal = return . unMessagePort
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MessagePort where
+  fromJSVal = return . fmap MessagePort . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget MessagePort
+instance IsGObject MessagePort where
+  typeGType _ = gTypeMessagePort
+  {-# INLINE typeGType #-}
+noMessagePort :: Maybe MessagePort
+noMessagePort = Nothing
+{-# INLINE noMessagePort #-}
+
+foreign import javascript unsafe "window[\"MessagePort\"]" gTypeMessagePort :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MimeType".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeType Mozilla MimeType documentation>
+newtype MimeType = MimeType { unMimeType :: JSVal }
+
+instance Eq (MimeType) where
+  (MimeType a) == (MimeType b) = js_eq a b
+
+instance PToJSVal MimeType where
+  pToJSVal = unMimeType
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeType where
+  pFromJSVal = MimeType
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeType where
+  toJSVal = return . unMimeType
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeType where
+  fromJSVal = return . fmap MimeType . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MimeType where
+  typeGType _ = gTypeMimeType
+  {-# INLINE typeGType #-}
+noMimeType :: Maybe MimeType
+noMimeType = Nothing
+{-# INLINE noMimeType #-}
+
+foreign import javascript unsafe "window[\"MimeType\"]" gTypeMimeType :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MimeTypeArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MimeTypeArray Mozilla MimeTypeArray documentation>
+newtype MimeTypeArray = MimeTypeArray { unMimeTypeArray :: JSVal }
+
+instance Eq (MimeTypeArray) where
+  (MimeTypeArray a) == (MimeTypeArray b) = js_eq a b
+
+instance PToJSVal MimeTypeArray where
+  pToJSVal = unMimeTypeArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MimeTypeArray where
+  pFromJSVal = MimeTypeArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MimeTypeArray where
+  toJSVal = return . unMimeTypeArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MimeTypeArray where
+  fromJSVal = return . fmap MimeTypeArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MimeTypeArray where
+  typeGType _ = gTypeMimeTypeArray
+  {-# INLINE typeGType #-}
+noMimeTypeArray :: Maybe MimeTypeArray
+noMimeTypeArray = Nothing
+{-# INLINE noMimeTypeArray #-}
+
+foreign import javascript unsafe "window[\"MimeTypeArray\"]" gTypeMimeTypeArray :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MouseEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent Mozilla MouseEvent documentation>
+newtype MouseEvent = MouseEvent { unMouseEvent :: JSVal }
+
+instance Eq (MouseEvent) where
+  (MouseEvent a) == (MouseEvent b) = js_eq a b
+
+instance PToJSVal MouseEvent where
+  pToJSVal = unMouseEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MouseEvent where
+  pFromJSVal = MouseEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MouseEvent where
+  toJSVal = return . unMouseEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MouseEvent where
+  fromJSVal = return . fmap MouseEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsUIEvent o, IsEvent o, IsGObject o) => IsMouseEvent o
+toMouseEvent :: IsMouseEvent o => o -> MouseEvent
+toMouseEvent = MouseEvent . coerce
+
+instance IsMouseEvent MouseEvent
+instance IsUIEvent MouseEvent
+instance IsEvent MouseEvent
+instance IsGObject MouseEvent where
+  typeGType _ = gTypeMouseEvent
+  {-# INLINE typeGType #-}
+noMouseEvent :: Maybe MouseEvent
+noMouseEvent = Nothing
+{-# INLINE noMouseEvent #-}
+
+foreign import javascript unsafe "window[\"MouseEvent\"]" gTypeMouseEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MouseEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventModifierInit"
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MouseEventInit Mozilla MouseEventInit documentation>
+newtype MouseEventInit = MouseEventInit { unMouseEventInit :: JSVal }
+
+instance Eq (MouseEventInit) where
+  (MouseEventInit a) == (MouseEventInit b) = js_eq a b
+
+instance PToJSVal MouseEventInit where
+  pToJSVal = unMouseEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MouseEventInit where
+  pFromJSVal = MouseEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MouseEventInit where
+  toJSVal = return . unMouseEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MouseEventInit where
+  fromJSVal = return . fmap MouseEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventModifierInit o, IsUIEventInit o, IsEventInit o, IsGObject o) => IsMouseEventInit o
+toMouseEventInit :: IsMouseEventInit o => o -> MouseEventInit
+toMouseEventInit = MouseEventInit . coerce
+
+instance IsMouseEventInit MouseEventInit
+instance IsEventModifierInit MouseEventInit
+instance IsUIEventInit MouseEventInit
+instance IsEventInit MouseEventInit
+instance IsGObject MouseEventInit where
+  typeGType _ = gTypeMouseEventInit
+  {-# INLINE typeGType #-}
+noMouseEventInit :: Maybe MouseEventInit
+noMouseEventInit = Nothing
+{-# INLINE noMouseEventInit #-}
+
+foreign import javascript unsafe "window[\"MouseEventInit\"]" gTypeMouseEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MutationEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationEvent Mozilla MutationEvent documentation>
+newtype MutationEvent = MutationEvent { unMutationEvent :: JSVal }
+
+instance Eq (MutationEvent) where
+  (MutationEvent a) == (MutationEvent b) = js_eq a b
+
+instance PToJSVal MutationEvent where
+  pToJSVal = unMutationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationEvent where
+  pFromJSVal = MutationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationEvent where
+  toJSVal = return . unMutationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationEvent where
+  fromJSVal = return . fmap MutationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent MutationEvent
+instance IsGObject MutationEvent where
+  typeGType _ = gTypeMutationEvent
+  {-# INLINE typeGType #-}
+noMutationEvent :: Maybe MutationEvent
+noMutationEvent = Nothing
+{-# INLINE noMutationEvent #-}
+
+foreign import javascript unsafe "window[\"MutationEvent\"]" gTypeMutationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MutationObserver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver Mozilla MutationObserver documentation>
+newtype MutationObserver = MutationObserver { unMutationObserver :: JSVal }
+
+instance Eq (MutationObserver) where
+  (MutationObserver a) == (MutationObserver b) = js_eq a b
+
+instance PToJSVal MutationObserver where
+  pToJSVal = unMutationObserver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationObserver where
+  pFromJSVal = MutationObserver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationObserver where
+  toJSVal = return . unMutationObserver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationObserver where
+  fromJSVal = return . fmap MutationObserver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MutationObserver where
+  typeGType _ = gTypeMutationObserver
+  {-# INLINE typeGType #-}
+noMutationObserver :: Maybe MutationObserver
+noMutationObserver = Nothing
+{-# INLINE noMutationObserver #-}
+
+foreign import javascript unsafe "window[\"MutationObserver\"]" gTypeMutationObserver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MutationObserverInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationObserverInit Mozilla MutationObserverInit documentation>
+newtype MutationObserverInit = MutationObserverInit { unMutationObserverInit :: JSVal }
+
+instance Eq (MutationObserverInit) where
+  (MutationObserverInit a) == (MutationObserverInit b) = js_eq a b
+
+instance PToJSVal MutationObserverInit where
+  pToJSVal = unMutationObserverInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationObserverInit where
+  pFromJSVal = MutationObserverInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationObserverInit where
+  toJSVal = return . unMutationObserverInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationObserverInit where
+  fromJSVal = return . fmap MutationObserverInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MutationObserverInit where
+  typeGType _ = gTypeMutationObserverInit
+  {-# INLINE typeGType #-}
+noMutationObserverInit :: Maybe MutationObserverInit
+noMutationObserverInit = Nothing
+{-# INLINE noMutationObserverInit #-}
+
+foreign import javascript unsafe "window[\"MutationObserverInit\"]" gTypeMutationObserverInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.MutationRecord".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/MutationRecord Mozilla MutationRecord documentation>
+newtype MutationRecord = MutationRecord { unMutationRecord :: JSVal }
+
+instance Eq (MutationRecord) where
+  (MutationRecord a) == (MutationRecord b) = js_eq a b
+
+instance PToJSVal MutationRecord where
+  pToJSVal = unMutationRecord
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal MutationRecord where
+  pFromJSVal = MutationRecord
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal MutationRecord where
+  toJSVal = return . unMutationRecord
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal MutationRecord where
+  fromJSVal = return . fmap MutationRecord . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject MutationRecord where
+  typeGType _ = gTypeMutationRecord
+  {-# INLINE typeGType #-}
+noMutationRecord :: Maybe MutationRecord
+noMutationRecord = Nothing
+{-# INLINE noMutationRecord #-}
+
+foreign import javascript unsafe "window[\"MutationRecord\"]" gTypeMutationRecord :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NamedNodeMap".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NamedNodeMap Mozilla NamedNodeMap documentation>
+newtype NamedNodeMap = NamedNodeMap { unNamedNodeMap :: JSVal }
+
+instance Eq (NamedNodeMap) where
+  (NamedNodeMap a) == (NamedNodeMap b) = js_eq a b
+
+instance PToJSVal NamedNodeMap where
+  pToJSVal = unNamedNodeMap
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NamedNodeMap where
+  pFromJSVal = NamedNodeMap
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NamedNodeMap where
+  toJSVal = return . unNamedNodeMap
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NamedNodeMap where
+  fromJSVal = return . fmap NamedNodeMap . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject NamedNodeMap where
+  typeGType _ = gTypeNamedNodeMap
+  {-# INLINE typeGType #-}
+noNamedNodeMap :: Maybe NamedNodeMap
+noNamedNodeMap = Nothing
+{-# INLINE noNamedNodeMap #-}
+
+foreign import javascript unsafe "window[\"NamedNodeMap\"]" gTypeNamedNodeMap :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Navigator".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.NavigatorOnLine"
+--     * "GHCJS.DOM.NavigatorLanguage"
+--     * "GHCJS.DOM.NavigatorID"
+--     * "GHCJS.DOM.NavigatorConcurrentHardware"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Navigator Mozilla Navigator documentation>
+newtype Navigator = Navigator { unNavigator :: JSVal }
+
+instance Eq (Navigator) where
+  (Navigator a) == (Navigator b) = js_eq a b
+
+instance PToJSVal Navigator where
+  pToJSVal = unNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Navigator where
+  pFromJSVal = Navigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Navigator where
+  toJSVal = return . unNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Navigator where
+  fromJSVal = return . fmap Navigator . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNavigatorOnLine Navigator
+instance IsNavigatorLanguage Navigator
+instance IsNavigatorID Navigator
+instance IsNavigatorConcurrentHardware Navigator
+instance IsGObject Navigator where
+  typeGType _ = gTypeNavigator
+  {-# INLINE typeGType #-}
+noNavigator :: Maybe Navigator
+noNavigator = Nothing
+{-# INLINE noNavigator #-}
+
+foreign import javascript unsafe "window[\"Navigator\"]" gTypeNavigator :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NavigatorConcurrentHardware".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorConcurrentHardware Mozilla NavigatorConcurrentHardware documentation>
+newtype NavigatorConcurrentHardware = NavigatorConcurrentHardware { unNavigatorConcurrentHardware :: JSVal }
+
+instance Eq (NavigatorConcurrentHardware) where
+  (NavigatorConcurrentHardware a) == (NavigatorConcurrentHardware b) = js_eq a b
+
+instance PToJSVal NavigatorConcurrentHardware where
+  pToJSVal = unNavigatorConcurrentHardware
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorConcurrentHardware where
+  pFromJSVal = NavigatorConcurrentHardware
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorConcurrentHardware where
+  toJSVal = return . unNavigatorConcurrentHardware
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorConcurrentHardware where
+  fromJSVal = return . fmap NavigatorConcurrentHardware . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNavigatorConcurrentHardware o
+toNavigatorConcurrentHardware :: IsNavigatorConcurrentHardware o => o -> NavigatorConcurrentHardware
+toNavigatorConcurrentHardware = NavigatorConcurrentHardware . coerce
+
+instance IsNavigatorConcurrentHardware NavigatorConcurrentHardware
+instance IsGObject NavigatorConcurrentHardware where
+  typeGType _ = gTypeNavigatorConcurrentHardware
+  {-# INLINE typeGType #-}
+noNavigatorConcurrentHardware :: Maybe NavigatorConcurrentHardware
+noNavigatorConcurrentHardware = Nothing
+{-# INLINE noNavigatorConcurrentHardware #-}
+
+foreign import javascript unsafe "window[\"NavigatorConcurrentHardware\"]" gTypeNavigatorConcurrentHardware :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NavigatorID".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorID Mozilla NavigatorID documentation>
+newtype NavigatorID = NavigatorID { unNavigatorID :: JSVal }
+
+instance Eq (NavigatorID) where
+  (NavigatorID a) == (NavigatorID b) = js_eq a b
+
+instance PToJSVal NavigatorID where
+  pToJSVal = unNavigatorID
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorID where
+  pFromJSVal = NavigatorID
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorID where
+  toJSVal = return . unNavigatorID
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorID where
+  fromJSVal = return . fmap NavigatorID . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNavigatorID o
+toNavigatorID :: IsNavigatorID o => o -> NavigatorID
+toNavigatorID = NavigatorID . coerce
+
+instance IsNavigatorID NavigatorID
+instance IsGObject NavigatorID where
+  typeGType _ = gTypeNavigatorID
+  {-# INLINE typeGType #-}
+noNavigatorID :: Maybe NavigatorID
+noNavigatorID = Nothing
+{-# INLINE noNavigatorID #-}
+
+foreign import javascript unsafe "window[\"NavigatorID\"]" gTypeNavigatorID :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NavigatorLanguage".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorLanguage Mozilla NavigatorLanguage documentation>
+newtype NavigatorLanguage = NavigatorLanguage { unNavigatorLanguage :: JSVal }
+
+instance Eq (NavigatorLanguage) where
+  (NavigatorLanguage a) == (NavigatorLanguage b) = js_eq a b
+
+instance PToJSVal NavigatorLanguage where
+  pToJSVal = unNavigatorLanguage
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorLanguage where
+  pFromJSVal = NavigatorLanguage
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorLanguage where
+  toJSVal = return . unNavigatorLanguage
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorLanguage where
+  fromJSVal = return . fmap NavigatorLanguage . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNavigatorLanguage o
+toNavigatorLanguage :: IsNavigatorLanguage o => o -> NavigatorLanguage
+toNavigatorLanguage = NavigatorLanguage . coerce
+
+instance IsNavigatorLanguage NavigatorLanguage
+instance IsGObject NavigatorLanguage where
+  typeGType _ = gTypeNavigatorLanguage
+  {-# INLINE typeGType #-}
+noNavigatorLanguage :: Maybe NavigatorLanguage
+noNavigatorLanguage = Nothing
+{-# INLINE noNavigatorLanguage #-}
+
+foreign import javascript unsafe "window[\"NavigatorLanguage\"]" gTypeNavigatorLanguage :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NavigatorOnLine".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorOnLine Mozilla NavigatorOnLine documentation>
+newtype NavigatorOnLine = NavigatorOnLine { unNavigatorOnLine :: JSVal }
+
+instance Eq (NavigatorOnLine) where
+  (NavigatorOnLine a) == (NavigatorOnLine b) = js_eq a b
+
+instance PToJSVal NavigatorOnLine where
+  pToJSVal = unNavigatorOnLine
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorOnLine where
+  pFromJSVal = NavigatorOnLine
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorOnLine where
+  toJSVal = return . unNavigatorOnLine
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorOnLine where
+  fromJSVal = return . fmap NavigatorOnLine . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNavigatorOnLine o
+toNavigatorOnLine :: IsNavigatorOnLine o => o -> NavigatorOnLine
+toNavigatorOnLine = NavigatorOnLine . coerce
+
+instance IsNavigatorOnLine NavigatorOnLine
+instance IsGObject NavigatorOnLine where
+  typeGType _ = gTypeNavigatorOnLine
+  {-# INLINE typeGType #-}
+noNavigatorOnLine :: Maybe NavigatorOnLine
+noNavigatorOnLine = Nothing
+{-# INLINE noNavigatorOnLine #-}
+
+foreign import javascript unsafe "window[\"NavigatorOnLine\"]" gTypeNavigatorOnLine :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NavigatorUserMediaError".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DOMError"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NavigatorUserMediaError Mozilla NavigatorUserMediaError documentation>
+newtype NavigatorUserMediaError = NavigatorUserMediaError { unNavigatorUserMediaError :: JSVal }
+
+instance Eq (NavigatorUserMediaError) where
+  (NavigatorUserMediaError a) == (NavigatorUserMediaError b) = js_eq a b
+
+instance PToJSVal NavigatorUserMediaError where
+  pToJSVal = unNavigatorUserMediaError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NavigatorUserMediaError where
+  pFromJSVal = NavigatorUserMediaError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NavigatorUserMediaError where
+  toJSVal = return . unNavigatorUserMediaError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NavigatorUserMediaError where
+  fromJSVal = return . fmap NavigatorUserMediaError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDOMError NavigatorUserMediaError
+instance IsGObject NavigatorUserMediaError where
+  typeGType _ = gTypeNavigatorUserMediaError
+  {-# INLINE typeGType #-}
+noNavigatorUserMediaError :: Maybe NavigatorUserMediaError
+noNavigatorUserMediaError = Nothing
+{-# INLINE noNavigatorUserMediaError #-}
+
+foreign import javascript unsafe "window[\"NavigatorUserMediaError\"]" gTypeNavigatorUserMediaError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Node".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Node Mozilla Node documentation>
+newtype Node = Node { unNode :: JSVal }
+
+instance Eq (Node) where
+  (Node a) == (Node b) = js_eq a b
+
+instance PToJSVal Node where
+  pToJSVal = unNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Node where
+  pFromJSVal = Node
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Node where
+  toJSVal = return . unNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Node where
+  fromJSVal = return . fmap Node . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsNode o
+toNode :: IsNode o => o -> Node
+toNode = Node . coerce
+
+instance IsNode Node
+instance IsEventTarget Node
+instance IsGObject Node where
+  typeGType _ = gTypeNode
+  {-# INLINE typeGType #-}
+noNode :: Maybe Node
+noNode = Nothing
+{-# INLINE noNode #-}
+
+foreign import javascript unsafe "window[\"Node\"]" gTypeNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NodeIterator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeIterator Mozilla NodeIterator documentation>
+newtype NodeIterator = NodeIterator { unNodeIterator :: JSVal }
+
+instance Eq (NodeIterator) where
+  (NodeIterator a) == (NodeIterator b) = js_eq a b
+
+instance PToJSVal NodeIterator where
+  pToJSVal = unNodeIterator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeIterator where
+  pFromJSVal = NodeIterator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeIterator where
+  toJSVal = return . unNodeIterator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeIterator where
+  fromJSVal = return . fmap NodeIterator . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject NodeIterator where
+  typeGType _ = gTypeNodeIterator
+  {-# INLINE typeGType #-}
+noNodeIterator :: Maybe NodeIterator
+noNodeIterator = Nothing
+{-# INLINE noNodeIterator #-}
+
+foreign import javascript unsafe "window[\"NodeIterator\"]" gTypeNodeIterator :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NodeList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NodeList Mozilla NodeList documentation>
+newtype NodeList = NodeList { unNodeList :: JSVal }
+
+instance Eq (NodeList) where
+  (NodeList a) == (NodeList b) = js_eq a b
+
+instance PToJSVal NodeList where
+  pToJSVal = unNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NodeList where
+  pFromJSVal = NodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NodeList where
+  toJSVal = return . unNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NodeList where
+  fromJSVal = return . fmap NodeList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNodeList o
+toNodeList :: IsNodeList o => o -> NodeList
+toNodeList = NodeList . coerce
+
+instance IsNodeList NodeList
+instance IsGObject NodeList where
+  typeGType _ = gTypeNodeList
+  {-# INLINE typeGType #-}
+noNodeList :: Maybe NodeList
+noNodeList = Nothing
+{-# INLINE noNodeList #-}
+
+foreign import javascript unsafe "window[\"NodeList\"]" gTypeNodeList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NonDocumentTypeChildNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NonDocumentTypeChildNode Mozilla NonDocumentTypeChildNode documentation>
+newtype NonDocumentTypeChildNode = NonDocumentTypeChildNode { unNonDocumentTypeChildNode :: JSVal }
+
+instance Eq (NonDocumentTypeChildNode) where
+  (NonDocumentTypeChildNode a) == (NonDocumentTypeChildNode b) = js_eq a b
+
+instance PToJSVal NonDocumentTypeChildNode where
+  pToJSVal = unNonDocumentTypeChildNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NonDocumentTypeChildNode where
+  pFromJSVal = NonDocumentTypeChildNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NonDocumentTypeChildNode where
+  toJSVal = return . unNonDocumentTypeChildNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NonDocumentTypeChildNode where
+  fromJSVal = return . fmap NonDocumentTypeChildNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNonDocumentTypeChildNode o
+toNonDocumentTypeChildNode :: IsNonDocumentTypeChildNode o => o -> NonDocumentTypeChildNode
+toNonDocumentTypeChildNode = NonDocumentTypeChildNode . coerce
+
+instance IsNonDocumentTypeChildNode NonDocumentTypeChildNode
+instance IsGObject NonDocumentTypeChildNode where
+  typeGType _ = gTypeNonDocumentTypeChildNode
+  {-# INLINE typeGType #-}
+noNonDocumentTypeChildNode :: Maybe NonDocumentTypeChildNode
+noNonDocumentTypeChildNode = Nothing
+{-# INLINE noNonDocumentTypeChildNode #-}
+
+foreign import javascript unsafe "window[\"NonDocumentTypeChildNode\"]" gTypeNonDocumentTypeChildNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NonElementParentNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NonElementParentNode Mozilla NonElementParentNode documentation>
+newtype NonElementParentNode = NonElementParentNode { unNonElementParentNode :: JSVal }
+
+instance Eq (NonElementParentNode) where
+  (NonElementParentNode a) == (NonElementParentNode b) = js_eq a b
+
+instance PToJSVal NonElementParentNode where
+  pToJSVal = unNonElementParentNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NonElementParentNode where
+  pFromJSVal = NonElementParentNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NonElementParentNode where
+  toJSVal = return . unNonElementParentNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NonElementParentNode where
+  fromJSVal = return . fmap NonElementParentNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsNonElementParentNode o
+toNonElementParentNode :: IsNonElementParentNode o => o -> NonElementParentNode
+toNonElementParentNode = NonElementParentNode . coerce
+
+instance IsNonElementParentNode NonElementParentNode
+instance IsGObject NonElementParentNode where
+  typeGType _ = gTypeNonElementParentNode
+  {-# INLINE typeGType #-}
+noNonElementParentNode :: Maybe NonElementParentNode
+noNonElementParentNode = Nothing
+{-# INLINE noNonElementParentNode #-}
+
+foreign import javascript unsafe "window[\"NonElementParentNode\"]" gTypeNonElementParentNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Notification".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Notification Mozilla Notification documentation>
+newtype Notification = Notification { unNotification :: JSVal }
+
+instance Eq (Notification) where
+  (Notification a) == (Notification b) = js_eq a b
+
+instance PToJSVal Notification where
+  pToJSVal = unNotification
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Notification where
+  pFromJSVal = Notification
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Notification where
+  toJSVal = return . unNotification
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Notification where
+  fromJSVal = return . fmap Notification . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget Notification
+instance IsGObject Notification where
+  typeGType _ = gTypeNotification
+  {-# INLINE typeGType #-}
+noNotification :: Maybe Notification
+noNotification = Nothing
+{-# INLINE noNotification #-}
+
+foreign import javascript unsafe "window[\"Notification\"]" gTypeNotification :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.NotificationOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/NotificationOptions Mozilla NotificationOptions documentation>
+newtype NotificationOptions = NotificationOptions { unNotificationOptions :: JSVal }
+
+instance Eq (NotificationOptions) where
+  (NotificationOptions a) == (NotificationOptions b) = js_eq a b
+
+instance PToJSVal NotificationOptions where
+  pToJSVal = unNotificationOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal NotificationOptions where
+  pFromJSVal = NotificationOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal NotificationOptions where
+  toJSVal = return . unNotificationOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal NotificationOptions where
+  fromJSVal = return . fmap NotificationOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject NotificationOptions where
+  typeGType _ = gTypeNotificationOptions
+  {-# INLINE typeGType #-}
+noNotificationOptions :: Maybe NotificationOptions
+noNotificationOptions = Nothing
+{-# INLINE noNotificationOptions #-}
+
+foreign import javascript unsafe "window[\"NotificationOptions\"]" gTypeNotificationOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESElementIndexUint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESElementIndexUint Mozilla OESElementIndexUint documentation>
+newtype OESElementIndexUint = OESElementIndexUint { unOESElementIndexUint :: JSVal }
+
+instance Eq (OESElementIndexUint) where
+  (OESElementIndexUint a) == (OESElementIndexUint b) = js_eq a b
+
+instance PToJSVal OESElementIndexUint where
+  pToJSVal = unOESElementIndexUint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESElementIndexUint where
+  pFromJSVal = OESElementIndexUint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESElementIndexUint where
+  toJSVal = return . unOESElementIndexUint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESElementIndexUint where
+  fromJSVal = return . fmap OESElementIndexUint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESElementIndexUint where
+  typeGType _ = gTypeOESElementIndexUint
+  {-# INLINE typeGType #-}
+noOESElementIndexUint :: Maybe OESElementIndexUint
+noOESElementIndexUint = Nothing
+{-# INLINE noOESElementIndexUint #-}
+
+foreign import javascript unsafe "window[\"OESElementIndexUint\"]" gTypeOESElementIndexUint :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESStandardDerivatives".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESStandardDerivatives Mozilla OESStandardDerivatives documentation>
+newtype OESStandardDerivatives = OESStandardDerivatives { unOESStandardDerivatives :: JSVal }
+
+instance Eq (OESStandardDerivatives) where
+  (OESStandardDerivatives a) == (OESStandardDerivatives b) = js_eq a b
+
+instance PToJSVal OESStandardDerivatives where
+  pToJSVal = unOESStandardDerivatives
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESStandardDerivatives where
+  pFromJSVal = OESStandardDerivatives
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESStandardDerivatives where
+  toJSVal = return . unOESStandardDerivatives
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESStandardDerivatives where
+  fromJSVal = return . fmap OESStandardDerivatives . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESStandardDerivatives where
+  typeGType _ = gTypeOESStandardDerivatives
+  {-# INLINE typeGType #-}
+noOESStandardDerivatives :: Maybe OESStandardDerivatives
+noOESStandardDerivatives = Nothing
+{-# INLINE noOESStandardDerivatives #-}
+
+foreign import javascript unsafe "window[\"OESStandardDerivatives\"]" gTypeOESStandardDerivatives :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESTextureFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloat Mozilla OESTextureFloat documentation>
+newtype OESTextureFloat = OESTextureFloat { unOESTextureFloat :: JSVal }
+
+instance Eq (OESTextureFloat) where
+  (OESTextureFloat a) == (OESTextureFloat b) = js_eq a b
+
+instance PToJSVal OESTextureFloat where
+  pToJSVal = unOESTextureFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloat where
+  pFromJSVal = OESTextureFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloat where
+  toJSVal = return . unOESTextureFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloat where
+  fromJSVal = return . fmap OESTextureFloat . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESTextureFloat where
+  typeGType _ = gTypeOESTextureFloat
+  {-# INLINE typeGType #-}
+noOESTextureFloat :: Maybe OESTextureFloat
+noOESTextureFloat = Nothing
+{-# INLINE noOESTextureFloat #-}
+
+foreign import javascript unsafe "window[\"OESTextureFloat\"]" gTypeOESTextureFloat :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESTextureFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureFloatLinear Mozilla OESTextureFloatLinear documentation>
+newtype OESTextureFloatLinear = OESTextureFloatLinear { unOESTextureFloatLinear :: JSVal }
+
+instance Eq (OESTextureFloatLinear) where
+  (OESTextureFloatLinear a) == (OESTextureFloatLinear b) = js_eq a b
+
+instance PToJSVal OESTextureFloatLinear where
+  pToJSVal = unOESTextureFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureFloatLinear where
+  pFromJSVal = OESTextureFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureFloatLinear where
+  toJSVal = return . unOESTextureFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureFloatLinear where
+  fromJSVal = return . fmap OESTextureFloatLinear . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESTextureFloatLinear where
+  typeGType _ = gTypeOESTextureFloatLinear
+  {-# INLINE typeGType #-}
+noOESTextureFloatLinear :: Maybe OESTextureFloatLinear
+noOESTextureFloatLinear = Nothing
+{-# INLINE noOESTextureFloatLinear #-}
+
+foreign import javascript unsafe "window[\"OESTextureFloatLinear\"]" gTypeOESTextureFloatLinear :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESTextureHalfFloat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloat Mozilla OESTextureHalfFloat documentation>
+newtype OESTextureHalfFloat = OESTextureHalfFloat { unOESTextureHalfFloat :: JSVal }
+
+instance Eq (OESTextureHalfFloat) where
+  (OESTextureHalfFloat a) == (OESTextureHalfFloat b) = js_eq a b
+
+instance PToJSVal OESTextureHalfFloat where
+  pToJSVal = unOESTextureHalfFloat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloat where
+  pFromJSVal = OESTextureHalfFloat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloat where
+  toJSVal = return . unOESTextureHalfFloat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloat where
+  fromJSVal = return . fmap OESTextureHalfFloat . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESTextureHalfFloat where
+  typeGType _ = gTypeOESTextureHalfFloat
+  {-# INLINE typeGType #-}
+noOESTextureHalfFloat :: Maybe OESTextureHalfFloat
+noOESTextureHalfFloat = Nothing
+{-# INLINE noOESTextureHalfFloat #-}
+
+foreign import javascript unsafe "window[\"OESTextureHalfFloat\"]" gTypeOESTextureHalfFloat :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESTextureHalfFloatLinear".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESTextureHalfFloatLinear Mozilla OESTextureHalfFloatLinear documentation>
+newtype OESTextureHalfFloatLinear = OESTextureHalfFloatLinear { unOESTextureHalfFloatLinear :: JSVal }
+
+instance Eq (OESTextureHalfFloatLinear) where
+  (OESTextureHalfFloatLinear a) == (OESTextureHalfFloatLinear b) = js_eq a b
+
+instance PToJSVal OESTextureHalfFloatLinear where
+  pToJSVal = unOESTextureHalfFloatLinear
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESTextureHalfFloatLinear where
+  pFromJSVal = OESTextureHalfFloatLinear
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESTextureHalfFloatLinear where
+  toJSVal = return . unOESTextureHalfFloatLinear
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESTextureHalfFloatLinear where
+  fromJSVal = return . fmap OESTextureHalfFloatLinear . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESTextureHalfFloatLinear where
+  typeGType _ = gTypeOESTextureHalfFloatLinear
+  {-# INLINE typeGType #-}
+noOESTextureHalfFloatLinear :: Maybe OESTextureHalfFloatLinear
+noOESTextureHalfFloatLinear = Nothing
+{-# INLINE noOESTextureHalfFloatLinear #-}
+
+foreign import javascript unsafe "window[\"OESTextureHalfFloatLinear\"]" gTypeOESTextureHalfFloatLinear :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OESVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OESVertexArrayObject Mozilla OESVertexArrayObject documentation>
+newtype OESVertexArrayObject = OESVertexArrayObject { unOESVertexArrayObject :: JSVal }
+
+instance Eq (OESVertexArrayObject) where
+  (OESVertexArrayObject a) == (OESVertexArrayObject b) = js_eq a b
+
+instance PToJSVal OESVertexArrayObject where
+  pToJSVal = unOESVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OESVertexArrayObject where
+  pFromJSVal = OESVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OESVertexArrayObject where
+  toJSVal = return . unOESVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OESVertexArrayObject where
+  fromJSVal = return . fmap OESVertexArrayObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OESVertexArrayObject where
+  typeGType _ = gTypeOESVertexArrayObject
+  {-# INLINE typeGType #-}
+noOESVertexArrayObject :: Maybe OESVertexArrayObject
+noOESVertexArrayObject = Nothing
+{-# INLINE noOESVertexArrayObject #-}
+
+foreign import javascript unsafe "window[\"OESVertexArrayObject\"]" gTypeOESVertexArrayObject :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OfflineAudioCompletionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioCompletionEvent Mozilla OfflineAudioCompletionEvent documentation>
+newtype OfflineAudioCompletionEvent = OfflineAudioCompletionEvent { unOfflineAudioCompletionEvent :: JSVal }
+
+instance Eq (OfflineAudioCompletionEvent) where
+  (OfflineAudioCompletionEvent a) == (OfflineAudioCompletionEvent b) = js_eq a b
+
+instance PToJSVal OfflineAudioCompletionEvent where
+  pToJSVal = unOfflineAudioCompletionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioCompletionEvent where
+  pFromJSVal = OfflineAudioCompletionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioCompletionEvent where
+  toJSVal = return . unOfflineAudioCompletionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioCompletionEvent where
+  fromJSVal = return . fmap OfflineAudioCompletionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent OfflineAudioCompletionEvent
+instance IsGObject OfflineAudioCompletionEvent where
+  typeGType _ = gTypeOfflineAudioCompletionEvent
+  {-# INLINE typeGType #-}
+noOfflineAudioCompletionEvent :: Maybe OfflineAudioCompletionEvent
+noOfflineAudioCompletionEvent = Nothing
+{-# INLINE noOfflineAudioCompletionEvent #-}
+
+foreign import javascript unsafe "window[\"OfflineAudioCompletionEvent\"]" gTypeOfflineAudioCompletionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OfflineAudioContext".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioContext"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OfflineAudioContext Mozilla OfflineAudioContext documentation>
+newtype OfflineAudioContext = OfflineAudioContext { unOfflineAudioContext :: JSVal }
+
+instance Eq (OfflineAudioContext) where
+  (OfflineAudioContext a) == (OfflineAudioContext b) = js_eq a b
+
+instance PToJSVal OfflineAudioContext where
+  pToJSVal = unOfflineAudioContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OfflineAudioContext where
+  pFromJSVal = OfflineAudioContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OfflineAudioContext where
+  toJSVal = return . unOfflineAudioContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OfflineAudioContext where
+  fromJSVal = return . fmap OfflineAudioContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioContext OfflineAudioContext
+instance IsEventTarget OfflineAudioContext
+instance IsGObject OfflineAudioContext where
+  typeGType _ = gTypeOfflineAudioContext
+  {-# INLINE typeGType #-}
+noOfflineAudioContext :: Maybe OfflineAudioContext
+noOfflineAudioContext = Nothing
+{-# INLINE noOfflineAudioContext #-}
+
+foreign import javascript unsafe "window[\"OfflineAudioContext\"]" gTypeOfflineAudioContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OscillatorNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OscillatorNode Mozilla OscillatorNode documentation>
+newtype OscillatorNode = OscillatorNode { unOscillatorNode :: JSVal }
+
+instance Eq (OscillatorNode) where
+  (OscillatorNode a) == (OscillatorNode b) = js_eq a b
+
+instance PToJSVal OscillatorNode where
+  pToJSVal = unOscillatorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OscillatorNode where
+  pFromJSVal = OscillatorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OscillatorNode where
+  toJSVal = return . unOscillatorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OscillatorNode where
+  fromJSVal = return . fmap OscillatorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode OscillatorNode
+instance IsEventTarget OscillatorNode
+instance IsGObject OscillatorNode where
+  typeGType _ = gTypeOscillatorNode
+  {-# INLINE typeGType #-}
+noOscillatorNode :: Maybe OscillatorNode
+noOscillatorNode = Nothing
+{-# INLINE noOscillatorNode #-}
+
+foreign import javascript unsafe "window[\"OscillatorNode\"]" gTypeOscillatorNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OverconstrainedError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedError Mozilla OverconstrainedError documentation>
+newtype OverconstrainedError = OverconstrainedError { unOverconstrainedError :: JSVal }
+
+instance Eq (OverconstrainedError) where
+  (OverconstrainedError a) == (OverconstrainedError b) = js_eq a b
+
+instance PToJSVal OverconstrainedError where
+  pToJSVal = unOverconstrainedError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverconstrainedError where
+  pFromJSVal = OverconstrainedError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverconstrainedError where
+  toJSVal = return . unOverconstrainedError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverconstrainedError where
+  fromJSVal = return . fmap OverconstrainedError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject OverconstrainedError where
+  typeGType _ = gTypeOverconstrainedError
+  {-# INLINE typeGType #-}
+noOverconstrainedError :: Maybe OverconstrainedError
+noOverconstrainedError = Nothing
+{-# INLINE noOverconstrainedError #-}
+
+foreign import javascript unsafe "window[\"OverconstrainedError\"]" gTypeOverconstrainedError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OverconstrainedErrorEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEvent Mozilla OverconstrainedErrorEvent documentation>
+newtype OverconstrainedErrorEvent = OverconstrainedErrorEvent { unOverconstrainedErrorEvent :: JSVal }
+
+instance Eq (OverconstrainedErrorEvent) where
+  (OverconstrainedErrorEvent a) == (OverconstrainedErrorEvent b) = js_eq a b
+
+instance PToJSVal OverconstrainedErrorEvent where
+  pToJSVal = unOverconstrainedErrorEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverconstrainedErrorEvent where
+  pFromJSVal = OverconstrainedErrorEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverconstrainedErrorEvent where
+  toJSVal = return . unOverconstrainedErrorEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverconstrainedErrorEvent where
+  fromJSVal = return . fmap OverconstrainedErrorEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent OverconstrainedErrorEvent
+instance IsGObject OverconstrainedErrorEvent where
+  typeGType _ = gTypeOverconstrainedErrorEvent
+  {-# INLINE typeGType #-}
+noOverconstrainedErrorEvent :: Maybe OverconstrainedErrorEvent
+noOverconstrainedErrorEvent = Nothing
+{-# INLINE noOverconstrainedErrorEvent #-}
+
+foreign import javascript unsafe "window[\"OverconstrainedErrorEvent\"]" gTypeOverconstrainedErrorEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OverconstrainedErrorEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverconstrainedErrorEventInit Mozilla OverconstrainedErrorEventInit documentation>
+newtype OverconstrainedErrorEventInit = OverconstrainedErrorEventInit { unOverconstrainedErrorEventInit :: JSVal }
+
+instance Eq (OverconstrainedErrorEventInit) where
+  (OverconstrainedErrorEventInit a) == (OverconstrainedErrorEventInit b) = js_eq a b
+
+instance PToJSVal OverconstrainedErrorEventInit where
+  pToJSVal = unOverconstrainedErrorEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverconstrainedErrorEventInit where
+  pFromJSVal = OverconstrainedErrorEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverconstrainedErrorEventInit where
+  toJSVal = return . unOverconstrainedErrorEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverconstrainedErrorEventInit where
+  fromJSVal = return . fmap OverconstrainedErrorEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit OverconstrainedErrorEventInit
+instance IsGObject OverconstrainedErrorEventInit where
+  typeGType _ = gTypeOverconstrainedErrorEventInit
+  {-# INLINE typeGType #-}
+noOverconstrainedErrorEventInit :: Maybe OverconstrainedErrorEventInit
+noOverconstrainedErrorEventInit = Nothing
+{-# INLINE noOverconstrainedErrorEventInit #-}
+
+foreign import javascript unsafe "window[\"OverconstrainedErrorEventInit\"]" gTypeOverconstrainedErrorEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OverflowEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEvent Mozilla OverflowEvent documentation>
+newtype OverflowEvent = OverflowEvent { unOverflowEvent :: JSVal }
+
+instance Eq (OverflowEvent) where
+  (OverflowEvent a) == (OverflowEvent b) = js_eq a b
+
+instance PToJSVal OverflowEvent where
+  pToJSVal = unOverflowEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverflowEvent where
+  pFromJSVal = OverflowEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverflowEvent where
+  toJSVal = return . unOverflowEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverflowEvent where
+  fromJSVal = return . fmap OverflowEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent OverflowEvent
+instance IsGObject OverflowEvent where
+  typeGType _ = gTypeOverflowEvent
+  {-# INLINE typeGType #-}
+noOverflowEvent :: Maybe OverflowEvent
+noOverflowEvent = Nothing
+{-# INLINE noOverflowEvent #-}
+
+foreign import javascript unsafe "window[\"OverflowEvent\"]" gTypeOverflowEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.OverflowEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/OverflowEventInit Mozilla OverflowEventInit documentation>
+newtype OverflowEventInit = OverflowEventInit { unOverflowEventInit :: JSVal }
+
+instance Eq (OverflowEventInit) where
+  (OverflowEventInit a) == (OverflowEventInit b) = js_eq a b
+
+instance PToJSVal OverflowEventInit where
+  pToJSVal = unOverflowEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal OverflowEventInit where
+  pFromJSVal = OverflowEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal OverflowEventInit where
+  toJSVal = return . unOverflowEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal OverflowEventInit where
+  fromJSVal = return . fmap OverflowEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit OverflowEventInit
+instance IsGObject OverflowEventInit where
+  typeGType _ = gTypeOverflowEventInit
+  {-# INLINE typeGType #-}
+noOverflowEventInit :: Maybe OverflowEventInit
+noOverflowEventInit = Nothing
+{-# INLINE noOverflowEventInit #-}
+
+foreign import javascript unsafe "window[\"OverflowEventInit\"]" gTypeOverflowEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PageTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEvent Mozilla PageTransitionEvent documentation>
+newtype PageTransitionEvent = PageTransitionEvent { unPageTransitionEvent :: JSVal }
+
+instance Eq (PageTransitionEvent) where
+  (PageTransitionEvent a) == (PageTransitionEvent b) = js_eq a b
+
+instance PToJSVal PageTransitionEvent where
+  pToJSVal = unPageTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PageTransitionEvent where
+  pFromJSVal = PageTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PageTransitionEvent where
+  toJSVal = return . unPageTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PageTransitionEvent where
+  fromJSVal = return . fmap PageTransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent PageTransitionEvent
+instance IsGObject PageTransitionEvent where
+  typeGType _ = gTypePageTransitionEvent
+  {-# INLINE typeGType #-}
+noPageTransitionEvent :: Maybe PageTransitionEvent
+noPageTransitionEvent = Nothing
+{-# INLINE noPageTransitionEvent #-}
+
+foreign import javascript unsafe "window[\"PageTransitionEvent\"]" gTypePageTransitionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PageTransitionEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PageTransitionEventInit Mozilla PageTransitionEventInit documentation>
+newtype PageTransitionEventInit = PageTransitionEventInit { unPageTransitionEventInit :: JSVal }
+
+instance Eq (PageTransitionEventInit) where
+  (PageTransitionEventInit a) == (PageTransitionEventInit b) = js_eq a b
+
+instance PToJSVal PageTransitionEventInit where
+  pToJSVal = unPageTransitionEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PageTransitionEventInit where
+  pFromJSVal = PageTransitionEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PageTransitionEventInit where
+  toJSVal = return . unPageTransitionEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PageTransitionEventInit where
+  fromJSVal = return . fmap PageTransitionEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit PageTransitionEventInit
+instance IsGObject PageTransitionEventInit where
+  typeGType _ = gTypePageTransitionEventInit
+  {-# INLINE typeGType #-}
+noPageTransitionEventInit :: Maybe PageTransitionEventInit
+noPageTransitionEventInit = Nothing
+{-# INLINE noPageTransitionEventInit #-}
+
+foreign import javascript unsafe "window[\"PageTransitionEventInit\"]" gTypePageTransitionEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PannerNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitAudioPannerNode Mozilla webkitAudioPannerNode documentation>
+newtype PannerNode = PannerNode { unPannerNode :: JSVal }
+
+instance Eq (PannerNode) where
+  (PannerNode a) == (PannerNode b) = js_eq a b
+
+instance PToJSVal PannerNode where
+  pToJSVal = unPannerNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PannerNode where
+  pFromJSVal = PannerNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PannerNode where
+  toJSVal = return . unPannerNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PannerNode where
+  fromJSVal = return . fmap PannerNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode PannerNode
+instance IsEventTarget PannerNode
+instance IsGObject PannerNode where
+  typeGType _ = gTypePannerNode
+  {-# INLINE typeGType #-}
+noPannerNode :: Maybe PannerNode
+noPannerNode = Nothing
+{-# INLINE noPannerNode #-}
+
+foreign import javascript unsafe "window[\"webkitAudioPannerNode\"]" gTypePannerNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ParentNode".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ParentNode Mozilla ParentNode documentation>
+newtype ParentNode = ParentNode { unParentNode :: JSVal }
+
+instance Eq (ParentNode) where
+  (ParentNode a) == (ParentNode b) = js_eq a b
+
+instance PToJSVal ParentNode where
+  pToJSVal = unParentNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ParentNode where
+  pFromJSVal = ParentNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ParentNode where
+  toJSVal = return . unParentNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ParentNode where
+  fromJSVal = return . fmap ParentNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsParentNode o
+toParentNode :: IsParentNode o => o -> ParentNode
+toParentNode = ParentNode . coerce
+
+instance IsParentNode ParentNode
+instance IsGObject ParentNode where
+  typeGType _ = gTypeParentNode
+  {-# INLINE typeGType #-}
+noParentNode :: Maybe ParentNode
+noParentNode = Nothing
+{-# INLINE noParentNode #-}
+
+foreign import javascript unsafe "window[\"ParentNode\"]" gTypeParentNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PasswordCredential".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SiteBoundCredential"
+--     * "GHCJS.DOM.BasicCredential"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredential Mozilla PasswordCredential documentation>
+newtype PasswordCredential = PasswordCredential { unPasswordCredential :: JSVal }
+
+instance Eq (PasswordCredential) where
+  (PasswordCredential a) == (PasswordCredential b) = js_eq a b
+
+instance PToJSVal PasswordCredential where
+  pToJSVal = unPasswordCredential
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PasswordCredential where
+  pFromJSVal = PasswordCredential
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PasswordCredential where
+  toJSVal = return . unPasswordCredential
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PasswordCredential where
+  fromJSVal = return . fmap PasswordCredential . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSiteBoundCredential PasswordCredential
+instance IsBasicCredential PasswordCredential
+instance IsGObject PasswordCredential where
+  typeGType _ = gTypePasswordCredential
+  {-# INLINE typeGType #-}
+noPasswordCredential :: Maybe PasswordCredential
+noPasswordCredential = Nothing
+{-# INLINE noPasswordCredential #-}
+
+foreign import javascript unsafe "window[\"PasswordCredential\"]" gTypePasswordCredential :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PasswordCredentialData".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SiteBoundCredentialData"
+--     * "GHCJS.DOM.CredentialData"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PasswordCredentialData Mozilla PasswordCredentialData documentation>
+newtype PasswordCredentialData = PasswordCredentialData { unPasswordCredentialData :: JSVal }
+
+instance Eq (PasswordCredentialData) where
+  (PasswordCredentialData a) == (PasswordCredentialData b) = js_eq a b
+
+instance PToJSVal PasswordCredentialData where
+  pToJSVal = unPasswordCredentialData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PasswordCredentialData where
+  pFromJSVal = PasswordCredentialData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PasswordCredentialData where
+  toJSVal = return . unPasswordCredentialData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PasswordCredentialData where
+  fromJSVal = return . fmap PasswordCredentialData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSiteBoundCredentialData PasswordCredentialData
+instance IsCredentialData PasswordCredentialData
+instance IsGObject PasswordCredentialData where
+  typeGType _ = gTypePasswordCredentialData
+  {-# INLINE typeGType #-}
+noPasswordCredentialData :: Maybe PasswordCredentialData
+noPasswordCredentialData = Nothing
+{-# INLINE noPasswordCredentialData #-}
+
+foreign import javascript unsafe "window[\"PasswordCredentialData\"]" gTypePasswordCredentialData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Path2D".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CanvasPath"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Path2D Mozilla Path2D documentation>
+newtype Path2D = Path2D { unPath2D :: JSVal }
+
+instance Eq (Path2D) where
+  (Path2D a) == (Path2D b) = js_eq a b
+
+instance PToJSVal Path2D where
+  pToJSVal = unPath2D
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Path2D where
+  pFromJSVal = Path2D
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Path2D where
+  toJSVal = return . unPath2D
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Path2D where
+  fromJSVal = return . fmap Path2D . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCanvasPath Path2D
+instance IsGObject Path2D where
+  typeGType _ = gTypePath2D
+  {-# INLINE typeGType #-}
+noPath2D :: Maybe Path2D
+noPath2D = Nothing
+{-# INLINE noPath2D #-}
+
+foreign import javascript unsafe "window[\"Path2D\"]" gTypePath2D :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Pbkdf2Params".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Pbkdf2Params Mozilla Pbkdf2Params documentation>
+newtype Pbkdf2Params = Pbkdf2Params { unPbkdf2Params :: JSVal }
+
+instance Eq (Pbkdf2Params) where
+  (Pbkdf2Params a) == (Pbkdf2Params b) = js_eq a b
+
+instance PToJSVal Pbkdf2Params where
+  pToJSVal = unPbkdf2Params
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Pbkdf2Params where
+  pFromJSVal = Pbkdf2Params
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Pbkdf2Params where
+  toJSVal = return . unPbkdf2Params
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Pbkdf2Params where
+  fromJSVal = return . fmap Pbkdf2Params . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters Pbkdf2Params
+instance IsGObject Pbkdf2Params where
+  typeGType _ = gTypePbkdf2Params
+  {-# INLINE typeGType #-}
+noPbkdf2Params :: Maybe Pbkdf2Params
+noPbkdf2Params = Nothing
+{-# INLINE noPbkdf2Params #-}
+
+foreign import javascript unsafe "window[\"Pbkdf2Params\"]" gTypePbkdf2Params :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Performance".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Performance Mozilla Performance documentation>
+newtype Performance = Performance { unPerformance :: JSVal }
+
+instance Eq (Performance) where
+  (Performance a) == (Performance b) = js_eq a b
+
+instance PToJSVal Performance where
+  pToJSVal = unPerformance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Performance where
+  pFromJSVal = Performance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Performance where
+  toJSVal = return . unPerformance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Performance where
+  fromJSVal = return . fmap Performance . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget Performance
+instance IsGObject Performance where
+  typeGType _ = gTypePerformance
+  {-# INLINE typeGType #-}
+noPerformance :: Maybe Performance
+noPerformance = Nothing
+{-# INLINE noPerformance #-}
+
+foreign import javascript unsafe "window[\"Performance\"]" gTypePerformance :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceEntry".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceEntry Mozilla PerformanceEntry documentation>
+newtype PerformanceEntry = PerformanceEntry { unPerformanceEntry :: JSVal }
+
+instance Eq (PerformanceEntry) where
+  (PerformanceEntry a) == (PerformanceEntry b) = js_eq a b
+
+instance PToJSVal PerformanceEntry where
+  pToJSVal = unPerformanceEntry
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceEntry where
+  pFromJSVal = PerformanceEntry
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceEntry where
+  toJSVal = return . unPerformanceEntry
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceEntry where
+  fromJSVal = return . fmap PerformanceEntry . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsPerformanceEntry o
+toPerformanceEntry :: IsPerformanceEntry o => o -> PerformanceEntry
+toPerformanceEntry = PerformanceEntry . coerce
+
+instance IsPerformanceEntry PerformanceEntry
+instance IsGObject PerformanceEntry where
+  typeGType _ = gTypePerformanceEntry
+  {-# INLINE typeGType #-}
+noPerformanceEntry :: Maybe PerformanceEntry
+noPerformanceEntry = Nothing
+{-# INLINE noPerformanceEntry #-}
+
+foreign import javascript unsafe "window[\"PerformanceEntry\"]" gTypePerformanceEntry :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceMark".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMark Mozilla PerformanceMark documentation>
+newtype PerformanceMark = PerformanceMark { unPerformanceMark :: JSVal }
+
+instance Eq (PerformanceMark) where
+  (PerformanceMark a) == (PerformanceMark b) = js_eq a b
+
+instance PToJSVal PerformanceMark where
+  pToJSVal = unPerformanceMark
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMark where
+  pFromJSVal = PerformanceMark
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMark where
+  toJSVal = return . unPerformanceMark
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMark where
+  fromJSVal = return . fmap PerformanceMark . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsPerformanceEntry PerformanceMark
+instance IsGObject PerformanceMark where
+  typeGType _ = gTypePerformanceMark
+  {-# INLINE typeGType #-}
+noPerformanceMark :: Maybe PerformanceMark
+noPerformanceMark = Nothing
+{-# INLINE noPerformanceMark #-}
+
+foreign import javascript unsafe "window[\"PerformanceMark\"]" gTypePerformanceMark :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceMeasure".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceMeasure Mozilla PerformanceMeasure documentation>
+newtype PerformanceMeasure = PerformanceMeasure { unPerformanceMeasure :: JSVal }
+
+instance Eq (PerformanceMeasure) where
+  (PerformanceMeasure a) == (PerformanceMeasure b) = js_eq a b
+
+instance PToJSVal PerformanceMeasure where
+  pToJSVal = unPerformanceMeasure
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceMeasure where
+  pFromJSVal = PerformanceMeasure
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceMeasure where
+  toJSVal = return . unPerformanceMeasure
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceMeasure where
+  fromJSVal = return . fmap PerformanceMeasure . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsPerformanceEntry PerformanceMeasure
+instance IsGObject PerformanceMeasure where
+  typeGType _ = gTypePerformanceMeasure
+  {-# INLINE typeGType #-}
+noPerformanceMeasure :: Maybe PerformanceMeasure
+noPerformanceMeasure = Nothing
+{-# INLINE noPerformanceMeasure #-}
+
+foreign import javascript unsafe "window[\"PerformanceMeasure\"]" gTypePerformanceMeasure :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceNavigation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceNavigation Mozilla PerformanceNavigation documentation>
+newtype PerformanceNavigation = PerformanceNavigation { unPerformanceNavigation :: JSVal }
+
+instance Eq (PerformanceNavigation) where
+  (PerformanceNavigation a) == (PerformanceNavigation b) = js_eq a b
+
+instance PToJSVal PerformanceNavigation where
+  pToJSVal = unPerformanceNavigation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceNavigation where
+  pFromJSVal = PerformanceNavigation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceNavigation where
+  toJSVal = return . unPerformanceNavigation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceNavigation where
+  fromJSVal = return . fmap PerformanceNavigation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceNavigation where
+  typeGType _ = gTypePerformanceNavigation
+  {-# INLINE typeGType #-}
+noPerformanceNavigation :: Maybe PerformanceNavigation
+noPerformanceNavigation = Nothing
+{-# INLINE noPerformanceNavigation #-}
+
+foreign import javascript unsafe "window[\"PerformanceNavigation\"]" gTypePerformanceNavigation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceObserver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserver Mozilla PerformanceObserver documentation>
+newtype PerformanceObserver = PerformanceObserver { unPerformanceObserver :: JSVal }
+
+instance Eq (PerformanceObserver) where
+  (PerformanceObserver a) == (PerformanceObserver b) = js_eq a b
+
+instance PToJSVal PerformanceObserver where
+  pToJSVal = unPerformanceObserver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceObserver where
+  pFromJSVal = PerformanceObserver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceObserver where
+  toJSVal = return . unPerformanceObserver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceObserver where
+  fromJSVal = return . fmap PerformanceObserver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceObserver where
+  typeGType _ = gTypePerformanceObserver
+  {-# INLINE typeGType #-}
+noPerformanceObserver :: Maybe PerformanceObserver
+noPerformanceObserver = Nothing
+{-# INLINE noPerformanceObserver #-}
+
+foreign import javascript unsafe "window[\"PerformanceObserver\"]" gTypePerformanceObserver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceObserverEntryList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverEntryList Mozilla PerformanceObserverEntryList documentation>
+newtype PerformanceObserverEntryList = PerformanceObserverEntryList { unPerformanceObserverEntryList :: JSVal }
+
+instance Eq (PerformanceObserverEntryList) where
+  (PerformanceObserverEntryList a) == (PerformanceObserverEntryList b) = js_eq a b
+
+instance PToJSVal PerformanceObserverEntryList where
+  pToJSVal = unPerformanceObserverEntryList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceObserverEntryList where
+  pFromJSVal = PerformanceObserverEntryList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceObserverEntryList where
+  toJSVal = return . unPerformanceObserverEntryList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceObserverEntryList where
+  fromJSVal = return . fmap PerformanceObserverEntryList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceObserverEntryList where
+  typeGType _ = gTypePerformanceObserverEntryList
+  {-# INLINE typeGType #-}
+noPerformanceObserverEntryList :: Maybe PerformanceObserverEntryList
+noPerformanceObserverEntryList = Nothing
+{-# INLINE noPerformanceObserverEntryList #-}
+
+foreign import javascript unsafe "window[\"PerformanceObserverEntryList\"]" gTypePerformanceObserverEntryList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceObserverInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceObserverInit Mozilla PerformanceObserverInit documentation>
+newtype PerformanceObserverInit = PerformanceObserverInit { unPerformanceObserverInit :: JSVal }
+
+instance Eq (PerformanceObserverInit) where
+  (PerformanceObserverInit a) == (PerformanceObserverInit b) = js_eq a b
+
+instance PToJSVal PerformanceObserverInit where
+  pToJSVal = unPerformanceObserverInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceObserverInit where
+  pFromJSVal = PerformanceObserverInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceObserverInit where
+  toJSVal = return . unPerformanceObserverInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceObserverInit where
+  fromJSVal = return . fmap PerformanceObserverInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceObserverInit where
+  typeGType _ = gTypePerformanceObserverInit
+  {-# INLINE typeGType #-}
+noPerformanceObserverInit :: Maybe PerformanceObserverInit
+noPerformanceObserverInit = Nothing
+{-# INLINE noPerformanceObserverInit #-}
+
+foreign import javascript unsafe "window[\"PerformanceObserverInit\"]" gTypePerformanceObserverInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceResourceTiming".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.PerformanceEntry"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceResourceTiming Mozilla PerformanceResourceTiming documentation>
+newtype PerformanceResourceTiming = PerformanceResourceTiming { unPerformanceResourceTiming :: JSVal }
+
+instance Eq (PerformanceResourceTiming) where
+  (PerformanceResourceTiming a) == (PerformanceResourceTiming b) = js_eq a b
+
+instance PToJSVal PerformanceResourceTiming where
+  pToJSVal = unPerformanceResourceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceResourceTiming where
+  pFromJSVal = PerformanceResourceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceResourceTiming where
+  toJSVal = return . unPerformanceResourceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceResourceTiming where
+  fromJSVal = return . fmap PerformanceResourceTiming . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsPerformanceEntry PerformanceResourceTiming
+instance IsGObject PerformanceResourceTiming where
+  typeGType _ = gTypePerformanceResourceTiming
+  {-# INLINE typeGType #-}
+noPerformanceResourceTiming :: Maybe PerformanceResourceTiming
+noPerformanceResourceTiming = Nothing
+{-# INLINE noPerformanceResourceTiming #-}
+
+foreign import javascript unsafe "window[\"PerformanceResourceTiming\"]" gTypePerformanceResourceTiming :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PerformanceTiming".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PerformanceTiming Mozilla PerformanceTiming documentation>
+newtype PerformanceTiming = PerformanceTiming { unPerformanceTiming :: JSVal }
+
+instance Eq (PerformanceTiming) where
+  (PerformanceTiming a) == (PerformanceTiming b) = js_eq a b
+
+instance PToJSVal PerformanceTiming where
+  pToJSVal = unPerformanceTiming
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PerformanceTiming where
+  pFromJSVal = PerformanceTiming
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PerformanceTiming where
+  toJSVal = return . unPerformanceTiming
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PerformanceTiming where
+  fromJSVal = return . fmap PerformanceTiming . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PerformanceTiming where
+  typeGType _ = gTypePerformanceTiming
+  {-# INLINE typeGType #-}
+noPerformanceTiming :: Maybe PerformanceTiming
+noPerformanceTiming = Nothing
+{-# INLINE noPerformanceTiming #-}
+
+foreign import javascript unsafe "window[\"PerformanceTiming\"]" gTypePerformanceTiming :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PeriodicWave".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PeriodicWave Mozilla PeriodicWave documentation>
+newtype PeriodicWave = PeriodicWave { unPeriodicWave :: JSVal }
+
+instance Eq (PeriodicWave) where
+  (PeriodicWave a) == (PeriodicWave b) = js_eq a b
+
+instance PToJSVal PeriodicWave where
+  pToJSVal = unPeriodicWave
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PeriodicWave where
+  pFromJSVal = PeriodicWave
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PeriodicWave where
+  toJSVal = return . unPeriodicWave
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PeriodicWave where
+  fromJSVal = return . fmap PeriodicWave . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PeriodicWave where
+  typeGType _ = gTypePeriodicWave
+  {-# INLINE typeGType #-}
+noPeriodicWave :: Maybe PeriodicWave
+noPeriodicWave = Nothing
+{-# INLINE noPeriodicWave #-}
+
+foreign import javascript unsafe "window[\"PeriodicWave\"]" gTypePeriodicWave :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Plugin".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Plugin Mozilla Plugin documentation>
+newtype Plugin = Plugin { unPlugin :: JSVal }
+
+instance Eq (Plugin) where
+  (Plugin a) == (Plugin b) = js_eq a b
+
+instance PToJSVal Plugin where
+  pToJSVal = unPlugin
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Plugin where
+  pFromJSVal = Plugin
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Plugin where
+  toJSVal = return . unPlugin
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Plugin where
+  fromJSVal = return . fmap Plugin . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Plugin where
+  typeGType _ = gTypePlugin
+  {-# INLINE typeGType #-}
+noPlugin :: Maybe Plugin
+noPlugin = Nothing
+{-# INLINE noPlugin #-}
+
+foreign import javascript unsafe "window[\"Plugin\"]" gTypePlugin :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PluginArray".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PluginArray Mozilla PluginArray documentation>
+newtype PluginArray = PluginArray { unPluginArray :: JSVal }
+
+instance Eq (PluginArray) where
+  (PluginArray a) == (PluginArray b) = js_eq a b
+
+instance PToJSVal PluginArray where
+  pToJSVal = unPluginArray
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PluginArray where
+  pFromJSVal = PluginArray
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PluginArray where
+  toJSVal = return . unPluginArray
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PluginArray where
+  fromJSVal = return . fmap PluginArray . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PluginArray where
+  typeGType _ = gTypePluginArray
+  {-# INLINE typeGType #-}
+noPluginArray :: Maybe PluginArray
+noPluginArray = Nothing
+{-# INLINE noPluginArray #-}
+
+foreign import javascript unsafe "window[\"PluginArray\"]" gTypePluginArray :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PopStateEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEvent Mozilla PopStateEvent documentation>
+newtype PopStateEvent = PopStateEvent { unPopStateEvent :: JSVal }
+
+instance Eq (PopStateEvent) where
+  (PopStateEvent a) == (PopStateEvent b) = js_eq a b
+
+instance PToJSVal PopStateEvent where
+  pToJSVal = unPopStateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PopStateEvent where
+  pFromJSVal = PopStateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PopStateEvent where
+  toJSVal = return . unPopStateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PopStateEvent where
+  fromJSVal = return . fmap PopStateEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent PopStateEvent
+instance IsGObject PopStateEvent where
+  typeGType _ = gTypePopStateEvent
+  {-# INLINE typeGType #-}
+noPopStateEvent :: Maybe PopStateEvent
+noPopStateEvent = Nothing
+{-# INLINE noPopStateEvent #-}
+
+foreign import javascript unsafe "window[\"PopStateEvent\"]" gTypePopStateEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PopStateEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PopStateEventInit Mozilla PopStateEventInit documentation>
+newtype PopStateEventInit = PopStateEventInit { unPopStateEventInit :: JSVal }
+
+instance Eq (PopStateEventInit) where
+  (PopStateEventInit a) == (PopStateEventInit b) = js_eq a b
+
+instance PToJSVal PopStateEventInit where
+  pToJSVal = unPopStateEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PopStateEventInit where
+  pFromJSVal = PopStateEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PopStateEventInit where
+  toJSVal = return . unPopStateEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PopStateEventInit where
+  fromJSVal = return . fmap PopStateEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit PopStateEventInit
+instance IsGObject PopStateEventInit where
+  typeGType _ = gTypePopStateEventInit
+  {-# INLINE typeGType #-}
+noPopStateEventInit :: Maybe PopStateEventInit
+noPopStateEventInit = Nothing
+{-# INLINE noPopStateEventInit #-}
+
+foreign import javascript unsafe "window[\"PopStateEventInit\"]" gTypePopStateEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PositionError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PositionError Mozilla PositionError documentation>
+newtype PositionError = PositionError { unPositionError :: JSVal }
+
+instance Eq (PositionError) where
+  (PositionError a) == (PositionError b) = js_eq a b
+
+instance PToJSVal PositionError where
+  pToJSVal = unPositionError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionError where
+  pFromJSVal = PositionError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionError where
+  toJSVal = return . unPositionError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionError where
+  fromJSVal = return . fmap PositionError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PositionError where
+  typeGType _ = gTypePositionError
+  {-# INLINE typeGType #-}
+noPositionError :: Maybe PositionError
+noPositionError = Nothing
+{-# INLINE noPositionError #-}
+
+foreign import javascript unsafe "window[\"PositionError\"]" gTypePositionError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PositionOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PositionOptions Mozilla PositionOptions documentation>
+newtype PositionOptions = PositionOptions { unPositionOptions :: JSVal }
+
+instance Eq (PositionOptions) where
+  (PositionOptions a) == (PositionOptions b) = js_eq a b
+
+instance PToJSVal PositionOptions where
+  pToJSVal = unPositionOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PositionOptions where
+  pFromJSVal = PositionOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PositionOptions where
+  toJSVal = return . unPositionOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PositionOptions where
+  fromJSVal = return . fmap PositionOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject PositionOptions where
+  typeGType _ = gTypePositionOptions
+  {-# INLINE typeGType #-}
+noPositionOptions :: Maybe PositionOptions
+noPositionOptions = Nothing
+{-# INLINE noPositionOptions #-}
+
+foreign import javascript unsafe "window[\"PositionOptions\"]" gTypePositionOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ProcessingInstruction".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CharacterData"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.ChildNode"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProcessingInstruction Mozilla ProcessingInstruction documentation>
+newtype ProcessingInstruction = ProcessingInstruction { unProcessingInstruction :: JSVal }
+
+instance Eq (ProcessingInstruction) where
+  (ProcessingInstruction a) == (ProcessingInstruction b) = js_eq a b
+
+instance PToJSVal ProcessingInstruction where
+  pToJSVal = unProcessingInstruction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProcessingInstruction where
+  pFromJSVal = ProcessingInstruction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProcessingInstruction where
+  toJSVal = return . unProcessingInstruction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProcessingInstruction where
+  fromJSVal = return . fmap ProcessingInstruction . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCharacterData ProcessingInstruction
+instance IsNode ProcessingInstruction
+instance IsEventTarget ProcessingInstruction
+instance IsNonDocumentTypeChildNode ProcessingInstruction
+instance IsChildNode ProcessingInstruction
+instance IsGObject ProcessingInstruction where
+  typeGType _ = gTypeProcessingInstruction
+  {-# INLINE typeGType #-}
+noProcessingInstruction :: Maybe ProcessingInstruction
+noProcessingInstruction = Nothing
+{-# INLINE noProcessingInstruction #-}
+
+foreign import javascript unsafe "window[\"ProcessingInstruction\"]" gTypeProcessingInstruction :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ProgressEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEvent Mozilla ProgressEvent documentation>
+newtype ProgressEvent = ProgressEvent { unProgressEvent :: JSVal }
+
+instance Eq (ProgressEvent) where
+  (ProgressEvent a) == (ProgressEvent b) = js_eq a b
+
+instance PToJSVal ProgressEvent where
+  pToJSVal = unProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProgressEvent where
+  pFromJSVal = ProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProgressEvent where
+  toJSVal = return . unProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProgressEvent where
+  fromJSVal = return . fmap ProgressEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEvent o, IsGObject o) => IsProgressEvent o
+toProgressEvent :: IsProgressEvent o => o -> ProgressEvent
+toProgressEvent = ProgressEvent . coerce
+
+instance IsProgressEvent ProgressEvent
+instance IsEvent ProgressEvent
+instance IsGObject ProgressEvent where
+  typeGType _ = gTypeProgressEvent
+  {-# INLINE typeGType #-}
+noProgressEvent :: Maybe ProgressEvent
+noProgressEvent = Nothing
+{-# INLINE noProgressEvent #-}
+
+foreign import javascript unsafe "window[\"ProgressEvent\"]" gTypeProgressEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ProgressEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ProgressEventInit Mozilla ProgressEventInit documentation>
+newtype ProgressEventInit = ProgressEventInit { unProgressEventInit :: JSVal }
+
+instance Eq (ProgressEventInit) where
+  (ProgressEventInit a) == (ProgressEventInit b) = js_eq a b
+
+instance PToJSVal ProgressEventInit where
+  pToJSVal = unProgressEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ProgressEventInit where
+  pFromJSVal = ProgressEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ProgressEventInit where
+  toJSVal = return . unProgressEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ProgressEventInit where
+  fromJSVal = return . fmap ProgressEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit ProgressEventInit
+instance IsGObject ProgressEventInit where
+  typeGType _ = gTypeProgressEventInit
+  {-# INLINE typeGType #-}
+noProgressEventInit :: Maybe ProgressEventInit
+noProgressEventInit = Nothing
+{-# INLINE noProgressEventInit #-}
+
+foreign import javascript unsafe "window[\"ProgressEventInit\"]" gTypeProgressEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PromiseRejectionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEvent Mozilla PromiseRejectionEvent documentation>
+newtype PromiseRejectionEvent = PromiseRejectionEvent { unPromiseRejectionEvent :: JSVal }
+
+instance Eq (PromiseRejectionEvent) where
+  (PromiseRejectionEvent a) == (PromiseRejectionEvent b) = js_eq a b
+
+instance PToJSVal PromiseRejectionEvent where
+  pToJSVal = unPromiseRejectionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PromiseRejectionEvent where
+  pFromJSVal = PromiseRejectionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PromiseRejectionEvent where
+  toJSVal = return . unPromiseRejectionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PromiseRejectionEvent where
+  fromJSVal = return . fmap PromiseRejectionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent PromiseRejectionEvent
+instance IsGObject PromiseRejectionEvent where
+  typeGType _ = gTypePromiseRejectionEvent
+  {-# INLINE typeGType #-}
+noPromiseRejectionEvent :: Maybe PromiseRejectionEvent
+noPromiseRejectionEvent = Nothing
+{-# INLINE noPromiseRejectionEvent #-}
+
+foreign import javascript unsafe "window[\"PromiseRejectionEvent\"]" gTypePromiseRejectionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.PromiseRejectionEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/PromiseRejectionEventInit Mozilla PromiseRejectionEventInit documentation>
+newtype PromiseRejectionEventInit = PromiseRejectionEventInit { unPromiseRejectionEventInit :: JSVal }
+
+instance Eq (PromiseRejectionEventInit) where
+  (PromiseRejectionEventInit a) == (PromiseRejectionEventInit b) = js_eq a b
+
+instance PToJSVal PromiseRejectionEventInit where
+  pToJSVal = unPromiseRejectionEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal PromiseRejectionEventInit where
+  pFromJSVal = PromiseRejectionEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal PromiseRejectionEventInit where
+  toJSVal = return . unPromiseRejectionEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal PromiseRejectionEventInit where
+  fromJSVal = return . fmap PromiseRejectionEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit PromiseRejectionEventInit
+instance IsGObject PromiseRejectionEventInit where
+  typeGType _ = gTypePromiseRejectionEventInit
+  {-# INLINE typeGType #-}
+noPromiseRejectionEventInit :: Maybe PromiseRejectionEventInit
+noPromiseRejectionEventInit = Nothing
+{-# INLINE noPromiseRejectionEventInit #-}
+
+foreign import javascript unsafe "window[\"PromiseRejectionEventInit\"]" gTypePromiseRejectionEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.QuickTimePluginReplacement".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/QuickTimePluginReplacement Mozilla QuickTimePluginReplacement documentation>
+newtype QuickTimePluginReplacement = QuickTimePluginReplacement { unQuickTimePluginReplacement :: JSVal }
+
+instance Eq (QuickTimePluginReplacement) where
+  (QuickTimePluginReplacement a) == (QuickTimePluginReplacement b) = js_eq a b
+
+instance PToJSVal QuickTimePluginReplacement where
+  pToJSVal = unQuickTimePluginReplacement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal QuickTimePluginReplacement where
+  pFromJSVal = QuickTimePluginReplacement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal QuickTimePluginReplacement where
+  toJSVal = return . unQuickTimePluginReplacement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal QuickTimePluginReplacement where
+  fromJSVal = return . fmap QuickTimePluginReplacement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject QuickTimePluginReplacement where
+  typeGType _ = gTypeQuickTimePluginReplacement
+  {-# INLINE typeGType #-}
+noQuickTimePluginReplacement :: Maybe QuickTimePluginReplacement
+noQuickTimePluginReplacement = Nothing
+{-# INLINE noQuickTimePluginReplacement #-}
+
+foreign import javascript unsafe "window[\"QuickTimePluginReplacement\"]" gTypeQuickTimePluginReplacement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RGBColor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RGBColor Mozilla RGBColor documentation>
+newtype RGBColor = RGBColor { unRGBColor :: JSVal }
+
+instance Eq (RGBColor) where
+  (RGBColor a) == (RGBColor b) = js_eq a b
+
+instance PToJSVal RGBColor where
+  pToJSVal = unRGBColor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RGBColor where
+  pFromJSVal = RGBColor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RGBColor where
+  toJSVal = return . unRGBColor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RGBColor where
+  fromJSVal = return . fmap RGBColor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RGBColor where
+  typeGType _ = gTypeRGBColor
+  {-# INLINE typeGType #-}
+noRGBColor :: Maybe RGBColor
+noRGBColor = Nothing
+{-# INLINE noRGBColor #-}
+
+foreign import javascript unsafe "window[\"RGBColor\"]" gTypeRGBColor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCAnswerOptions".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCOfferAnswerOptions"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCAnswerOptions Mozilla RTCAnswerOptions documentation>
+newtype RTCAnswerOptions = RTCAnswerOptions { unRTCAnswerOptions :: JSVal }
+
+instance Eq (RTCAnswerOptions) where
+  (RTCAnswerOptions a) == (RTCAnswerOptions b) = js_eq a b
+
+instance PToJSVal RTCAnswerOptions where
+  pToJSVal = unRTCAnswerOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCAnswerOptions where
+  pFromJSVal = RTCAnswerOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCAnswerOptions where
+  toJSVal = return . unRTCAnswerOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCAnswerOptions where
+  fromJSVal = return . fmap RTCAnswerOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCOfferAnswerOptions RTCAnswerOptions
+instance IsGObject RTCAnswerOptions where
+  typeGType _ = gTypeRTCAnswerOptions
+  {-# INLINE typeGType #-}
+noRTCAnswerOptions :: Maybe RTCAnswerOptions
+noRTCAnswerOptions = Nothing
+{-# INLINE noRTCAnswerOptions #-}
+
+foreign import javascript unsafe "window[\"RTCAnswerOptions\"]" gTypeRTCAnswerOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCConfiguration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCConfiguration Mozilla RTCConfiguration documentation>
+newtype RTCConfiguration = RTCConfiguration { unRTCConfiguration :: JSVal }
+
+instance Eq (RTCConfiguration) where
+  (RTCConfiguration a) == (RTCConfiguration b) = js_eq a b
+
+instance PToJSVal RTCConfiguration where
+  pToJSVal = unRTCConfiguration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCConfiguration where
+  pFromJSVal = RTCConfiguration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCConfiguration where
+  toJSVal = return . unRTCConfiguration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCConfiguration where
+  fromJSVal = return . fmap RTCConfiguration . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCConfiguration where
+  typeGType _ = gTypeRTCConfiguration
+  {-# INLINE typeGType #-}
+noRTCConfiguration :: Maybe RTCConfiguration
+noRTCConfiguration = Nothing
+{-# INLINE noRTCConfiguration #-}
+
+foreign import javascript unsafe "window[\"RTCConfiguration\"]" gTypeRTCConfiguration :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDTMFSender".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFSender Mozilla RTCDTMFSender documentation>
+newtype RTCDTMFSender = RTCDTMFSender { unRTCDTMFSender :: JSVal }
+
+instance Eq (RTCDTMFSender) where
+  (RTCDTMFSender a) == (RTCDTMFSender b) = js_eq a b
+
+instance PToJSVal RTCDTMFSender where
+  pToJSVal = unRTCDTMFSender
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFSender where
+  pFromJSVal = RTCDTMFSender
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFSender where
+  toJSVal = return . unRTCDTMFSender
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFSender where
+  fromJSVal = return . fmap RTCDTMFSender . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget RTCDTMFSender
+instance IsGObject RTCDTMFSender where
+  typeGType _ = gTypeRTCDTMFSender
+  {-# INLINE typeGType #-}
+noRTCDTMFSender :: Maybe RTCDTMFSender
+noRTCDTMFSender = Nothing
+{-# INLINE noRTCDTMFSender #-}
+
+foreign import javascript unsafe "window[\"RTCDTMFSender\"]" gTypeRTCDTMFSender :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDTMFToneChangeEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEvent Mozilla RTCDTMFToneChangeEvent documentation>
+newtype RTCDTMFToneChangeEvent = RTCDTMFToneChangeEvent { unRTCDTMFToneChangeEvent :: JSVal }
+
+instance Eq (RTCDTMFToneChangeEvent) where
+  (RTCDTMFToneChangeEvent a) == (RTCDTMFToneChangeEvent b) = js_eq a b
+
+instance PToJSVal RTCDTMFToneChangeEvent where
+  pToJSVal = unRTCDTMFToneChangeEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFToneChangeEvent where
+  pFromJSVal = RTCDTMFToneChangeEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFToneChangeEvent where
+  toJSVal = return . unRTCDTMFToneChangeEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFToneChangeEvent where
+  fromJSVal = return . fmap RTCDTMFToneChangeEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent RTCDTMFToneChangeEvent
+instance IsGObject RTCDTMFToneChangeEvent where
+  typeGType _ = gTypeRTCDTMFToneChangeEvent
+  {-# INLINE typeGType #-}
+noRTCDTMFToneChangeEvent :: Maybe RTCDTMFToneChangeEvent
+noRTCDTMFToneChangeEvent = Nothing
+{-# INLINE noRTCDTMFToneChangeEvent #-}
+
+foreign import javascript unsafe "window[\"RTCDTMFToneChangeEvent\"]" gTypeRTCDTMFToneChangeEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDTMFToneChangeEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDTMFToneChangeEventInit Mozilla RTCDTMFToneChangeEventInit documentation>
+newtype RTCDTMFToneChangeEventInit = RTCDTMFToneChangeEventInit { unRTCDTMFToneChangeEventInit :: JSVal }
+
+instance Eq (RTCDTMFToneChangeEventInit) where
+  (RTCDTMFToneChangeEventInit a) == (RTCDTMFToneChangeEventInit b) = js_eq a b
+
+instance PToJSVal RTCDTMFToneChangeEventInit where
+  pToJSVal = unRTCDTMFToneChangeEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDTMFToneChangeEventInit where
+  pFromJSVal = RTCDTMFToneChangeEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDTMFToneChangeEventInit where
+  toJSVal = return . unRTCDTMFToneChangeEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDTMFToneChangeEventInit where
+  fromJSVal = return . fmap RTCDTMFToneChangeEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit RTCDTMFToneChangeEventInit
+instance IsGObject RTCDTMFToneChangeEventInit where
+  typeGType _ = gTypeRTCDTMFToneChangeEventInit
+  {-# INLINE typeGType #-}
+noRTCDTMFToneChangeEventInit :: Maybe RTCDTMFToneChangeEventInit
+noRTCDTMFToneChangeEventInit = Nothing
+{-# INLINE noRTCDTMFToneChangeEventInit #-}
+
+foreign import javascript unsafe "window[\"RTCDTMFToneChangeEventInit\"]" gTypeRTCDTMFToneChangeEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDataChannel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannel Mozilla RTCDataChannel documentation>
+newtype RTCDataChannel = RTCDataChannel { unRTCDataChannel :: JSVal }
+
+instance Eq (RTCDataChannel) where
+  (RTCDataChannel a) == (RTCDataChannel b) = js_eq a b
+
+instance PToJSVal RTCDataChannel where
+  pToJSVal = unRTCDataChannel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannel where
+  pFromJSVal = RTCDataChannel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannel where
+  toJSVal = return . unRTCDataChannel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannel where
+  fromJSVal = return . fmap RTCDataChannel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget RTCDataChannel
+instance IsGObject RTCDataChannel where
+  typeGType _ = gTypeRTCDataChannel
+  {-# INLINE typeGType #-}
+noRTCDataChannel :: Maybe RTCDataChannel
+noRTCDataChannel = Nothing
+{-# INLINE noRTCDataChannel #-}
+
+foreign import javascript unsafe "window[\"RTCDataChannel\"]" gTypeRTCDataChannel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDataChannelEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEvent Mozilla RTCDataChannelEvent documentation>
+newtype RTCDataChannelEvent = RTCDataChannelEvent { unRTCDataChannelEvent :: JSVal }
+
+instance Eq (RTCDataChannelEvent) where
+  (RTCDataChannelEvent a) == (RTCDataChannelEvent b) = js_eq a b
+
+instance PToJSVal RTCDataChannelEvent where
+  pToJSVal = unRTCDataChannelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelEvent where
+  pFromJSVal = RTCDataChannelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelEvent where
+  toJSVal = return . unRTCDataChannelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelEvent where
+  fromJSVal = return . fmap RTCDataChannelEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent RTCDataChannelEvent
+instance IsGObject RTCDataChannelEvent where
+  typeGType _ = gTypeRTCDataChannelEvent
+  {-# INLINE typeGType #-}
+noRTCDataChannelEvent :: Maybe RTCDataChannelEvent
+noRTCDataChannelEvent = Nothing
+{-# INLINE noRTCDataChannelEvent #-}
+
+foreign import javascript unsafe "window[\"RTCDataChannelEvent\"]" gTypeRTCDataChannelEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDataChannelEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelEventInit Mozilla RTCDataChannelEventInit documentation>
+newtype RTCDataChannelEventInit = RTCDataChannelEventInit { unRTCDataChannelEventInit :: JSVal }
+
+instance Eq (RTCDataChannelEventInit) where
+  (RTCDataChannelEventInit a) == (RTCDataChannelEventInit b) = js_eq a b
+
+instance PToJSVal RTCDataChannelEventInit where
+  pToJSVal = unRTCDataChannelEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelEventInit where
+  pFromJSVal = RTCDataChannelEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelEventInit where
+  toJSVal = return . unRTCDataChannelEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelEventInit where
+  fromJSVal = return . fmap RTCDataChannelEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit RTCDataChannelEventInit
+instance IsGObject RTCDataChannelEventInit where
+  typeGType _ = gTypeRTCDataChannelEventInit
+  {-# INLINE typeGType #-}
+noRTCDataChannelEventInit :: Maybe RTCDataChannelEventInit
+noRTCDataChannelEventInit = Nothing
+{-# INLINE noRTCDataChannelEventInit #-}
+
+foreign import javascript unsafe "window[\"RTCDataChannelEventInit\"]" gTypeRTCDataChannelEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDataChannelInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelInit Mozilla RTCDataChannelInit documentation>
+newtype RTCDataChannelInit = RTCDataChannelInit { unRTCDataChannelInit :: JSVal }
+
+instance Eq (RTCDataChannelInit) where
+  (RTCDataChannelInit a) == (RTCDataChannelInit b) = js_eq a b
+
+instance PToJSVal RTCDataChannelInit where
+  pToJSVal = unRTCDataChannelInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelInit where
+  pFromJSVal = RTCDataChannelInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelInit where
+  toJSVal = return . unRTCDataChannelInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelInit where
+  fromJSVal = return . fmap RTCDataChannelInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCDataChannelInit where
+  typeGType _ = gTypeRTCDataChannelInit
+  {-# INLINE typeGType #-}
+noRTCDataChannelInit :: Maybe RTCDataChannelInit
+noRTCDataChannelInit = Nothing
+{-# INLINE noRTCDataChannelInit #-}
+
+foreign import javascript unsafe "window[\"RTCDataChannelInit\"]" gTypeRTCDataChannelInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCDataChannelStats".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCStats"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCDataChannelStats Mozilla RTCDataChannelStats documentation>
+newtype RTCDataChannelStats = RTCDataChannelStats { unRTCDataChannelStats :: JSVal }
+
+instance Eq (RTCDataChannelStats) where
+  (RTCDataChannelStats a) == (RTCDataChannelStats b) = js_eq a b
+
+instance PToJSVal RTCDataChannelStats where
+  pToJSVal = unRTCDataChannelStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCDataChannelStats where
+  pFromJSVal = RTCDataChannelStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCDataChannelStats where
+  toJSVal = return . unRTCDataChannelStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCDataChannelStats where
+  fromJSVal = return . fmap RTCDataChannelStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCStats RTCDataChannelStats
+instance IsGObject RTCDataChannelStats where
+  typeGType _ = gTypeRTCDataChannelStats
+  {-# INLINE typeGType #-}
+noRTCDataChannelStats :: Maybe RTCDataChannelStats
+noRTCDataChannelStats = Nothing
+{-# INLINE noRTCDataChannelStats #-}
+
+foreign import javascript unsafe "window[\"RTCDataChannelStats\"]" gTypeRTCDataChannelStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCIceCandidate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidate Mozilla RTCIceCandidate documentation>
+newtype RTCIceCandidate = RTCIceCandidate { unRTCIceCandidate :: JSVal }
+
+instance Eq (RTCIceCandidate) where
+  (RTCIceCandidate a) == (RTCIceCandidate b) = js_eq a b
+
+instance PToJSVal RTCIceCandidate where
+  pToJSVal = unRTCIceCandidate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidate where
+  pFromJSVal = RTCIceCandidate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidate where
+  toJSVal = return . unRTCIceCandidate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidate where
+  fromJSVal = return . fmap RTCIceCandidate . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCIceCandidate where
+  typeGType _ = gTypeRTCIceCandidate
+  {-# INLINE typeGType #-}
+noRTCIceCandidate :: Maybe RTCIceCandidate
+noRTCIceCandidate = Nothing
+{-# INLINE noRTCIceCandidate #-}
+
+foreign import javascript unsafe "window[\"RTCIceCandidate\"]" gTypeRTCIceCandidate :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCIceCandidateEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateEvent Mozilla RTCIceCandidateEvent documentation>
+newtype RTCIceCandidateEvent = RTCIceCandidateEvent { unRTCIceCandidateEvent :: JSVal }
+
+instance Eq (RTCIceCandidateEvent) where
+  (RTCIceCandidateEvent a) == (RTCIceCandidateEvent b) = js_eq a b
+
+instance PToJSVal RTCIceCandidateEvent where
+  pToJSVal = unRTCIceCandidateEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidateEvent where
+  pFromJSVal = RTCIceCandidateEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidateEvent where
+  toJSVal = return . unRTCIceCandidateEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidateEvent where
+  fromJSVal = return . fmap RTCIceCandidateEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent RTCIceCandidateEvent
+instance IsGObject RTCIceCandidateEvent where
+  typeGType _ = gTypeRTCIceCandidateEvent
+  {-# INLINE typeGType #-}
+noRTCIceCandidateEvent :: Maybe RTCIceCandidateEvent
+noRTCIceCandidateEvent = Nothing
+{-# INLINE noRTCIceCandidateEvent #-}
+
+foreign import javascript unsafe "window[\"RTCIceCandidateEvent\"]" gTypeRTCIceCandidateEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCIceCandidateInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceCandidateInit Mozilla RTCIceCandidateInit documentation>
+newtype RTCIceCandidateInit = RTCIceCandidateInit { unRTCIceCandidateInit :: JSVal }
+
+instance Eq (RTCIceCandidateInit) where
+  (RTCIceCandidateInit a) == (RTCIceCandidateInit b) = js_eq a b
+
+instance PToJSVal RTCIceCandidateInit where
+  pToJSVal = unRTCIceCandidateInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceCandidateInit where
+  pFromJSVal = RTCIceCandidateInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceCandidateInit where
+  toJSVal = return . unRTCIceCandidateInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceCandidateInit where
+  fromJSVal = return . fmap RTCIceCandidateInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCIceCandidateInit where
+  typeGType _ = gTypeRTCIceCandidateInit
+  {-# INLINE typeGType #-}
+noRTCIceCandidateInit :: Maybe RTCIceCandidateInit
+noRTCIceCandidateInit = Nothing
+{-# INLINE noRTCIceCandidateInit #-}
+
+foreign import javascript unsafe "window[\"RTCIceCandidateInit\"]" gTypeRTCIceCandidateInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCIceServer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceServer Mozilla RTCIceServer documentation>
+newtype RTCIceServer = RTCIceServer { unRTCIceServer :: JSVal }
+
+instance Eq (RTCIceServer) where
+  (RTCIceServer a) == (RTCIceServer b) = js_eq a b
+
+instance PToJSVal RTCIceServer where
+  pToJSVal = unRTCIceServer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceServer where
+  pFromJSVal = RTCIceServer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceServer where
+  toJSVal = return . unRTCIceServer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceServer where
+  fromJSVal = return . fmap RTCIceServer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCIceServer where
+  typeGType _ = gTypeRTCIceServer
+  {-# INLINE typeGType #-}
+noRTCIceServer :: Maybe RTCIceServer
+noRTCIceServer = Nothing
+{-# INLINE noRTCIceServer #-}
+
+foreign import javascript unsafe "window[\"RTCIceServer\"]" gTypeRTCIceServer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCIceTransport".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCIceTransport Mozilla RTCIceTransport documentation>
+newtype RTCIceTransport = RTCIceTransport { unRTCIceTransport :: JSVal }
+
+instance Eq (RTCIceTransport) where
+  (RTCIceTransport a) == (RTCIceTransport b) = js_eq a b
+
+instance PToJSVal RTCIceTransport where
+  pToJSVal = unRTCIceTransport
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCIceTransport where
+  pFromJSVal = RTCIceTransport
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCIceTransport where
+  toJSVal = return . unRTCIceTransport
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCIceTransport where
+  fromJSVal = return . fmap RTCIceTransport . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCIceTransport where
+  typeGType _ = gTypeRTCIceTransport
+  {-# INLINE typeGType #-}
+noRTCIceTransport :: Maybe RTCIceTransport
+noRTCIceTransport = Nothing
+{-# INLINE noRTCIceTransport #-}
+
+foreign import javascript unsafe "window[\"RTCIceTransport\"]" gTypeRTCIceTransport :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCInboundRTPStreamStats".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCRTPStreamStats"
+--     * "GHCJS.DOM.RTCStats"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCInboundRTPStreamStats Mozilla RTCInboundRTPStreamStats documentation>
+newtype RTCInboundRTPStreamStats = RTCInboundRTPStreamStats { unRTCInboundRTPStreamStats :: JSVal }
+
+instance Eq (RTCInboundRTPStreamStats) where
+  (RTCInboundRTPStreamStats a) == (RTCInboundRTPStreamStats b) = js_eq a b
+
+instance PToJSVal RTCInboundRTPStreamStats where
+  pToJSVal = unRTCInboundRTPStreamStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCInboundRTPStreamStats where
+  pFromJSVal = RTCInboundRTPStreamStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCInboundRTPStreamStats where
+  toJSVal = return . unRTCInboundRTPStreamStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCInboundRTPStreamStats where
+  fromJSVal = return . fmap RTCInboundRTPStreamStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCRTPStreamStats RTCInboundRTPStreamStats
+instance IsRTCStats RTCInboundRTPStreamStats
+instance IsGObject RTCInboundRTPStreamStats where
+  typeGType _ = gTypeRTCInboundRTPStreamStats
+  {-# INLINE typeGType #-}
+noRTCInboundRTPStreamStats :: Maybe RTCInboundRTPStreamStats
+noRTCInboundRTPStreamStats = Nothing
+{-# INLINE noRTCInboundRTPStreamStats #-}
+
+foreign import javascript unsafe "window[\"RTCInboundRTPStreamStats\"]" gTypeRTCInboundRTPStreamStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCMediaStreamTrackStats".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCStats"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCMediaStreamTrackStats Mozilla RTCMediaStreamTrackStats documentation>
+newtype RTCMediaStreamTrackStats = RTCMediaStreamTrackStats { unRTCMediaStreamTrackStats :: JSVal }
+
+instance Eq (RTCMediaStreamTrackStats) where
+  (RTCMediaStreamTrackStats a) == (RTCMediaStreamTrackStats b) = js_eq a b
+
+instance PToJSVal RTCMediaStreamTrackStats where
+  pToJSVal = unRTCMediaStreamTrackStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCMediaStreamTrackStats where
+  pFromJSVal = RTCMediaStreamTrackStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCMediaStreamTrackStats where
+  toJSVal = return . unRTCMediaStreamTrackStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCMediaStreamTrackStats where
+  fromJSVal = return . fmap RTCMediaStreamTrackStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCStats RTCMediaStreamTrackStats
+instance IsGObject RTCMediaStreamTrackStats where
+  typeGType _ = gTypeRTCMediaStreamTrackStats
+  {-# INLINE typeGType #-}
+noRTCMediaStreamTrackStats :: Maybe RTCMediaStreamTrackStats
+noRTCMediaStreamTrackStats = Nothing
+{-# INLINE noRTCMediaStreamTrackStats #-}
+
+foreign import javascript unsafe "window[\"RTCMediaStreamTrackStats\"]" gTypeRTCMediaStreamTrackStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCOfferAnswerOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCOfferAnswerOptions Mozilla RTCOfferAnswerOptions documentation>
+newtype RTCOfferAnswerOptions = RTCOfferAnswerOptions { unRTCOfferAnswerOptions :: JSVal }
+
+instance Eq (RTCOfferAnswerOptions) where
+  (RTCOfferAnswerOptions a) == (RTCOfferAnswerOptions b) = js_eq a b
+
+instance PToJSVal RTCOfferAnswerOptions where
+  pToJSVal = unRTCOfferAnswerOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCOfferAnswerOptions where
+  pFromJSVal = RTCOfferAnswerOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCOfferAnswerOptions where
+  toJSVal = return . unRTCOfferAnswerOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCOfferAnswerOptions where
+  fromJSVal = return . fmap RTCOfferAnswerOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsRTCOfferAnswerOptions o
+toRTCOfferAnswerOptions :: IsRTCOfferAnswerOptions o => o -> RTCOfferAnswerOptions
+toRTCOfferAnswerOptions = RTCOfferAnswerOptions . coerce
+
+instance IsRTCOfferAnswerOptions RTCOfferAnswerOptions
+instance IsGObject RTCOfferAnswerOptions where
+  typeGType _ = gTypeRTCOfferAnswerOptions
+  {-# INLINE typeGType #-}
+noRTCOfferAnswerOptions :: Maybe RTCOfferAnswerOptions
+noRTCOfferAnswerOptions = Nothing
+{-# INLINE noRTCOfferAnswerOptions #-}
+
+foreign import javascript unsafe "window[\"RTCOfferAnswerOptions\"]" gTypeRTCOfferAnswerOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCOfferOptions".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCOfferAnswerOptions"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCOfferOptions Mozilla RTCOfferOptions documentation>
+newtype RTCOfferOptions = RTCOfferOptions { unRTCOfferOptions :: JSVal }
+
+instance Eq (RTCOfferOptions) where
+  (RTCOfferOptions a) == (RTCOfferOptions b) = js_eq a b
+
+instance PToJSVal RTCOfferOptions where
+  pToJSVal = unRTCOfferOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCOfferOptions where
+  pFromJSVal = RTCOfferOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCOfferOptions where
+  toJSVal = return . unRTCOfferOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCOfferOptions where
+  fromJSVal = return . fmap RTCOfferOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCOfferAnswerOptions RTCOfferOptions
+instance IsGObject RTCOfferOptions where
+  typeGType _ = gTypeRTCOfferOptions
+  {-# INLINE typeGType #-}
+noRTCOfferOptions :: Maybe RTCOfferOptions
+noRTCOfferOptions = Nothing
+{-# INLINE noRTCOfferOptions #-}
+
+foreign import javascript unsafe "window[\"RTCOfferOptions\"]" gTypeRTCOfferOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCOutboundRTPStreamStats".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCRTPStreamStats"
+--     * "GHCJS.DOM.RTCStats"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCOutboundRTPStreamStats Mozilla RTCOutboundRTPStreamStats documentation>
+newtype RTCOutboundRTPStreamStats = RTCOutboundRTPStreamStats { unRTCOutboundRTPStreamStats :: JSVal }
+
+instance Eq (RTCOutboundRTPStreamStats) where
+  (RTCOutboundRTPStreamStats a) == (RTCOutboundRTPStreamStats b) = js_eq a b
+
+instance PToJSVal RTCOutboundRTPStreamStats where
+  pToJSVal = unRTCOutboundRTPStreamStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCOutboundRTPStreamStats where
+  pFromJSVal = RTCOutboundRTPStreamStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCOutboundRTPStreamStats where
+  toJSVal = return . unRTCOutboundRTPStreamStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCOutboundRTPStreamStats where
+  fromJSVal = return . fmap RTCOutboundRTPStreamStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRTCRTPStreamStats RTCOutboundRTPStreamStats
+instance IsRTCStats RTCOutboundRTPStreamStats
+instance IsGObject RTCOutboundRTPStreamStats where
+  typeGType _ = gTypeRTCOutboundRTPStreamStats
+  {-# INLINE typeGType #-}
+noRTCOutboundRTPStreamStats :: Maybe RTCOutboundRTPStreamStats
+noRTCOutboundRTPStreamStats = Nothing
+{-# INLINE noRTCOutboundRTPStreamStats #-}
+
+foreign import javascript unsafe "window[\"RTCOutboundRTPStreamStats\"]" gTypeRTCOutboundRTPStreamStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCPeerConnection".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/webkitRTCPeerConnection Mozilla webkitRTCPeerConnection documentation>
+newtype RTCPeerConnection = RTCPeerConnection { unRTCPeerConnection :: JSVal }
+
+instance Eq (RTCPeerConnection) where
+  (RTCPeerConnection a) == (RTCPeerConnection b) = js_eq a b
+
+instance PToJSVal RTCPeerConnection where
+  pToJSVal = unRTCPeerConnection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCPeerConnection where
+  pFromJSVal = RTCPeerConnection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCPeerConnection where
+  toJSVal = return . unRTCPeerConnection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCPeerConnection where
+  fromJSVal = return . fmap RTCPeerConnection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget RTCPeerConnection
+instance IsGObject RTCPeerConnection where
+  typeGType _ = gTypeRTCPeerConnection
+  {-# INLINE typeGType #-}
+noRTCPeerConnection :: Maybe RTCPeerConnection
+noRTCPeerConnection = Nothing
+{-# INLINE noRTCPeerConnection #-}
+
+foreign import javascript unsafe "window[\"webkitRTCPeerConnection\"]" gTypeRTCPeerConnection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCPeerConnectionIceEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCPeerConnectionIceEvent Mozilla RTCPeerConnectionIceEvent documentation>
+newtype RTCPeerConnectionIceEvent = RTCPeerConnectionIceEvent { unRTCPeerConnectionIceEvent :: JSVal }
+
+instance Eq (RTCPeerConnectionIceEvent) where
+  (RTCPeerConnectionIceEvent a) == (RTCPeerConnectionIceEvent b) = js_eq a b
+
+instance PToJSVal RTCPeerConnectionIceEvent where
+  pToJSVal = unRTCPeerConnectionIceEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCPeerConnectionIceEvent where
+  pFromJSVal = RTCPeerConnectionIceEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCPeerConnectionIceEvent where
+  toJSVal = return . unRTCPeerConnectionIceEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCPeerConnectionIceEvent where
+  fromJSVal = return . fmap RTCPeerConnectionIceEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent RTCPeerConnectionIceEvent
+instance IsGObject RTCPeerConnectionIceEvent where
+  typeGType _ = gTypeRTCPeerConnectionIceEvent
+  {-# INLINE typeGType #-}
+noRTCPeerConnectionIceEvent :: Maybe RTCPeerConnectionIceEvent
+noRTCPeerConnectionIceEvent = Nothing
+{-# INLINE noRTCPeerConnectionIceEvent #-}
+
+foreign import javascript unsafe "window[\"RTCPeerConnectionIceEvent\"]" gTypeRTCPeerConnectionIceEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRTPStreamStats".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RTCStats"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRTPStreamStats Mozilla RTCRTPStreamStats documentation>
+newtype RTCRTPStreamStats = RTCRTPStreamStats { unRTCRTPStreamStats :: JSVal }
+
+instance Eq (RTCRTPStreamStats) where
+  (RTCRTPStreamStats a) == (RTCRTPStreamStats b) = js_eq a b
+
+instance PToJSVal RTCRTPStreamStats where
+  pToJSVal = unRTCRTPStreamStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRTPStreamStats where
+  pFromJSVal = RTCRTPStreamStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRTPStreamStats where
+  toJSVal = return . unRTCRTPStreamStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRTPStreamStats where
+  fromJSVal = return . fmap RTCRTPStreamStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsRTCStats o, IsGObject o) => IsRTCRTPStreamStats o
+toRTCRTPStreamStats :: IsRTCRTPStreamStats o => o -> RTCRTPStreamStats
+toRTCRTPStreamStats = RTCRTPStreamStats . coerce
+
+instance IsRTCRTPStreamStats RTCRTPStreamStats
+instance IsRTCStats RTCRTPStreamStats
+instance IsGObject RTCRTPStreamStats where
+  typeGType _ = gTypeRTCRTPStreamStats
+  {-# INLINE typeGType #-}
+noRTCRTPStreamStats :: Maybe RTCRTPStreamStats
+noRTCRTPStreamStats = Nothing
+{-# INLINE noRTCRTPStreamStats #-}
+
+foreign import javascript unsafe "window[\"RTCRTPStreamStats\"]" gTypeRTCRTPStreamStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpCodecParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpCodecParameters Mozilla RTCRtpCodecParameters documentation>
+newtype RTCRtpCodecParameters = RTCRtpCodecParameters { unRTCRtpCodecParameters :: JSVal }
+
+instance Eq (RTCRtpCodecParameters) where
+  (RTCRtpCodecParameters a) == (RTCRtpCodecParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpCodecParameters where
+  pToJSVal = unRTCRtpCodecParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpCodecParameters where
+  pFromJSVal = RTCRtpCodecParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpCodecParameters where
+  toJSVal = return . unRTCRtpCodecParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpCodecParameters where
+  fromJSVal = return . fmap RTCRtpCodecParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpCodecParameters where
+  typeGType _ = gTypeRTCRtpCodecParameters
+  {-# INLINE typeGType #-}
+noRTCRtpCodecParameters :: Maybe RTCRtpCodecParameters
+noRTCRtpCodecParameters = Nothing
+{-# INLINE noRTCRtpCodecParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpCodecParameters\"]" gTypeRTCRtpCodecParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpEncodingParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpEncodingParameters Mozilla RTCRtpEncodingParameters documentation>
+newtype RTCRtpEncodingParameters = RTCRtpEncodingParameters { unRTCRtpEncodingParameters :: JSVal }
+
+instance Eq (RTCRtpEncodingParameters) where
+  (RTCRtpEncodingParameters a) == (RTCRtpEncodingParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpEncodingParameters where
+  pToJSVal = unRTCRtpEncodingParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpEncodingParameters where
+  pFromJSVal = RTCRtpEncodingParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpEncodingParameters where
+  toJSVal = return . unRTCRtpEncodingParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpEncodingParameters where
+  fromJSVal = return . fmap RTCRtpEncodingParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpEncodingParameters where
+  typeGType _ = gTypeRTCRtpEncodingParameters
+  {-# INLINE typeGType #-}
+noRTCRtpEncodingParameters :: Maybe RTCRtpEncodingParameters
+noRTCRtpEncodingParameters = Nothing
+{-# INLINE noRTCRtpEncodingParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpEncodingParameters\"]" gTypeRTCRtpEncodingParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpFecParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpFecParameters Mozilla RTCRtpFecParameters documentation>
+newtype RTCRtpFecParameters = RTCRtpFecParameters { unRTCRtpFecParameters :: JSVal }
+
+instance Eq (RTCRtpFecParameters) where
+  (RTCRtpFecParameters a) == (RTCRtpFecParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpFecParameters where
+  pToJSVal = unRTCRtpFecParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpFecParameters where
+  pFromJSVal = RTCRtpFecParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpFecParameters where
+  toJSVal = return . unRTCRtpFecParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpFecParameters where
+  fromJSVal = return . fmap RTCRtpFecParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpFecParameters where
+  typeGType _ = gTypeRTCRtpFecParameters
+  {-# INLINE typeGType #-}
+noRTCRtpFecParameters :: Maybe RTCRtpFecParameters
+noRTCRtpFecParameters = Nothing
+{-# INLINE noRTCRtpFecParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpFecParameters\"]" gTypeRTCRtpFecParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpHeaderExtensionParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpHeaderExtensionParameters Mozilla RTCRtpHeaderExtensionParameters documentation>
+newtype RTCRtpHeaderExtensionParameters = RTCRtpHeaderExtensionParameters { unRTCRtpHeaderExtensionParameters :: JSVal }
+
+instance Eq (RTCRtpHeaderExtensionParameters) where
+  (RTCRtpHeaderExtensionParameters a) == (RTCRtpHeaderExtensionParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpHeaderExtensionParameters where
+  pToJSVal = unRTCRtpHeaderExtensionParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpHeaderExtensionParameters where
+  pFromJSVal = RTCRtpHeaderExtensionParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpHeaderExtensionParameters where
+  toJSVal = return . unRTCRtpHeaderExtensionParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpHeaderExtensionParameters where
+  fromJSVal = return . fmap RTCRtpHeaderExtensionParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpHeaderExtensionParameters where
+  typeGType _ = gTypeRTCRtpHeaderExtensionParameters
+  {-# INLINE typeGType #-}
+noRTCRtpHeaderExtensionParameters :: Maybe RTCRtpHeaderExtensionParameters
+noRTCRtpHeaderExtensionParameters = Nothing
+{-# INLINE noRTCRtpHeaderExtensionParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpHeaderExtensionParameters\"]" gTypeRTCRtpHeaderExtensionParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpParameters Mozilla RTCRtpParameters documentation>
+newtype RTCRtpParameters = RTCRtpParameters { unRTCRtpParameters :: JSVal }
+
+instance Eq (RTCRtpParameters) where
+  (RTCRtpParameters a) == (RTCRtpParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpParameters where
+  pToJSVal = unRTCRtpParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpParameters where
+  pFromJSVal = RTCRtpParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpParameters where
+  toJSVal = return . unRTCRtpParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpParameters where
+  fromJSVal = return . fmap RTCRtpParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpParameters where
+  typeGType _ = gTypeRTCRtpParameters
+  {-# INLINE typeGType #-}
+noRTCRtpParameters :: Maybe RTCRtpParameters
+noRTCRtpParameters = Nothing
+{-# INLINE noRTCRtpParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpParameters\"]" gTypeRTCRtpParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpReceiver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpReceiver Mozilla RTCRtpReceiver documentation>
+newtype RTCRtpReceiver = RTCRtpReceiver { unRTCRtpReceiver :: JSVal }
+
+instance Eq (RTCRtpReceiver) where
+  (RTCRtpReceiver a) == (RTCRtpReceiver b) = js_eq a b
+
+instance PToJSVal RTCRtpReceiver where
+  pToJSVal = unRTCRtpReceiver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpReceiver where
+  pFromJSVal = RTCRtpReceiver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpReceiver where
+  toJSVal = return . unRTCRtpReceiver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpReceiver where
+  fromJSVal = return . fmap RTCRtpReceiver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpReceiver where
+  typeGType _ = gTypeRTCRtpReceiver
+  {-# INLINE typeGType #-}
+noRTCRtpReceiver :: Maybe RTCRtpReceiver
+noRTCRtpReceiver = Nothing
+{-# INLINE noRTCRtpReceiver #-}
+
+foreign import javascript unsafe "window[\"RTCRtpReceiver\"]" gTypeRTCRtpReceiver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpRtxParameters".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpRtxParameters Mozilla RTCRtpRtxParameters documentation>
+newtype RTCRtpRtxParameters = RTCRtpRtxParameters { unRTCRtpRtxParameters :: JSVal }
+
+instance Eq (RTCRtpRtxParameters) where
+  (RTCRtpRtxParameters a) == (RTCRtpRtxParameters b) = js_eq a b
+
+instance PToJSVal RTCRtpRtxParameters where
+  pToJSVal = unRTCRtpRtxParameters
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpRtxParameters where
+  pFromJSVal = RTCRtpRtxParameters
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpRtxParameters where
+  toJSVal = return . unRTCRtpRtxParameters
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpRtxParameters where
+  fromJSVal = return . fmap RTCRtpRtxParameters . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpRtxParameters where
+  typeGType _ = gTypeRTCRtpRtxParameters
+  {-# INLINE typeGType #-}
+noRTCRtpRtxParameters :: Maybe RTCRtpRtxParameters
+noRTCRtpRtxParameters = Nothing
+{-# INLINE noRTCRtpRtxParameters #-}
+
+foreign import javascript unsafe "window[\"RTCRtpRtxParameters\"]" gTypeRTCRtpRtxParameters :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpSender".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpSender Mozilla RTCRtpSender documentation>
+newtype RTCRtpSender = RTCRtpSender { unRTCRtpSender :: JSVal }
+
+instance Eq (RTCRtpSender) where
+  (RTCRtpSender a) == (RTCRtpSender b) = js_eq a b
+
+instance PToJSVal RTCRtpSender where
+  pToJSVal = unRTCRtpSender
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpSender where
+  pFromJSVal = RTCRtpSender
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpSender where
+  toJSVal = return . unRTCRtpSender
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpSender where
+  fromJSVal = return . fmap RTCRtpSender . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpSender where
+  typeGType _ = gTypeRTCRtpSender
+  {-# INLINE typeGType #-}
+noRTCRtpSender :: Maybe RTCRtpSender
+noRTCRtpSender = Nothing
+{-# INLINE noRTCRtpSender #-}
+
+foreign import javascript unsafe "window[\"RTCRtpSender\"]" gTypeRTCRtpSender :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpTransceiver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiver Mozilla RTCRtpTransceiver documentation>
+newtype RTCRtpTransceiver = RTCRtpTransceiver { unRTCRtpTransceiver :: JSVal }
+
+instance Eq (RTCRtpTransceiver) where
+  (RTCRtpTransceiver a) == (RTCRtpTransceiver b) = js_eq a b
+
+instance PToJSVal RTCRtpTransceiver where
+  pToJSVal = unRTCRtpTransceiver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpTransceiver where
+  pFromJSVal = RTCRtpTransceiver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpTransceiver where
+  toJSVal = return . unRTCRtpTransceiver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpTransceiver where
+  fromJSVal = return . fmap RTCRtpTransceiver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpTransceiver where
+  typeGType _ = gTypeRTCRtpTransceiver
+  {-# INLINE typeGType #-}
+noRTCRtpTransceiver :: Maybe RTCRtpTransceiver
+noRTCRtpTransceiver = Nothing
+{-# INLINE noRTCRtpTransceiver #-}
+
+foreign import javascript unsafe "window[\"RTCRtpTransceiver\"]" gTypeRTCRtpTransceiver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCRtpTransceiverInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpTransceiverInit Mozilla RTCRtpTransceiverInit documentation>
+newtype RTCRtpTransceiverInit = RTCRtpTransceiverInit { unRTCRtpTransceiverInit :: JSVal }
+
+instance Eq (RTCRtpTransceiverInit) where
+  (RTCRtpTransceiverInit a) == (RTCRtpTransceiverInit b) = js_eq a b
+
+instance PToJSVal RTCRtpTransceiverInit where
+  pToJSVal = unRTCRtpTransceiverInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCRtpTransceiverInit where
+  pFromJSVal = RTCRtpTransceiverInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCRtpTransceiverInit where
+  toJSVal = return . unRTCRtpTransceiverInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCRtpTransceiverInit where
+  fromJSVal = return . fmap RTCRtpTransceiverInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCRtpTransceiverInit where
+  typeGType _ = gTypeRTCRtpTransceiverInit
+  {-# INLINE typeGType #-}
+noRTCRtpTransceiverInit :: Maybe RTCRtpTransceiverInit
+noRTCRtpTransceiverInit = Nothing
+{-# INLINE noRTCRtpTransceiverInit #-}
+
+foreign import javascript unsafe "window[\"RTCRtpTransceiverInit\"]" gTypeRTCRtpTransceiverInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCSessionDescription".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescription Mozilla RTCSessionDescription documentation>
+newtype RTCSessionDescription = RTCSessionDescription { unRTCSessionDescription :: JSVal }
+
+instance Eq (RTCSessionDescription) where
+  (RTCSessionDescription a) == (RTCSessionDescription b) = js_eq a b
+
+instance PToJSVal RTCSessionDescription where
+  pToJSVal = unRTCSessionDescription
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCSessionDescription where
+  pFromJSVal = RTCSessionDescription
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCSessionDescription where
+  toJSVal = return . unRTCSessionDescription
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCSessionDescription where
+  fromJSVal = return . fmap RTCSessionDescription . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCSessionDescription where
+  typeGType _ = gTypeRTCSessionDescription
+  {-# INLINE typeGType #-}
+noRTCSessionDescription :: Maybe RTCSessionDescription
+noRTCSessionDescription = Nothing
+{-# INLINE noRTCSessionDescription #-}
+
+foreign import javascript unsafe "window[\"RTCSessionDescription\"]" gTypeRTCSessionDescription :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCSessionDescriptionInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCSessionDescriptionInit Mozilla RTCSessionDescriptionInit documentation>
+newtype RTCSessionDescriptionInit = RTCSessionDescriptionInit { unRTCSessionDescriptionInit :: JSVal }
+
+instance Eq (RTCSessionDescriptionInit) where
+  (RTCSessionDescriptionInit a) == (RTCSessionDescriptionInit b) = js_eq a b
+
+instance PToJSVal RTCSessionDescriptionInit where
+  pToJSVal = unRTCSessionDescriptionInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCSessionDescriptionInit where
+  pFromJSVal = RTCSessionDescriptionInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCSessionDescriptionInit where
+  toJSVal = return . unRTCSessionDescriptionInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCSessionDescriptionInit where
+  fromJSVal = return . fmap RTCSessionDescriptionInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCSessionDescriptionInit where
+  typeGType _ = gTypeRTCSessionDescriptionInit
+  {-# INLINE typeGType #-}
+noRTCSessionDescriptionInit :: Maybe RTCSessionDescriptionInit
+noRTCSessionDescriptionInit = Nothing
+{-# INLINE noRTCSessionDescriptionInit #-}
+
+foreign import javascript unsafe "window[\"RTCSessionDescriptionInit\"]" gTypeRTCSessionDescriptionInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCStats".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStats Mozilla RTCStats documentation>
+newtype RTCStats = RTCStats { unRTCStats :: JSVal }
+
+instance Eq (RTCStats) where
+  (RTCStats a) == (RTCStats b) = js_eq a b
+
+instance PToJSVal RTCStats where
+  pToJSVal = unRTCStats
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStats where
+  pFromJSVal = RTCStats
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStats where
+  toJSVal = return . unRTCStats
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStats where
+  fromJSVal = return . fmap RTCStats . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsRTCStats o
+toRTCStats :: IsRTCStats o => o -> RTCStats
+toRTCStats = RTCStats . coerce
+
+instance IsRTCStats RTCStats
+instance IsGObject RTCStats where
+  typeGType _ = gTypeRTCStats
+  {-# INLINE typeGType #-}
+noRTCStats :: Maybe RTCStats
+noRTCStats = Nothing
+{-# INLINE noRTCStats #-}
+
+foreign import javascript unsafe "window[\"RTCStats\"]" gTypeRTCStats :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCStatsReport".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCStatsReport Mozilla RTCStatsReport documentation>
+newtype RTCStatsReport = RTCStatsReport { unRTCStatsReport :: JSVal }
+
+instance Eq (RTCStatsReport) where
+  (RTCStatsReport a) == (RTCStatsReport b) = js_eq a b
+
+instance PToJSVal RTCStatsReport where
+  pToJSVal = unRTCStatsReport
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCStatsReport where
+  pFromJSVal = RTCStatsReport
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCStatsReport where
+  toJSVal = return . unRTCStatsReport
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCStatsReport where
+  fromJSVal = return . fmap RTCStatsReport . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RTCStatsReport where
+  typeGType _ = gTypeRTCStatsReport
+  {-# INLINE typeGType #-}
+noRTCStatsReport :: Maybe RTCStatsReport
+noRTCStatsReport = Nothing
+{-# INLINE noRTCStatsReport #-}
+
+foreign import javascript unsafe "window[\"RTCStatsReport\"]" gTypeRTCStatsReport :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCTrackEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEvent Mozilla RTCTrackEvent documentation>
+newtype RTCTrackEvent = RTCTrackEvent { unRTCTrackEvent :: JSVal }
+
+instance Eq (RTCTrackEvent) where
+  (RTCTrackEvent a) == (RTCTrackEvent b) = js_eq a b
+
+instance PToJSVal RTCTrackEvent where
+  pToJSVal = unRTCTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCTrackEvent where
+  pFromJSVal = RTCTrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCTrackEvent where
+  toJSVal = return . unRTCTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCTrackEvent where
+  fromJSVal = return . fmap RTCTrackEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent RTCTrackEvent
+instance IsGObject RTCTrackEvent where
+  typeGType _ = gTypeRTCTrackEvent
+  {-# INLINE typeGType #-}
+noRTCTrackEvent :: Maybe RTCTrackEvent
+noRTCTrackEvent = Nothing
+{-# INLINE noRTCTrackEvent #-}
+
+foreign import javascript unsafe "window[\"RTCTrackEvent\"]" gTypeRTCTrackEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RTCTrackEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RTCTrackEventInit Mozilla RTCTrackEventInit documentation>
+newtype RTCTrackEventInit = RTCTrackEventInit { unRTCTrackEventInit :: JSVal }
+
+instance Eq (RTCTrackEventInit) where
+  (RTCTrackEventInit a) == (RTCTrackEventInit b) = js_eq a b
+
+instance PToJSVal RTCTrackEventInit where
+  pToJSVal = unRTCTrackEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RTCTrackEventInit where
+  pFromJSVal = RTCTrackEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RTCTrackEventInit where
+  toJSVal = return . unRTCTrackEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RTCTrackEventInit where
+  fromJSVal = return . fmap RTCTrackEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit RTCTrackEventInit
+instance IsGObject RTCTrackEventInit where
+  typeGType _ = gTypeRTCTrackEventInit
+  {-# INLINE typeGType #-}
+noRTCTrackEventInit :: Maybe RTCTrackEventInit
+noRTCTrackEventInit = Nothing
+{-# INLINE noRTCTrackEventInit #-}
+
+foreign import javascript unsafe "window[\"RTCTrackEventInit\"]" gTypeRTCTrackEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RadioNodeList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.NodeList"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RadioNodeList Mozilla RadioNodeList documentation>
+newtype RadioNodeList = RadioNodeList { unRadioNodeList :: JSVal }
+
+instance Eq (RadioNodeList) where
+  (RadioNodeList a) == (RadioNodeList b) = js_eq a b
+
+instance PToJSVal RadioNodeList where
+  pToJSVal = unRadioNodeList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RadioNodeList where
+  pFromJSVal = RadioNodeList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RadioNodeList where
+  toJSVal = return . unRadioNodeList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RadioNodeList where
+  fromJSVal = return . fmap RadioNodeList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNodeList RadioNodeList
+instance IsGObject RadioNodeList where
+  typeGType _ = gTypeRadioNodeList
+  {-# INLINE typeGType #-}
+noRadioNodeList :: Maybe RadioNodeList
+noRadioNodeList = Nothing
+{-# INLINE noRadioNodeList #-}
+
+foreign import javascript unsafe "window[\"RadioNodeList\"]" gTypeRadioNodeList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Range".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Range Mozilla Range documentation>
+newtype Range = Range { unRange :: JSVal }
+
+instance Eq (Range) where
+  (Range a) == (Range b) = js_eq a b
+
+instance PToJSVal Range where
+  pToJSVal = unRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Range where
+  pFromJSVal = Range
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Range where
+  toJSVal = return . unRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Range where
+  fromJSVal = return . fmap Range . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Range where
+  typeGType _ = gTypeRange
+  {-# INLINE typeGType #-}
+noRange :: Maybe Range
+noRange = Nothing
+{-# INLINE noRange #-}
+
+foreign import javascript unsafe "window[\"Range\"]" gTypeRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableByteStreamController".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableByteStreamController Mozilla ReadableByteStreamController documentation>
+newtype ReadableByteStreamController = ReadableByteStreamController { unReadableByteStreamController :: JSVal }
+
+instance Eq (ReadableByteStreamController) where
+  (ReadableByteStreamController a) == (ReadableByteStreamController b) = js_eq a b
+
+instance PToJSVal ReadableByteStreamController where
+  pToJSVal = unReadableByteStreamController
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableByteStreamController where
+  pFromJSVal = ReadableByteStreamController
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableByteStreamController where
+  toJSVal = return . unReadableByteStreamController
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableByteStreamController where
+  fromJSVal = return . fmap ReadableByteStreamController . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableByteStreamController where
+  typeGType _ = gTypeReadableByteStreamController
+  {-# INLINE typeGType #-}
+noReadableByteStreamController :: Maybe ReadableByteStreamController
+noReadableByteStreamController = Nothing
+{-# INLINE noReadableByteStreamController #-}
+
+foreign import javascript unsafe "window[\"ReadableByteStreamController\"]" gTypeReadableByteStreamController :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStream".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStream Mozilla ReadableStream documentation>
+newtype ReadableStream = ReadableStream { unReadableStream :: JSVal }
+
+instance Eq (ReadableStream) where
+  (ReadableStream a) == (ReadableStream b) = js_eq a b
+
+instance PToJSVal ReadableStream where
+  pToJSVal = unReadableStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStream where
+  pFromJSVal = ReadableStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStream where
+  toJSVal = return . unReadableStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStream where
+  fromJSVal = return . fmap ReadableStream . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStream where
+  typeGType _ = gTypeReadableStream
+  {-# INLINE typeGType #-}
+noReadableStream :: Maybe ReadableStream
+noReadableStream = Nothing
+{-# INLINE noReadableStream #-}
+
+foreign import javascript unsafe "window[\"ReadableStream\"]" gTypeReadableStream :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStreamBYOBReader".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBReader Mozilla ReadableStreamBYOBReader documentation>
+newtype ReadableStreamBYOBReader = ReadableStreamBYOBReader { unReadableStreamBYOBReader :: JSVal }
+
+instance Eq (ReadableStreamBYOBReader) where
+  (ReadableStreamBYOBReader a) == (ReadableStreamBYOBReader b) = js_eq a b
+
+instance PToJSVal ReadableStreamBYOBReader where
+  pToJSVal = unReadableStreamBYOBReader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStreamBYOBReader where
+  pFromJSVal = ReadableStreamBYOBReader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStreamBYOBReader where
+  toJSVal = return . unReadableStreamBYOBReader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStreamBYOBReader where
+  fromJSVal = return . fmap ReadableStreamBYOBReader . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStreamBYOBReader where
+  typeGType _ = gTypeReadableStreamBYOBReader
+  {-# INLINE typeGType #-}
+noReadableStreamBYOBReader :: Maybe ReadableStreamBYOBReader
+noReadableStreamBYOBReader = Nothing
+{-# INLINE noReadableStreamBYOBReader #-}
+
+foreign import javascript unsafe "window[\"ReadableStreamBYOBReader\"]" gTypeReadableStreamBYOBReader :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStreamBYOBRequest".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamBYOBRequest Mozilla ReadableStreamBYOBRequest documentation>
+newtype ReadableStreamBYOBRequest = ReadableStreamBYOBRequest { unReadableStreamBYOBRequest :: JSVal }
+
+instance Eq (ReadableStreamBYOBRequest) where
+  (ReadableStreamBYOBRequest a) == (ReadableStreamBYOBRequest b) = js_eq a b
+
+instance PToJSVal ReadableStreamBYOBRequest where
+  pToJSVal = unReadableStreamBYOBRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStreamBYOBRequest where
+  pFromJSVal = ReadableStreamBYOBRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStreamBYOBRequest where
+  toJSVal = return . unReadableStreamBYOBRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStreamBYOBRequest where
+  fromJSVal = return . fmap ReadableStreamBYOBRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStreamBYOBRequest where
+  typeGType _ = gTypeReadableStreamBYOBRequest
+  {-# INLINE typeGType #-}
+noReadableStreamBYOBRequest :: Maybe ReadableStreamBYOBRequest
+noReadableStreamBYOBRequest = Nothing
+{-# INLINE noReadableStreamBYOBRequest #-}
+
+foreign import javascript unsafe "window[\"ReadableStreamBYOBRequest\"]" gTypeReadableStreamBYOBRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStreamDefaultController".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultController Mozilla ReadableStreamDefaultController documentation>
+newtype ReadableStreamDefaultController = ReadableStreamDefaultController { unReadableStreamDefaultController :: JSVal }
+
+instance Eq (ReadableStreamDefaultController) where
+  (ReadableStreamDefaultController a) == (ReadableStreamDefaultController b) = js_eq a b
+
+instance PToJSVal ReadableStreamDefaultController where
+  pToJSVal = unReadableStreamDefaultController
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStreamDefaultController where
+  pFromJSVal = ReadableStreamDefaultController
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStreamDefaultController where
+  toJSVal = return . unReadableStreamDefaultController
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStreamDefaultController where
+  fromJSVal = return . fmap ReadableStreamDefaultController . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStreamDefaultController where
+  typeGType _ = gTypeReadableStreamDefaultController
+  {-# INLINE typeGType #-}
+noReadableStreamDefaultController :: Maybe ReadableStreamDefaultController
+noReadableStreamDefaultController = Nothing
+{-# INLINE noReadableStreamDefaultController #-}
+
+foreign import javascript unsafe "window[\"ReadableStreamDefaultController\"]" gTypeReadableStreamDefaultController :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStreamDefaultReader".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamDefaultReader Mozilla ReadableStreamDefaultReader documentation>
+newtype ReadableStreamDefaultReader = ReadableStreamDefaultReader { unReadableStreamDefaultReader :: JSVal }
+
+instance Eq (ReadableStreamDefaultReader) where
+  (ReadableStreamDefaultReader a) == (ReadableStreamDefaultReader b) = js_eq a b
+
+instance PToJSVal ReadableStreamDefaultReader where
+  pToJSVal = unReadableStreamDefaultReader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStreamDefaultReader where
+  pFromJSVal = ReadableStreamDefaultReader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStreamDefaultReader where
+  toJSVal = return . unReadableStreamDefaultReader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStreamDefaultReader where
+  fromJSVal = return . fmap ReadableStreamDefaultReader . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStreamDefaultReader where
+  typeGType _ = gTypeReadableStreamDefaultReader
+  {-# INLINE typeGType #-}
+noReadableStreamDefaultReader :: Maybe ReadableStreamDefaultReader
+noReadableStreamDefaultReader = Nothing
+{-# INLINE noReadableStreamDefaultReader #-}
+
+foreign import javascript unsafe "window[\"ReadableStreamDefaultReader\"]" gTypeReadableStreamDefaultReader :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ReadableStreamSource".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ReadableStreamSource Mozilla ReadableStreamSource documentation>
+newtype ReadableStreamSource = ReadableStreamSource { unReadableStreamSource :: JSVal }
+
+instance Eq (ReadableStreamSource) where
+  (ReadableStreamSource a) == (ReadableStreamSource b) = js_eq a b
+
+instance PToJSVal ReadableStreamSource where
+  pToJSVal = unReadableStreamSource
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ReadableStreamSource where
+  pFromJSVal = ReadableStreamSource
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ReadableStreamSource where
+  toJSVal = return . unReadableStreamSource
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ReadableStreamSource where
+  fromJSVal = return . fmap ReadableStreamSource . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ReadableStreamSource where
+  typeGType _ = gTypeReadableStreamSource
+  {-# INLINE typeGType #-}
+noReadableStreamSource :: Maybe ReadableStreamSource
+noReadableStreamSource = Nothing
+{-# INLINE noReadableStreamSource #-}
+
+foreign import javascript unsafe "window[\"ReadableStreamSource\"]" gTypeReadableStreamSource :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Rect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Rect Mozilla Rect documentation>
+newtype Rect = Rect { unRect :: JSVal }
+
+instance Eq (Rect) where
+  (Rect a) == (Rect b) = js_eq a b
+
+instance PToJSVal Rect where
+  pToJSVal = unRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Rect where
+  pFromJSVal = Rect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Rect where
+  toJSVal = return . unRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Rect where
+  fromJSVal = return . fmap Rect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Rect where
+  typeGType _ = gTypeRect
+  {-# INLINE typeGType #-}
+noRect :: Maybe Rect
+noRect = Nothing
+{-# INLINE noRect #-}
+
+foreign import javascript unsafe "window[\"Rect\"]" gTypeRect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Request".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Body"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Request Mozilla Request documentation>
+newtype Request = Request { unRequest :: JSVal }
+
+instance Eq (Request) where
+  (Request a) == (Request b) = js_eq a b
+
+instance PToJSVal Request where
+  pToJSVal = unRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Request where
+  pFromJSVal = Request
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Request where
+  toJSVal = return . unRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Request where
+  fromJSVal = return . fmap Request . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsBody Request
+instance IsGObject Request where
+  typeGType _ = gTypeRequest
+  {-# INLINE typeGType #-}
+noRequest :: Maybe Request
+noRequest = Nothing
+{-# INLINE noRequest #-}
+
+foreign import javascript unsafe "window[\"Request\"]" gTypeRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RequestInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RequestInit Mozilla RequestInit documentation>
+newtype RequestInit = RequestInit { unRequestInit :: JSVal }
+
+instance Eq (RequestInit) where
+  (RequestInit a) == (RequestInit b) = js_eq a b
+
+instance PToJSVal RequestInit where
+  pToJSVal = unRequestInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RequestInit where
+  pFromJSVal = RequestInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RequestInit where
+  toJSVal = return . unRequestInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RequestInit where
+  fromJSVal = return . fmap RequestInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RequestInit where
+  typeGType _ = gTypeRequestInit
+  {-# INLINE typeGType #-}
+noRequestInit :: Maybe RequestInit
+noRequestInit = Nothing
+{-# INLINE noRequestInit #-}
+
+foreign import javascript unsafe "window[\"RequestInit\"]" gTypeRequestInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Response".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Response Mozilla Response documentation>
+newtype Response = Response { unResponse :: JSVal }
+
+instance Eq (Response) where
+  (Response a) == (Response b) = js_eq a b
+
+instance PToJSVal Response where
+  pToJSVal = unResponse
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Response where
+  pFromJSVal = Response
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Response where
+  toJSVal = return . unResponse
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Response where
+  fromJSVal = return . fmap Response . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Response where
+  typeGType _ = gTypeResponse
+  {-# INLINE typeGType #-}
+noResponse :: Maybe Response
+noResponse = Nothing
+{-# INLINE noResponse #-}
+
+foreign import javascript unsafe "window[\"Response\"]" gTypeResponse :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RotationRate".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RotationRate Mozilla RotationRate documentation>
+newtype RotationRate = RotationRate { unRotationRate :: JSVal }
+
+instance Eq (RotationRate) where
+  (RotationRate a) == (RotationRate b) = js_eq a b
+
+instance PToJSVal RotationRate where
+  pToJSVal = unRotationRate
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RotationRate where
+  pFromJSVal = RotationRate
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RotationRate where
+  toJSVal = return . unRotationRate
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RotationRate where
+  fromJSVal = return . fmap RotationRate . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RotationRate where
+  typeGType _ = gTypeRotationRate
+  {-# INLINE typeGType #-}
+noRotationRate :: Maybe RotationRate
+noRotationRate = Nothing
+{-# INLINE noRotationRate #-}
+
+foreign import javascript unsafe "window[\"RotationRate\"]" gTypeRotationRate :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RsaHashedImportParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedImportParams Mozilla RsaHashedImportParams documentation>
+newtype RsaHashedImportParams = RsaHashedImportParams { unRsaHashedImportParams :: JSVal }
+
+instance Eq (RsaHashedImportParams) where
+  (RsaHashedImportParams a) == (RsaHashedImportParams b) = js_eq a b
+
+instance PToJSVal RsaHashedImportParams where
+  pToJSVal = unRsaHashedImportParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RsaHashedImportParams where
+  pFromJSVal = RsaHashedImportParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RsaHashedImportParams where
+  toJSVal = return . unRsaHashedImportParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RsaHashedImportParams where
+  fromJSVal = return . fmap RsaHashedImportParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters RsaHashedImportParams
+instance IsGObject RsaHashedImportParams where
+  typeGType _ = gTypeRsaHashedImportParams
+  {-# INLINE typeGType #-}
+noRsaHashedImportParams :: Maybe RsaHashedImportParams
+noRsaHashedImportParams = Nothing
+{-# INLINE noRsaHashedImportParams #-}
+
+foreign import javascript unsafe "window[\"RsaHashedImportParams\"]" gTypeRsaHashedImportParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RsaHashedKeyGenParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.RsaKeyGenParams"
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RsaHashedKeyGenParams Mozilla RsaHashedKeyGenParams documentation>
+newtype RsaHashedKeyGenParams = RsaHashedKeyGenParams { unRsaHashedKeyGenParams :: JSVal }
+
+instance Eq (RsaHashedKeyGenParams) where
+  (RsaHashedKeyGenParams a) == (RsaHashedKeyGenParams b) = js_eq a b
+
+instance PToJSVal RsaHashedKeyGenParams where
+  pToJSVal = unRsaHashedKeyGenParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RsaHashedKeyGenParams where
+  pFromJSVal = RsaHashedKeyGenParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RsaHashedKeyGenParams where
+  toJSVal = return . unRsaHashedKeyGenParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RsaHashedKeyGenParams where
+  fromJSVal = return . fmap RsaHashedKeyGenParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsRsaKeyGenParams RsaHashedKeyGenParams
+instance IsCryptoAlgorithmParameters RsaHashedKeyGenParams
+instance IsGObject RsaHashedKeyGenParams where
+  typeGType _ = gTypeRsaHashedKeyGenParams
+  {-# INLINE typeGType #-}
+noRsaHashedKeyGenParams :: Maybe RsaHashedKeyGenParams
+noRsaHashedKeyGenParams = Nothing
+{-# INLINE noRsaHashedKeyGenParams #-}
+
+foreign import javascript unsafe "window[\"RsaHashedKeyGenParams\"]" gTypeRsaHashedKeyGenParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RsaKeyGenParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RsaKeyGenParams Mozilla RsaKeyGenParams documentation>
+newtype RsaKeyGenParams = RsaKeyGenParams { unRsaKeyGenParams :: JSVal }
+
+instance Eq (RsaKeyGenParams) where
+  (RsaKeyGenParams a) == (RsaKeyGenParams b) = js_eq a b
+
+instance PToJSVal RsaKeyGenParams where
+  pToJSVal = unRsaKeyGenParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RsaKeyGenParams where
+  pFromJSVal = RsaKeyGenParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RsaKeyGenParams where
+  toJSVal = return . unRsaKeyGenParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RsaKeyGenParams where
+  fromJSVal = return . fmap RsaKeyGenParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsCryptoAlgorithmParameters o, IsGObject o) => IsRsaKeyGenParams o
+toRsaKeyGenParams :: IsRsaKeyGenParams o => o -> RsaKeyGenParams
+toRsaKeyGenParams = RsaKeyGenParams . coerce
+
+instance IsRsaKeyGenParams RsaKeyGenParams
+instance IsCryptoAlgorithmParameters RsaKeyGenParams
+instance IsGObject RsaKeyGenParams where
+  typeGType _ = gTypeRsaKeyGenParams
+  {-# INLINE typeGType #-}
+noRsaKeyGenParams :: Maybe RsaKeyGenParams
+noRsaKeyGenParams = Nothing
+{-# INLINE noRsaKeyGenParams #-}
+
+foreign import javascript unsafe "window[\"RsaKeyGenParams\"]" gTypeRsaKeyGenParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RsaOaepParams".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CryptoAlgorithmParameters"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RsaOaepParams Mozilla RsaOaepParams documentation>
+newtype RsaOaepParams = RsaOaepParams { unRsaOaepParams :: JSVal }
+
+instance Eq (RsaOaepParams) where
+  (RsaOaepParams a) == (RsaOaepParams b) = js_eq a b
+
+instance PToJSVal RsaOaepParams where
+  pToJSVal = unRsaOaepParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RsaOaepParams where
+  pFromJSVal = RsaOaepParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RsaOaepParams where
+  toJSVal = return . unRsaOaepParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RsaOaepParams where
+  fromJSVal = return . fmap RsaOaepParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCryptoAlgorithmParameters RsaOaepParams
+instance IsGObject RsaOaepParams where
+  typeGType _ = gTypeRsaOaepParams
+  {-# INLINE typeGType #-}
+noRsaOaepParams :: Maybe RsaOaepParams
+noRsaOaepParams = Nothing
+{-# INLINE noRsaOaepParams #-}
+
+foreign import javascript unsafe "window[\"RsaOaepParams\"]" gTypeRsaOaepParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.RsaOtherPrimesInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/RsaOtherPrimesInfo Mozilla RsaOtherPrimesInfo documentation>
+newtype RsaOtherPrimesInfo = RsaOtherPrimesInfo { unRsaOtherPrimesInfo :: JSVal }
+
+instance Eq (RsaOtherPrimesInfo) where
+  (RsaOtherPrimesInfo a) == (RsaOtherPrimesInfo b) = js_eq a b
+
+instance PToJSVal RsaOtherPrimesInfo where
+  pToJSVal = unRsaOtherPrimesInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal RsaOtherPrimesInfo where
+  pFromJSVal = RsaOtherPrimesInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal RsaOtherPrimesInfo where
+  toJSVal = return . unRsaOtherPrimesInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal RsaOtherPrimesInfo where
+  fromJSVal = return . fmap RsaOtherPrimesInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject RsaOtherPrimesInfo where
+  typeGType _ = gTypeRsaOtherPrimesInfo
+  {-# INLINE typeGType #-}
+noRsaOtherPrimesInfo :: Maybe RsaOtherPrimesInfo
+noRsaOtherPrimesInfo = Nothing
+{-# INLINE noRsaOtherPrimesInfo #-}
+
+foreign import javascript unsafe "window[\"RsaOtherPrimesInfo\"]" gTypeRsaOtherPrimesInfo :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SQLError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLError Mozilla SQLError documentation>
+newtype SQLError = SQLError { unSQLError :: JSVal }
+
+instance Eq (SQLError) where
+  (SQLError a) == (SQLError b) = js_eq a b
+
+instance PToJSVal SQLError where
+  pToJSVal = unSQLError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLError where
+  pFromJSVal = SQLError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLError where
+  toJSVal = return . unSQLError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLError where
+  fromJSVal = return . fmap SQLError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SQLError where
+  typeGType _ = gTypeSQLError
+  {-# INLINE typeGType #-}
+noSQLError :: Maybe SQLError
+noSQLError = Nothing
+{-# INLINE noSQLError #-}
+
+foreign import javascript unsafe "window[\"SQLError\"]" gTypeSQLError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SQLException".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLException Mozilla SQLException documentation>
+newtype SQLException = SQLException { unSQLException :: JSVal }
+
+instance Eq (SQLException) where
+  (SQLException a) == (SQLException b) = js_eq a b
+
+instance PToJSVal SQLException where
+  pToJSVal = unSQLException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLException where
+  pFromJSVal = SQLException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLException where
+  toJSVal = return . unSQLException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLException where
+  fromJSVal = return . fmap SQLException . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SQLException where
+  typeGType _ = gTypeSQLException
+  {-# INLINE typeGType #-}
+noSQLException :: Maybe SQLException
+noSQLException = Nothing
+{-# INLINE noSQLException #-}
+
+foreign import javascript unsafe "window[\"SQLException\"]" gTypeSQLException :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SQLResultSet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSet Mozilla SQLResultSet documentation>
+newtype SQLResultSet = SQLResultSet { unSQLResultSet :: JSVal }
+
+instance Eq (SQLResultSet) where
+  (SQLResultSet a) == (SQLResultSet b) = js_eq a b
+
+instance PToJSVal SQLResultSet where
+  pToJSVal = unSQLResultSet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSet where
+  pFromJSVal = SQLResultSet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSet where
+  toJSVal = return . unSQLResultSet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSet where
+  fromJSVal = return . fmap SQLResultSet . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SQLResultSet where
+  typeGType _ = gTypeSQLResultSet
+  {-# INLINE typeGType #-}
+noSQLResultSet :: Maybe SQLResultSet
+noSQLResultSet = Nothing
+{-# INLINE noSQLResultSet #-}
+
+foreign import javascript unsafe "window[\"SQLResultSet\"]" gTypeSQLResultSet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SQLResultSetRowList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLResultSetRowList Mozilla SQLResultSetRowList documentation>
+newtype SQLResultSetRowList = SQLResultSetRowList { unSQLResultSetRowList :: JSVal }
+
+instance Eq (SQLResultSetRowList) where
+  (SQLResultSetRowList a) == (SQLResultSetRowList b) = js_eq a b
+
+instance PToJSVal SQLResultSetRowList where
+  pToJSVal = unSQLResultSetRowList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLResultSetRowList where
+  pFromJSVal = SQLResultSetRowList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLResultSetRowList where
+  toJSVal = return . unSQLResultSetRowList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLResultSetRowList where
+  fromJSVal = return . fmap SQLResultSetRowList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SQLResultSetRowList where
+  typeGType _ = gTypeSQLResultSetRowList
+  {-# INLINE typeGType #-}
+noSQLResultSetRowList :: Maybe SQLResultSetRowList
+noSQLResultSetRowList = Nothing
+{-# INLINE noSQLResultSetRowList #-}
+
+foreign import javascript unsafe "window[\"SQLResultSetRowList\"]" gTypeSQLResultSetRowList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SQLTransaction".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SQLTransaction Mozilla SQLTransaction documentation>
+newtype SQLTransaction = SQLTransaction { unSQLTransaction :: JSVal }
+
+instance Eq (SQLTransaction) where
+  (SQLTransaction a) == (SQLTransaction b) = js_eq a b
+
+instance PToJSVal SQLTransaction where
+  pToJSVal = unSQLTransaction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SQLTransaction where
+  pFromJSVal = SQLTransaction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SQLTransaction where
+  toJSVal = return . unSQLTransaction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SQLTransaction where
+  fromJSVal = return . fmap SQLTransaction . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SQLTransaction where
+  typeGType _ = gTypeSQLTransaction
+  {-# INLINE typeGType #-}
+noSQLTransaction :: Maybe SQLTransaction
+noSQLTransaction = Nothing
+{-# INLINE noSQLTransaction #-}
+
+foreign import javascript unsafe "window[\"SQLTransaction\"]" gTypeSQLTransaction :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAElement Mozilla SVGAElement documentation>
+newtype SVGAElement = SVGAElement { unSVGAElement :: JSVal }
+
+instance Eq (SVGAElement) where
+  (SVGAElement a) == (SVGAElement b) = js_eq a b
+
+instance PToJSVal SVGAElement where
+  pToJSVal = unSVGAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAElement where
+  pFromJSVal = SVGAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAElement where
+  toJSVal = return . unSVGAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAElement where
+  fromJSVal = return . fmap SVGAElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGAElement
+instance IsSVGElement SVGAElement
+instance IsElement SVGAElement
+instance IsNode SVGAElement
+instance IsEventTarget SVGAElement
+instance IsSlotable SVGAElement
+instance IsParentNode SVGAElement
+instance IsNonDocumentTypeChildNode SVGAElement
+instance IsDocumentAndElementEventHandlers SVGAElement
+instance IsChildNode SVGAElement
+instance IsAnimatable SVGAElement
+instance IsGlobalEventHandlers SVGAElement
+instance IsElementCSSInlineStyle SVGAElement
+instance IsSVGTests SVGAElement
+instance IsSVGURIReference SVGAElement
+instance IsSVGExternalResourcesRequired SVGAElement
+instance IsGObject SVGAElement where
+  typeGType _ = gTypeSVGAElement
+  {-# INLINE typeGType #-}
+noSVGAElement :: Maybe SVGAElement
+noSVGAElement = Nothing
+{-# INLINE noSVGAElement #-}
+
+foreign import javascript unsafe "window[\"SVGAElement\"]" gTypeSVGAElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAltGlyphDefElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphDefElement Mozilla SVGAltGlyphDefElement documentation>
+newtype SVGAltGlyphDefElement = SVGAltGlyphDefElement { unSVGAltGlyphDefElement :: JSVal }
+
+instance Eq (SVGAltGlyphDefElement) where
+  (SVGAltGlyphDefElement a) == (SVGAltGlyphDefElement b) = js_eq a b
+
+instance PToJSVal SVGAltGlyphDefElement where
+  pToJSVal = unSVGAltGlyphDefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphDefElement where
+  pFromJSVal = SVGAltGlyphDefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphDefElement where
+  toJSVal = return . unSVGAltGlyphDefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphDefElement where
+  fromJSVal = return . fmap SVGAltGlyphDefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGAltGlyphDefElement
+instance IsElement SVGAltGlyphDefElement
+instance IsNode SVGAltGlyphDefElement
+instance IsEventTarget SVGAltGlyphDefElement
+instance IsSlotable SVGAltGlyphDefElement
+instance IsParentNode SVGAltGlyphDefElement
+instance IsNonDocumentTypeChildNode SVGAltGlyphDefElement
+instance IsDocumentAndElementEventHandlers SVGAltGlyphDefElement
+instance IsChildNode SVGAltGlyphDefElement
+instance IsAnimatable SVGAltGlyphDefElement
+instance IsGlobalEventHandlers SVGAltGlyphDefElement
+instance IsElementCSSInlineStyle SVGAltGlyphDefElement
+instance IsGObject SVGAltGlyphDefElement where
+  typeGType _ = gTypeSVGAltGlyphDefElement
+  {-# INLINE typeGType #-}
+noSVGAltGlyphDefElement :: Maybe SVGAltGlyphDefElement
+noSVGAltGlyphDefElement = Nothing
+{-# INLINE noSVGAltGlyphDefElement #-}
+
+foreign import javascript unsafe "window[\"SVGAltGlyphDefElement\"]" gTypeSVGAltGlyphDefElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAltGlyphElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextPositioningElement"
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--     * "GHCJS.DOM.SVGURIReference"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphElement Mozilla SVGAltGlyphElement documentation>
+newtype SVGAltGlyphElement = SVGAltGlyphElement { unSVGAltGlyphElement :: JSVal }
+
+instance Eq (SVGAltGlyphElement) where
+  (SVGAltGlyphElement a) == (SVGAltGlyphElement b) = js_eq a b
+
+instance PToJSVal SVGAltGlyphElement where
+  pToJSVal = unSVGAltGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphElement where
+  pFromJSVal = SVGAltGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphElement where
+  toJSVal = return . unSVGAltGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphElement where
+  fromJSVal = return . fmap SVGAltGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGTextPositioningElement SVGAltGlyphElement
+instance IsSVGTextContentElement SVGAltGlyphElement
+instance IsSVGGraphicsElement SVGAltGlyphElement
+instance IsSVGElement SVGAltGlyphElement
+instance IsElement SVGAltGlyphElement
+instance IsNode SVGAltGlyphElement
+instance IsEventTarget SVGAltGlyphElement
+instance IsSlotable SVGAltGlyphElement
+instance IsParentNode SVGAltGlyphElement
+instance IsNonDocumentTypeChildNode SVGAltGlyphElement
+instance IsDocumentAndElementEventHandlers SVGAltGlyphElement
+instance IsChildNode SVGAltGlyphElement
+instance IsAnimatable SVGAltGlyphElement
+instance IsGlobalEventHandlers SVGAltGlyphElement
+instance IsElementCSSInlineStyle SVGAltGlyphElement
+instance IsSVGTests SVGAltGlyphElement
+instance IsSVGExternalResourcesRequired SVGAltGlyphElement
+instance IsSVGURIReference SVGAltGlyphElement
+instance IsGObject SVGAltGlyphElement where
+  typeGType _ = gTypeSVGAltGlyphElement
+  {-# INLINE typeGType #-}
+noSVGAltGlyphElement :: Maybe SVGAltGlyphElement
+noSVGAltGlyphElement = Nothing
+{-# INLINE noSVGAltGlyphElement #-}
+
+foreign import javascript unsafe "window[\"SVGAltGlyphElement\"]" gTypeSVGAltGlyphElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAltGlyphItemElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAltGlyphItemElement Mozilla SVGAltGlyphItemElement documentation>
+newtype SVGAltGlyphItemElement = SVGAltGlyphItemElement { unSVGAltGlyphItemElement :: JSVal }
+
+instance Eq (SVGAltGlyphItemElement) where
+  (SVGAltGlyphItemElement a) == (SVGAltGlyphItemElement b) = js_eq a b
+
+instance PToJSVal SVGAltGlyphItemElement where
+  pToJSVal = unSVGAltGlyphItemElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAltGlyphItemElement where
+  pFromJSVal = SVGAltGlyphItemElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAltGlyphItemElement where
+  toJSVal = return . unSVGAltGlyphItemElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAltGlyphItemElement where
+  fromJSVal = return . fmap SVGAltGlyphItemElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGAltGlyphItemElement
+instance IsElement SVGAltGlyphItemElement
+instance IsNode SVGAltGlyphItemElement
+instance IsEventTarget SVGAltGlyphItemElement
+instance IsSlotable SVGAltGlyphItemElement
+instance IsParentNode SVGAltGlyphItemElement
+instance IsNonDocumentTypeChildNode SVGAltGlyphItemElement
+instance IsDocumentAndElementEventHandlers SVGAltGlyphItemElement
+instance IsChildNode SVGAltGlyphItemElement
+instance IsAnimatable SVGAltGlyphItemElement
+instance IsGlobalEventHandlers SVGAltGlyphItemElement
+instance IsElementCSSInlineStyle SVGAltGlyphItemElement
+instance IsGObject SVGAltGlyphItemElement where
+  typeGType _ = gTypeSVGAltGlyphItemElement
+  {-# INLINE typeGType #-}
+noSVGAltGlyphItemElement :: Maybe SVGAltGlyphItemElement
+noSVGAltGlyphItemElement = Nothing
+{-# INLINE noSVGAltGlyphItemElement #-}
+
+foreign import javascript unsafe "window[\"SVGAltGlyphItemElement\"]" gTypeSVGAltGlyphItemElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAngle Mozilla SVGAngle documentation>
+newtype SVGAngle = SVGAngle { unSVGAngle :: JSVal }
+
+instance Eq (SVGAngle) where
+  (SVGAngle a) == (SVGAngle b) = js_eq a b
+
+instance PToJSVal SVGAngle where
+  pToJSVal = unSVGAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAngle where
+  pFromJSVal = SVGAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAngle where
+  toJSVal = return . unSVGAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAngle where
+  fromJSVal = return . fmap SVGAngle . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAngle where
+  typeGType _ = gTypeSVGAngle
+  {-# INLINE typeGType #-}
+noSVGAngle :: Maybe SVGAngle
+noSVGAngle = Nothing
+{-# INLINE noSVGAngle #-}
+
+foreign import javascript unsafe "window[\"SVGAngle\"]" gTypeSVGAngle :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimateColorElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGAnimationElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateColorElement Mozilla SVGAnimateColorElement documentation>
+newtype SVGAnimateColorElement = SVGAnimateColorElement { unSVGAnimateColorElement :: JSVal }
+
+instance Eq (SVGAnimateColorElement) where
+  (SVGAnimateColorElement a) == (SVGAnimateColorElement b) = js_eq a b
+
+instance PToJSVal SVGAnimateColorElement where
+  pToJSVal = unSVGAnimateColorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateColorElement where
+  pFromJSVal = SVGAnimateColorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateColorElement where
+  toJSVal = return . unSVGAnimateColorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateColorElement where
+  fromJSVal = return . fmap SVGAnimateColorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGAnimationElement SVGAnimateColorElement
+instance IsSVGElement SVGAnimateColorElement
+instance IsElement SVGAnimateColorElement
+instance IsNode SVGAnimateColorElement
+instance IsEventTarget SVGAnimateColorElement
+instance IsSlotable SVGAnimateColorElement
+instance IsParentNode SVGAnimateColorElement
+instance IsNonDocumentTypeChildNode SVGAnimateColorElement
+instance IsDocumentAndElementEventHandlers SVGAnimateColorElement
+instance IsChildNode SVGAnimateColorElement
+instance IsAnimatable SVGAnimateColorElement
+instance IsGlobalEventHandlers SVGAnimateColorElement
+instance IsElementCSSInlineStyle SVGAnimateColorElement
+instance IsSVGTests SVGAnimateColorElement
+instance IsSVGExternalResourcesRequired SVGAnimateColorElement
+instance IsGObject SVGAnimateColorElement where
+  typeGType _ = gTypeSVGAnimateColorElement
+  {-# INLINE typeGType #-}
+noSVGAnimateColorElement :: Maybe SVGAnimateColorElement
+noSVGAnimateColorElement = Nothing
+{-# INLINE noSVGAnimateColorElement #-}
+
+foreign import javascript unsafe "window[\"SVGAnimateColorElement\"]" gTypeSVGAnimateColorElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimateElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGAnimationElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateElement Mozilla SVGAnimateElement documentation>
+newtype SVGAnimateElement = SVGAnimateElement { unSVGAnimateElement :: JSVal }
+
+instance Eq (SVGAnimateElement) where
+  (SVGAnimateElement a) == (SVGAnimateElement b) = js_eq a b
+
+instance PToJSVal SVGAnimateElement where
+  pToJSVal = unSVGAnimateElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateElement where
+  pFromJSVal = SVGAnimateElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateElement where
+  toJSVal = return . unSVGAnimateElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateElement where
+  fromJSVal = return . fmap SVGAnimateElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGAnimationElement SVGAnimateElement
+instance IsSVGElement SVGAnimateElement
+instance IsElement SVGAnimateElement
+instance IsNode SVGAnimateElement
+instance IsEventTarget SVGAnimateElement
+instance IsSlotable SVGAnimateElement
+instance IsParentNode SVGAnimateElement
+instance IsNonDocumentTypeChildNode SVGAnimateElement
+instance IsDocumentAndElementEventHandlers SVGAnimateElement
+instance IsChildNode SVGAnimateElement
+instance IsAnimatable SVGAnimateElement
+instance IsGlobalEventHandlers SVGAnimateElement
+instance IsElementCSSInlineStyle SVGAnimateElement
+instance IsSVGTests SVGAnimateElement
+instance IsSVGExternalResourcesRequired SVGAnimateElement
+instance IsGObject SVGAnimateElement where
+  typeGType _ = gTypeSVGAnimateElement
+  {-# INLINE typeGType #-}
+noSVGAnimateElement :: Maybe SVGAnimateElement
+noSVGAnimateElement = Nothing
+{-# INLINE noSVGAnimateElement #-}
+
+foreign import javascript unsafe "window[\"SVGAnimateElement\"]" gTypeSVGAnimateElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimateMotionElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGAnimationElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateMotionElement Mozilla SVGAnimateMotionElement documentation>
+newtype SVGAnimateMotionElement = SVGAnimateMotionElement { unSVGAnimateMotionElement :: JSVal }
+
+instance Eq (SVGAnimateMotionElement) where
+  (SVGAnimateMotionElement a) == (SVGAnimateMotionElement b) = js_eq a b
+
+instance PToJSVal SVGAnimateMotionElement where
+  pToJSVal = unSVGAnimateMotionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateMotionElement where
+  pFromJSVal = SVGAnimateMotionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateMotionElement where
+  toJSVal = return . unSVGAnimateMotionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateMotionElement where
+  fromJSVal = return . fmap SVGAnimateMotionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGAnimationElement SVGAnimateMotionElement
+instance IsSVGElement SVGAnimateMotionElement
+instance IsElement SVGAnimateMotionElement
+instance IsNode SVGAnimateMotionElement
+instance IsEventTarget SVGAnimateMotionElement
+instance IsSlotable SVGAnimateMotionElement
+instance IsParentNode SVGAnimateMotionElement
+instance IsNonDocumentTypeChildNode SVGAnimateMotionElement
+instance IsDocumentAndElementEventHandlers SVGAnimateMotionElement
+instance IsChildNode SVGAnimateMotionElement
+instance IsAnimatable SVGAnimateMotionElement
+instance IsGlobalEventHandlers SVGAnimateMotionElement
+instance IsElementCSSInlineStyle SVGAnimateMotionElement
+instance IsSVGTests SVGAnimateMotionElement
+instance IsSVGExternalResourcesRequired SVGAnimateMotionElement
+instance IsGObject SVGAnimateMotionElement where
+  typeGType _ = gTypeSVGAnimateMotionElement
+  {-# INLINE typeGType #-}
+noSVGAnimateMotionElement :: Maybe SVGAnimateMotionElement
+noSVGAnimateMotionElement = Nothing
+{-# INLINE noSVGAnimateMotionElement #-}
+
+foreign import javascript unsafe "window[\"SVGAnimateMotionElement\"]" gTypeSVGAnimateMotionElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimateTransformElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGAnimationElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimateTransformElement Mozilla SVGAnimateTransformElement documentation>
+newtype SVGAnimateTransformElement = SVGAnimateTransformElement { unSVGAnimateTransformElement :: JSVal }
+
+instance Eq (SVGAnimateTransformElement) where
+  (SVGAnimateTransformElement a) == (SVGAnimateTransformElement b) = js_eq a b
+
+instance PToJSVal SVGAnimateTransformElement where
+  pToJSVal = unSVGAnimateTransformElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimateTransformElement where
+  pFromJSVal = SVGAnimateTransformElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimateTransformElement where
+  toJSVal = return . unSVGAnimateTransformElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimateTransformElement where
+  fromJSVal = return . fmap SVGAnimateTransformElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGAnimationElement SVGAnimateTransformElement
+instance IsSVGElement SVGAnimateTransformElement
+instance IsElement SVGAnimateTransformElement
+instance IsNode SVGAnimateTransformElement
+instance IsEventTarget SVGAnimateTransformElement
+instance IsSlotable SVGAnimateTransformElement
+instance IsParentNode SVGAnimateTransformElement
+instance IsNonDocumentTypeChildNode SVGAnimateTransformElement
+instance IsDocumentAndElementEventHandlers SVGAnimateTransformElement
+instance IsChildNode SVGAnimateTransformElement
+instance IsAnimatable SVGAnimateTransformElement
+instance IsGlobalEventHandlers SVGAnimateTransformElement
+instance IsElementCSSInlineStyle SVGAnimateTransformElement
+instance IsSVGTests SVGAnimateTransformElement
+instance IsSVGExternalResourcesRequired SVGAnimateTransformElement
+instance IsGObject SVGAnimateTransformElement where
+  typeGType _ = gTypeSVGAnimateTransformElement
+  {-# INLINE typeGType #-}
+noSVGAnimateTransformElement :: Maybe SVGAnimateTransformElement
+noSVGAnimateTransformElement = Nothing
+{-# INLINE noSVGAnimateTransformElement #-}
+
+foreign import javascript unsafe "window[\"SVGAnimateTransformElement\"]" gTypeSVGAnimateTransformElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedAngle".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedAngle Mozilla SVGAnimatedAngle documentation>
+newtype SVGAnimatedAngle = SVGAnimatedAngle { unSVGAnimatedAngle :: JSVal }
+
+instance Eq (SVGAnimatedAngle) where
+  (SVGAnimatedAngle a) == (SVGAnimatedAngle b) = js_eq a b
+
+instance PToJSVal SVGAnimatedAngle where
+  pToJSVal = unSVGAnimatedAngle
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedAngle where
+  pFromJSVal = SVGAnimatedAngle
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedAngle where
+  toJSVal = return . unSVGAnimatedAngle
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedAngle where
+  fromJSVal = return . fmap SVGAnimatedAngle . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedAngle where
+  typeGType _ = gTypeSVGAnimatedAngle
+  {-# INLINE typeGType #-}
+noSVGAnimatedAngle :: Maybe SVGAnimatedAngle
+noSVGAnimatedAngle = Nothing
+{-# INLINE noSVGAnimatedAngle #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedAngle\"]" gTypeSVGAnimatedAngle :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedBoolean".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedBoolean Mozilla SVGAnimatedBoolean documentation>
+newtype SVGAnimatedBoolean = SVGAnimatedBoolean { unSVGAnimatedBoolean :: JSVal }
+
+instance Eq (SVGAnimatedBoolean) where
+  (SVGAnimatedBoolean a) == (SVGAnimatedBoolean b) = js_eq a b
+
+instance PToJSVal SVGAnimatedBoolean where
+  pToJSVal = unSVGAnimatedBoolean
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedBoolean where
+  pFromJSVal = SVGAnimatedBoolean
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedBoolean where
+  toJSVal = return . unSVGAnimatedBoolean
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedBoolean where
+  fromJSVal = return . fmap SVGAnimatedBoolean . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedBoolean where
+  typeGType _ = gTypeSVGAnimatedBoolean
+  {-# INLINE typeGType #-}
+noSVGAnimatedBoolean :: Maybe SVGAnimatedBoolean
+noSVGAnimatedBoolean = Nothing
+{-# INLINE noSVGAnimatedBoolean #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedBoolean\"]" gTypeSVGAnimatedBoolean :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedEnumeration".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedEnumeration Mozilla SVGAnimatedEnumeration documentation>
+newtype SVGAnimatedEnumeration = SVGAnimatedEnumeration { unSVGAnimatedEnumeration :: JSVal }
+
+instance Eq (SVGAnimatedEnumeration) where
+  (SVGAnimatedEnumeration a) == (SVGAnimatedEnumeration b) = js_eq a b
+
+instance PToJSVal SVGAnimatedEnumeration where
+  pToJSVal = unSVGAnimatedEnumeration
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedEnumeration where
+  pFromJSVal = SVGAnimatedEnumeration
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedEnumeration where
+  toJSVal = return . unSVGAnimatedEnumeration
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedEnumeration where
+  fromJSVal = return . fmap SVGAnimatedEnumeration . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedEnumeration where
+  typeGType _ = gTypeSVGAnimatedEnumeration
+  {-# INLINE typeGType #-}
+noSVGAnimatedEnumeration :: Maybe SVGAnimatedEnumeration
+noSVGAnimatedEnumeration = Nothing
+{-# INLINE noSVGAnimatedEnumeration #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedEnumeration\"]" gTypeSVGAnimatedEnumeration :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedInteger".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedInteger Mozilla SVGAnimatedInteger documentation>
+newtype SVGAnimatedInteger = SVGAnimatedInteger { unSVGAnimatedInteger :: JSVal }
+
+instance Eq (SVGAnimatedInteger) where
+  (SVGAnimatedInteger a) == (SVGAnimatedInteger b) = js_eq a b
+
+instance PToJSVal SVGAnimatedInteger where
+  pToJSVal = unSVGAnimatedInteger
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedInteger where
+  pFromJSVal = SVGAnimatedInteger
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedInteger where
+  toJSVal = return . unSVGAnimatedInteger
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedInteger where
+  fromJSVal = return . fmap SVGAnimatedInteger . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedInteger where
+  typeGType _ = gTypeSVGAnimatedInteger
+  {-# INLINE typeGType #-}
+noSVGAnimatedInteger :: Maybe SVGAnimatedInteger
+noSVGAnimatedInteger = Nothing
+{-# INLINE noSVGAnimatedInteger #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedInteger\"]" gTypeSVGAnimatedInteger :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLength Mozilla SVGAnimatedLength documentation>
+newtype SVGAnimatedLength = SVGAnimatedLength { unSVGAnimatedLength :: JSVal }
+
+instance Eq (SVGAnimatedLength) where
+  (SVGAnimatedLength a) == (SVGAnimatedLength b) = js_eq a b
+
+instance PToJSVal SVGAnimatedLength where
+  pToJSVal = unSVGAnimatedLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLength where
+  pFromJSVal = SVGAnimatedLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLength where
+  toJSVal = return . unSVGAnimatedLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLength where
+  fromJSVal = return . fmap SVGAnimatedLength . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedLength where
+  typeGType _ = gTypeSVGAnimatedLength
+  {-# INLINE typeGType #-}
+noSVGAnimatedLength :: Maybe SVGAnimatedLength
+noSVGAnimatedLength = Nothing
+{-# INLINE noSVGAnimatedLength #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedLength\"]" gTypeSVGAnimatedLength :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedLengthList Mozilla SVGAnimatedLengthList documentation>
+newtype SVGAnimatedLengthList = SVGAnimatedLengthList { unSVGAnimatedLengthList :: JSVal }
+
+instance Eq (SVGAnimatedLengthList) where
+  (SVGAnimatedLengthList a) == (SVGAnimatedLengthList b) = js_eq a b
+
+instance PToJSVal SVGAnimatedLengthList where
+  pToJSVal = unSVGAnimatedLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedLengthList where
+  pFromJSVal = SVGAnimatedLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedLengthList where
+  toJSVal = return . unSVGAnimatedLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedLengthList where
+  fromJSVal = return . fmap SVGAnimatedLengthList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedLengthList where
+  typeGType _ = gTypeSVGAnimatedLengthList
+  {-# INLINE typeGType #-}
+noSVGAnimatedLengthList :: Maybe SVGAnimatedLengthList
+noSVGAnimatedLengthList = Nothing
+{-# INLINE noSVGAnimatedLengthList #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedLengthList\"]" gTypeSVGAnimatedLengthList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumber Mozilla SVGAnimatedNumber documentation>
+newtype SVGAnimatedNumber = SVGAnimatedNumber { unSVGAnimatedNumber :: JSVal }
+
+instance Eq (SVGAnimatedNumber) where
+  (SVGAnimatedNumber a) == (SVGAnimatedNumber b) = js_eq a b
+
+instance PToJSVal SVGAnimatedNumber where
+  pToJSVal = unSVGAnimatedNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumber where
+  pFromJSVal = SVGAnimatedNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumber where
+  toJSVal = return . unSVGAnimatedNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumber where
+  fromJSVal = return . fmap SVGAnimatedNumber . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedNumber where
+  typeGType _ = gTypeSVGAnimatedNumber
+  {-# INLINE typeGType #-}
+noSVGAnimatedNumber :: Maybe SVGAnimatedNumber
+noSVGAnimatedNumber = Nothing
+{-# INLINE noSVGAnimatedNumber #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedNumber\"]" gTypeSVGAnimatedNumber :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedNumberList Mozilla SVGAnimatedNumberList documentation>
+newtype SVGAnimatedNumberList = SVGAnimatedNumberList { unSVGAnimatedNumberList :: JSVal }
+
+instance Eq (SVGAnimatedNumberList) where
+  (SVGAnimatedNumberList a) == (SVGAnimatedNumberList b) = js_eq a b
+
+instance PToJSVal SVGAnimatedNumberList where
+  pToJSVal = unSVGAnimatedNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedNumberList where
+  pFromJSVal = SVGAnimatedNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedNumberList where
+  toJSVal = return . unSVGAnimatedNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedNumberList where
+  fromJSVal = return . fmap SVGAnimatedNumberList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedNumberList where
+  typeGType _ = gTypeSVGAnimatedNumberList
+  {-# INLINE typeGType #-}
+noSVGAnimatedNumberList :: Maybe SVGAnimatedNumberList
+noSVGAnimatedNumberList = Nothing
+{-# INLINE noSVGAnimatedNumberList #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedNumberList\"]" gTypeSVGAnimatedNumberList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedPreserveAspectRatio Mozilla SVGAnimatedPreserveAspectRatio documentation>
+newtype SVGAnimatedPreserveAspectRatio = SVGAnimatedPreserveAspectRatio { unSVGAnimatedPreserveAspectRatio :: JSVal }
+
+instance Eq (SVGAnimatedPreserveAspectRatio) where
+  (SVGAnimatedPreserveAspectRatio a) == (SVGAnimatedPreserveAspectRatio b) = js_eq a b
+
+instance PToJSVal SVGAnimatedPreserveAspectRatio where
+  pToJSVal = unSVGAnimatedPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedPreserveAspectRatio where
+  pFromJSVal = SVGAnimatedPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedPreserveAspectRatio where
+  toJSVal = return . unSVGAnimatedPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedPreserveAspectRatio where
+  fromJSVal = return . fmap SVGAnimatedPreserveAspectRatio . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedPreserveAspectRatio where
+  typeGType _ = gTypeSVGAnimatedPreserveAspectRatio
+  {-# INLINE typeGType #-}
+noSVGAnimatedPreserveAspectRatio :: Maybe SVGAnimatedPreserveAspectRatio
+noSVGAnimatedPreserveAspectRatio = Nothing
+{-# INLINE noSVGAnimatedPreserveAspectRatio #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedPreserveAspectRatio\"]" gTypeSVGAnimatedPreserveAspectRatio :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedRect Mozilla SVGAnimatedRect documentation>
+newtype SVGAnimatedRect = SVGAnimatedRect { unSVGAnimatedRect :: JSVal }
+
+instance Eq (SVGAnimatedRect) where
+  (SVGAnimatedRect a) == (SVGAnimatedRect b) = js_eq a b
+
+instance PToJSVal SVGAnimatedRect where
+  pToJSVal = unSVGAnimatedRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedRect where
+  pFromJSVal = SVGAnimatedRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedRect where
+  toJSVal = return . unSVGAnimatedRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedRect where
+  fromJSVal = return . fmap SVGAnimatedRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedRect where
+  typeGType _ = gTypeSVGAnimatedRect
+  {-# INLINE typeGType #-}
+noSVGAnimatedRect :: Maybe SVGAnimatedRect
+noSVGAnimatedRect = Nothing
+{-# INLINE noSVGAnimatedRect #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedRect\"]" gTypeSVGAnimatedRect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedString".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedString Mozilla SVGAnimatedString documentation>
+newtype SVGAnimatedString = SVGAnimatedString { unSVGAnimatedString :: JSVal }
+
+instance Eq (SVGAnimatedString) where
+  (SVGAnimatedString a) == (SVGAnimatedString b) = js_eq a b
+
+instance PToJSVal SVGAnimatedString where
+  pToJSVal = unSVGAnimatedString
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedString where
+  pFromJSVal = SVGAnimatedString
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedString where
+  toJSVal = return . unSVGAnimatedString
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedString where
+  fromJSVal = return . fmap SVGAnimatedString . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedString where
+  typeGType _ = gTypeSVGAnimatedString
+  {-# INLINE typeGType #-}
+noSVGAnimatedString :: Maybe SVGAnimatedString
+noSVGAnimatedString = Nothing
+{-# INLINE noSVGAnimatedString #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedString\"]" gTypeSVGAnimatedString :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimatedTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimatedTransformList Mozilla SVGAnimatedTransformList documentation>
+newtype SVGAnimatedTransformList = SVGAnimatedTransformList { unSVGAnimatedTransformList :: JSVal }
+
+instance Eq (SVGAnimatedTransformList) where
+  (SVGAnimatedTransformList a) == (SVGAnimatedTransformList b) = js_eq a b
+
+instance PToJSVal SVGAnimatedTransformList where
+  pToJSVal = unSVGAnimatedTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimatedTransformList where
+  pFromJSVal = SVGAnimatedTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimatedTransformList where
+  toJSVal = return . unSVGAnimatedTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimatedTransformList where
+  fromJSVal = return . fmap SVGAnimatedTransformList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGAnimatedTransformList where
+  typeGType _ = gTypeSVGAnimatedTransformList
+  {-# INLINE typeGType #-}
+noSVGAnimatedTransformList :: Maybe SVGAnimatedTransformList
+noSVGAnimatedTransformList = Nothing
+{-# INLINE noSVGAnimatedTransformList #-}
+
+foreign import javascript unsafe "window[\"SVGAnimatedTransformList\"]" gTypeSVGAnimatedTransformList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGAnimationElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGAnimationElement Mozilla SVGAnimationElement documentation>
+newtype SVGAnimationElement = SVGAnimationElement { unSVGAnimationElement :: JSVal }
+
+instance Eq (SVGAnimationElement) where
+  (SVGAnimationElement a) == (SVGAnimationElement b) = js_eq a b
+
+instance PToJSVal SVGAnimationElement where
+  pToJSVal = unSVGAnimationElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGAnimationElement where
+  pFromJSVal = SVGAnimationElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGAnimationElement where
+  toJSVal = return . unSVGAnimationElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGAnimationElement where
+  fromJSVal = return . fmap SVGAnimationElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGAnimationElement o
+toSVGAnimationElement :: IsSVGAnimationElement o => o -> SVGAnimationElement
+toSVGAnimationElement = SVGAnimationElement . coerce
+
+instance IsSVGAnimationElement SVGAnimationElement
+instance IsSVGElement SVGAnimationElement
+instance IsElement SVGAnimationElement
+instance IsNode SVGAnimationElement
+instance IsEventTarget SVGAnimationElement
+instance IsSlotable SVGAnimationElement
+instance IsParentNode SVGAnimationElement
+instance IsNonDocumentTypeChildNode SVGAnimationElement
+instance IsDocumentAndElementEventHandlers SVGAnimationElement
+instance IsChildNode SVGAnimationElement
+instance IsAnimatable SVGAnimationElement
+instance IsGlobalEventHandlers SVGAnimationElement
+instance IsElementCSSInlineStyle SVGAnimationElement
+instance IsSVGTests SVGAnimationElement
+instance IsSVGExternalResourcesRequired SVGAnimationElement
+instance IsGObject SVGAnimationElement where
+  typeGType _ = gTypeSVGAnimationElement
+  {-# INLINE typeGType #-}
+noSVGAnimationElement :: Maybe SVGAnimationElement
+noSVGAnimationElement = Nothing
+{-# INLINE noSVGAnimationElement #-}
+
+foreign import javascript unsafe "window[\"SVGAnimationElement\"]" gTypeSVGAnimationElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGCircleElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCircleElement Mozilla SVGCircleElement documentation>
+newtype SVGCircleElement = SVGCircleElement { unSVGCircleElement :: JSVal }
+
+instance Eq (SVGCircleElement) where
+  (SVGCircleElement a) == (SVGCircleElement b) = js_eq a b
+
+instance PToJSVal SVGCircleElement where
+  pToJSVal = unSVGCircleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCircleElement where
+  pFromJSVal = SVGCircleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCircleElement where
+  toJSVal = return . unSVGCircleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCircleElement where
+  fromJSVal = return . fmap SVGCircleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGCircleElement
+instance IsSVGElement SVGCircleElement
+instance IsElement SVGCircleElement
+instance IsNode SVGCircleElement
+instance IsEventTarget SVGCircleElement
+instance IsSlotable SVGCircleElement
+instance IsParentNode SVGCircleElement
+instance IsNonDocumentTypeChildNode SVGCircleElement
+instance IsDocumentAndElementEventHandlers SVGCircleElement
+instance IsChildNode SVGCircleElement
+instance IsAnimatable SVGCircleElement
+instance IsGlobalEventHandlers SVGCircleElement
+instance IsElementCSSInlineStyle SVGCircleElement
+instance IsSVGTests SVGCircleElement
+instance IsSVGExternalResourcesRequired SVGCircleElement
+instance IsGObject SVGCircleElement where
+  typeGType _ = gTypeSVGCircleElement
+  {-# INLINE typeGType #-}
+noSVGCircleElement :: Maybe SVGCircleElement
+noSVGCircleElement = Nothing
+{-# INLINE noSVGCircleElement #-}
+
+foreign import javascript unsafe "window[\"SVGCircleElement\"]" gTypeSVGCircleElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGClipPathElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGClipPathElement Mozilla SVGClipPathElement documentation>
+newtype SVGClipPathElement = SVGClipPathElement { unSVGClipPathElement :: JSVal }
+
+instance Eq (SVGClipPathElement) where
+  (SVGClipPathElement a) == (SVGClipPathElement b) = js_eq a b
+
+instance PToJSVal SVGClipPathElement where
+  pToJSVal = unSVGClipPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGClipPathElement where
+  pFromJSVal = SVGClipPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGClipPathElement where
+  toJSVal = return . unSVGClipPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGClipPathElement where
+  fromJSVal = return . fmap SVGClipPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGClipPathElement
+instance IsSVGElement SVGClipPathElement
+instance IsElement SVGClipPathElement
+instance IsNode SVGClipPathElement
+instance IsEventTarget SVGClipPathElement
+instance IsSlotable SVGClipPathElement
+instance IsParentNode SVGClipPathElement
+instance IsNonDocumentTypeChildNode SVGClipPathElement
+instance IsDocumentAndElementEventHandlers SVGClipPathElement
+instance IsChildNode SVGClipPathElement
+instance IsAnimatable SVGClipPathElement
+instance IsGlobalEventHandlers SVGClipPathElement
+instance IsElementCSSInlineStyle SVGClipPathElement
+instance IsSVGTests SVGClipPathElement
+instance IsSVGExternalResourcesRequired SVGClipPathElement
+instance IsGObject SVGClipPathElement where
+  typeGType _ = gTypeSVGClipPathElement
+  {-# INLINE typeGType #-}
+noSVGClipPathElement :: Maybe SVGClipPathElement
+noSVGClipPathElement = Nothing
+{-# INLINE noSVGClipPathElement #-}
+
+foreign import javascript unsafe "window[\"SVGClipPathElement\"]" gTypeSVGClipPathElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGComponentTransferFunctionElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGComponentTransferFunctionElement Mozilla SVGComponentTransferFunctionElement documentation>
+newtype SVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement { unSVGComponentTransferFunctionElement :: JSVal }
+
+instance Eq (SVGComponentTransferFunctionElement) where
+  (SVGComponentTransferFunctionElement a) == (SVGComponentTransferFunctionElement b) = js_eq a b
+
+instance PToJSVal SVGComponentTransferFunctionElement where
+  pToJSVal = unSVGComponentTransferFunctionElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGComponentTransferFunctionElement where
+  pFromJSVal = SVGComponentTransferFunctionElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGComponentTransferFunctionElement where
+  toJSVal = return . unSVGComponentTransferFunctionElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGComponentTransferFunctionElement where
+  fromJSVal = return . fmap SVGComponentTransferFunctionElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGComponentTransferFunctionElement o
+toSVGComponentTransferFunctionElement :: IsSVGComponentTransferFunctionElement o => o -> SVGComponentTransferFunctionElement
+toSVGComponentTransferFunctionElement = SVGComponentTransferFunctionElement . coerce
+
+instance IsSVGComponentTransferFunctionElement SVGComponentTransferFunctionElement
+instance IsSVGElement SVGComponentTransferFunctionElement
+instance IsElement SVGComponentTransferFunctionElement
+instance IsNode SVGComponentTransferFunctionElement
+instance IsEventTarget SVGComponentTransferFunctionElement
+instance IsSlotable SVGComponentTransferFunctionElement
+instance IsParentNode SVGComponentTransferFunctionElement
+instance IsNonDocumentTypeChildNode SVGComponentTransferFunctionElement
+instance IsDocumentAndElementEventHandlers SVGComponentTransferFunctionElement
+instance IsChildNode SVGComponentTransferFunctionElement
+instance IsAnimatable SVGComponentTransferFunctionElement
+instance IsGlobalEventHandlers SVGComponentTransferFunctionElement
+instance IsElementCSSInlineStyle SVGComponentTransferFunctionElement
+instance IsGObject SVGComponentTransferFunctionElement where
+  typeGType _ = gTypeSVGComponentTransferFunctionElement
+  {-# INLINE typeGType #-}
+noSVGComponentTransferFunctionElement :: Maybe SVGComponentTransferFunctionElement
+noSVGComponentTransferFunctionElement = Nothing
+{-# INLINE noSVGComponentTransferFunctionElement #-}
+
+foreign import javascript unsafe "window[\"SVGComponentTransferFunctionElement\"]" gTypeSVGComponentTransferFunctionElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGCursorElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGCursorElement Mozilla SVGCursorElement documentation>
+newtype SVGCursorElement = SVGCursorElement { unSVGCursorElement :: JSVal }
+
+instance Eq (SVGCursorElement) where
+  (SVGCursorElement a) == (SVGCursorElement b) = js_eq a b
+
+instance PToJSVal SVGCursorElement where
+  pToJSVal = unSVGCursorElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGCursorElement where
+  pFromJSVal = SVGCursorElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGCursorElement where
+  toJSVal = return . unSVGCursorElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGCursorElement where
+  fromJSVal = return . fmap SVGCursorElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGCursorElement
+instance IsElement SVGCursorElement
+instance IsNode SVGCursorElement
+instance IsEventTarget SVGCursorElement
+instance IsSlotable SVGCursorElement
+instance IsParentNode SVGCursorElement
+instance IsNonDocumentTypeChildNode SVGCursorElement
+instance IsDocumentAndElementEventHandlers SVGCursorElement
+instance IsChildNode SVGCursorElement
+instance IsAnimatable SVGCursorElement
+instance IsGlobalEventHandlers SVGCursorElement
+instance IsElementCSSInlineStyle SVGCursorElement
+instance IsSVGURIReference SVGCursorElement
+instance IsSVGTests SVGCursorElement
+instance IsSVGExternalResourcesRequired SVGCursorElement
+instance IsGObject SVGCursorElement where
+  typeGType _ = gTypeSVGCursorElement
+  {-# INLINE typeGType #-}
+noSVGCursorElement :: Maybe SVGCursorElement
+noSVGCursorElement = Nothing
+{-# INLINE noSVGCursorElement #-}
+
+foreign import javascript unsafe "window[\"SVGCursorElement\"]" gTypeSVGCursorElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGDefsElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDefsElement Mozilla SVGDefsElement documentation>
+newtype SVGDefsElement = SVGDefsElement { unSVGDefsElement :: JSVal }
+
+instance Eq (SVGDefsElement) where
+  (SVGDefsElement a) == (SVGDefsElement b) = js_eq a b
+
+instance PToJSVal SVGDefsElement where
+  pToJSVal = unSVGDefsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDefsElement where
+  pFromJSVal = SVGDefsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDefsElement where
+  toJSVal = return . unSVGDefsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDefsElement where
+  fromJSVal = return . fmap SVGDefsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGDefsElement
+instance IsSVGElement SVGDefsElement
+instance IsElement SVGDefsElement
+instance IsNode SVGDefsElement
+instance IsEventTarget SVGDefsElement
+instance IsSlotable SVGDefsElement
+instance IsParentNode SVGDefsElement
+instance IsNonDocumentTypeChildNode SVGDefsElement
+instance IsDocumentAndElementEventHandlers SVGDefsElement
+instance IsChildNode SVGDefsElement
+instance IsAnimatable SVGDefsElement
+instance IsGlobalEventHandlers SVGDefsElement
+instance IsElementCSSInlineStyle SVGDefsElement
+instance IsSVGTests SVGDefsElement
+instance IsSVGExternalResourcesRequired SVGDefsElement
+instance IsGObject SVGDefsElement where
+  typeGType _ = gTypeSVGDefsElement
+  {-# INLINE typeGType #-}
+noSVGDefsElement :: Maybe SVGDefsElement
+noSVGDefsElement = Nothing
+{-# INLINE noSVGDefsElement #-}
+
+foreign import javascript unsafe "window[\"SVGDefsElement\"]" gTypeSVGDefsElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGDescElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGDescElement Mozilla SVGDescElement documentation>
+newtype SVGDescElement = SVGDescElement { unSVGDescElement :: JSVal }
+
+instance Eq (SVGDescElement) where
+  (SVGDescElement a) == (SVGDescElement b) = js_eq a b
+
+instance PToJSVal SVGDescElement where
+  pToJSVal = unSVGDescElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGDescElement where
+  pFromJSVal = SVGDescElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGDescElement where
+  toJSVal = return . unSVGDescElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGDescElement where
+  fromJSVal = return . fmap SVGDescElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGDescElement
+instance IsElement SVGDescElement
+instance IsNode SVGDescElement
+instance IsEventTarget SVGDescElement
+instance IsSlotable SVGDescElement
+instance IsParentNode SVGDescElement
+instance IsNonDocumentTypeChildNode SVGDescElement
+instance IsDocumentAndElementEventHandlers SVGDescElement
+instance IsChildNode SVGDescElement
+instance IsAnimatable SVGDescElement
+instance IsGlobalEventHandlers SVGDescElement
+instance IsElementCSSInlineStyle SVGDescElement
+instance IsGObject SVGDescElement where
+  typeGType _ = gTypeSVGDescElement
+  {-# INLINE typeGType #-}
+noSVGDescElement :: Maybe SVGDescElement
+noSVGDescElement = Nothing
+{-# INLINE noSVGDescElement #-}
+
+foreign import javascript unsafe "window[\"SVGDescElement\"]" gTypeSVGDescElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGElement Mozilla SVGElement documentation>
+newtype SVGElement = SVGElement { unSVGElement :: JSVal }
+
+instance Eq (SVGElement) where
+  (SVGElement a) == (SVGElement b) = js_eq a b
+
+instance PToJSVal SVGElement where
+  pToJSVal = unSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGElement where
+  pFromJSVal = SVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGElement where
+  toJSVal = return . unSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGElement where
+  fromJSVal = return . fmap SVGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsGObject o) => IsSVGElement o
+toSVGElement :: IsSVGElement o => o -> SVGElement
+toSVGElement = SVGElement . coerce
+
+instance IsSVGElement SVGElement
+instance IsElement SVGElement
+instance IsNode SVGElement
+instance IsEventTarget SVGElement
+instance IsSlotable SVGElement
+instance IsParentNode SVGElement
+instance IsNonDocumentTypeChildNode SVGElement
+instance IsDocumentAndElementEventHandlers SVGElement
+instance IsChildNode SVGElement
+instance IsAnimatable SVGElement
+instance IsGlobalEventHandlers SVGElement
+instance IsElementCSSInlineStyle SVGElement
+instance IsGObject SVGElement where
+  typeGType _ = gTypeSVGElement
+  {-# INLINE typeGType #-}
+noSVGElement :: Maybe SVGElement
+noSVGElement = Nothing
+{-# INLINE noSVGElement #-}
+
+foreign import javascript unsafe "window[\"SVGElement\"]" gTypeSVGElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGEllipseElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGEllipseElement Mozilla SVGEllipseElement documentation>
+newtype SVGEllipseElement = SVGEllipseElement { unSVGEllipseElement :: JSVal }
+
+instance Eq (SVGEllipseElement) where
+  (SVGEllipseElement a) == (SVGEllipseElement b) = js_eq a b
+
+instance PToJSVal SVGEllipseElement where
+  pToJSVal = unSVGEllipseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGEllipseElement where
+  pFromJSVal = SVGEllipseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGEllipseElement where
+  toJSVal = return . unSVGEllipseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGEllipseElement where
+  fromJSVal = return . fmap SVGEllipseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGEllipseElement
+instance IsSVGElement SVGEllipseElement
+instance IsElement SVGEllipseElement
+instance IsNode SVGEllipseElement
+instance IsEventTarget SVGEllipseElement
+instance IsSlotable SVGEllipseElement
+instance IsParentNode SVGEllipseElement
+instance IsNonDocumentTypeChildNode SVGEllipseElement
+instance IsDocumentAndElementEventHandlers SVGEllipseElement
+instance IsChildNode SVGEllipseElement
+instance IsAnimatable SVGEllipseElement
+instance IsGlobalEventHandlers SVGEllipseElement
+instance IsElementCSSInlineStyle SVGEllipseElement
+instance IsSVGTests SVGEllipseElement
+instance IsSVGExternalResourcesRequired SVGEllipseElement
+instance IsGObject SVGEllipseElement where
+  typeGType _ = gTypeSVGEllipseElement
+  {-# INLINE typeGType #-}
+noSVGEllipseElement :: Maybe SVGEllipseElement
+noSVGEllipseElement = Nothing
+{-# INLINE noSVGEllipseElement #-}
+
+foreign import javascript unsafe "window[\"SVGEllipseElement\"]" gTypeSVGEllipseElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGException".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGException Mozilla SVGException documentation>
+newtype SVGException = SVGException { unSVGException :: JSVal }
+
+instance Eq (SVGException) where
+  (SVGException a) == (SVGException b) = js_eq a b
+
+instance PToJSVal SVGException where
+  pToJSVal = unSVGException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGException where
+  pFromJSVal = SVGException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGException where
+  toJSVal = return . unSVGException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGException where
+  fromJSVal = return . fmap SVGException . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGException where
+  typeGType _ = gTypeSVGException
+  {-# INLINE typeGType #-}
+noSVGException :: Maybe SVGException
+noSVGException = Nothing
+{-# INLINE noSVGException #-}
+
+foreign import javascript unsafe "window[\"SVGException\"]" gTypeSVGException :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGExternalResourcesRequired".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGExternalResourcesRequired Mozilla SVGExternalResourcesRequired documentation>
+newtype SVGExternalResourcesRequired = SVGExternalResourcesRequired { unSVGExternalResourcesRequired :: JSVal }
+
+instance Eq (SVGExternalResourcesRequired) where
+  (SVGExternalResourcesRequired a) == (SVGExternalResourcesRequired b) = js_eq a b
+
+instance PToJSVal SVGExternalResourcesRequired where
+  pToJSVal = unSVGExternalResourcesRequired
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGExternalResourcesRequired where
+  pFromJSVal = SVGExternalResourcesRequired
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGExternalResourcesRequired where
+  toJSVal = return . unSVGExternalResourcesRequired
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGExternalResourcesRequired where
+  fromJSVal = return . fmap SVGExternalResourcesRequired . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGExternalResourcesRequired o
+toSVGExternalResourcesRequired :: IsSVGExternalResourcesRequired o => o -> SVGExternalResourcesRequired
+toSVGExternalResourcesRequired = SVGExternalResourcesRequired . coerce
+
+instance IsSVGExternalResourcesRequired SVGExternalResourcesRequired
+instance IsGObject SVGExternalResourcesRequired where
+  typeGType _ = gTypeSVGExternalResourcesRequired
+  {-# INLINE typeGType #-}
+noSVGExternalResourcesRequired :: Maybe SVGExternalResourcesRequired
+noSVGExternalResourcesRequired = Nothing
+{-# INLINE noSVGExternalResourcesRequired #-}
+
+foreign import javascript unsafe "window[\"SVGExternalResourcesRequired\"]" gTypeSVGExternalResourcesRequired :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEBlendElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEBlendElement Mozilla SVGFEBlendElement documentation>
+newtype SVGFEBlendElement = SVGFEBlendElement { unSVGFEBlendElement :: JSVal }
+
+instance Eq (SVGFEBlendElement) where
+  (SVGFEBlendElement a) == (SVGFEBlendElement b) = js_eq a b
+
+instance PToJSVal SVGFEBlendElement where
+  pToJSVal = unSVGFEBlendElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEBlendElement where
+  pFromJSVal = SVGFEBlendElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEBlendElement where
+  toJSVal = return . unSVGFEBlendElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEBlendElement where
+  fromJSVal = return . fmap SVGFEBlendElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEBlendElement
+instance IsElement SVGFEBlendElement
+instance IsNode SVGFEBlendElement
+instance IsEventTarget SVGFEBlendElement
+instance IsSlotable SVGFEBlendElement
+instance IsParentNode SVGFEBlendElement
+instance IsNonDocumentTypeChildNode SVGFEBlendElement
+instance IsDocumentAndElementEventHandlers SVGFEBlendElement
+instance IsChildNode SVGFEBlendElement
+instance IsAnimatable SVGFEBlendElement
+instance IsGlobalEventHandlers SVGFEBlendElement
+instance IsElementCSSInlineStyle SVGFEBlendElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEBlendElement
+instance IsGObject SVGFEBlendElement where
+  typeGType _ = gTypeSVGFEBlendElement
+  {-# INLINE typeGType #-}
+noSVGFEBlendElement :: Maybe SVGFEBlendElement
+noSVGFEBlendElement = Nothing
+{-# INLINE noSVGFEBlendElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEBlendElement\"]" gTypeSVGFEBlendElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEColorMatrixElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEColorMatrixElement Mozilla SVGFEColorMatrixElement documentation>
+newtype SVGFEColorMatrixElement = SVGFEColorMatrixElement { unSVGFEColorMatrixElement :: JSVal }
+
+instance Eq (SVGFEColorMatrixElement) where
+  (SVGFEColorMatrixElement a) == (SVGFEColorMatrixElement b) = js_eq a b
+
+instance PToJSVal SVGFEColorMatrixElement where
+  pToJSVal = unSVGFEColorMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEColorMatrixElement where
+  pFromJSVal = SVGFEColorMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEColorMatrixElement where
+  toJSVal = return . unSVGFEColorMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEColorMatrixElement where
+  fromJSVal = return . fmap SVGFEColorMatrixElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEColorMatrixElement
+instance IsElement SVGFEColorMatrixElement
+instance IsNode SVGFEColorMatrixElement
+instance IsEventTarget SVGFEColorMatrixElement
+instance IsSlotable SVGFEColorMatrixElement
+instance IsParentNode SVGFEColorMatrixElement
+instance IsNonDocumentTypeChildNode SVGFEColorMatrixElement
+instance IsDocumentAndElementEventHandlers SVGFEColorMatrixElement
+instance IsChildNode SVGFEColorMatrixElement
+instance IsAnimatable SVGFEColorMatrixElement
+instance IsGlobalEventHandlers SVGFEColorMatrixElement
+instance IsElementCSSInlineStyle SVGFEColorMatrixElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEColorMatrixElement
+instance IsGObject SVGFEColorMatrixElement where
+  typeGType _ = gTypeSVGFEColorMatrixElement
+  {-# INLINE typeGType #-}
+noSVGFEColorMatrixElement :: Maybe SVGFEColorMatrixElement
+noSVGFEColorMatrixElement = Nothing
+{-# INLINE noSVGFEColorMatrixElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEColorMatrixElement\"]" gTypeSVGFEColorMatrixElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEComponentTransferElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEComponentTransferElement Mozilla SVGFEComponentTransferElement documentation>
+newtype SVGFEComponentTransferElement = SVGFEComponentTransferElement { unSVGFEComponentTransferElement :: JSVal }
+
+instance Eq (SVGFEComponentTransferElement) where
+  (SVGFEComponentTransferElement a) == (SVGFEComponentTransferElement b) = js_eq a b
+
+instance PToJSVal SVGFEComponentTransferElement where
+  pToJSVal = unSVGFEComponentTransferElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEComponentTransferElement where
+  pFromJSVal = SVGFEComponentTransferElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEComponentTransferElement where
+  toJSVal = return . unSVGFEComponentTransferElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEComponentTransferElement where
+  fromJSVal = return . fmap SVGFEComponentTransferElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEComponentTransferElement
+instance IsElement SVGFEComponentTransferElement
+instance IsNode SVGFEComponentTransferElement
+instance IsEventTarget SVGFEComponentTransferElement
+instance IsSlotable SVGFEComponentTransferElement
+instance IsParentNode SVGFEComponentTransferElement
+instance IsNonDocumentTypeChildNode SVGFEComponentTransferElement
+instance IsDocumentAndElementEventHandlers SVGFEComponentTransferElement
+instance IsChildNode SVGFEComponentTransferElement
+instance IsAnimatable SVGFEComponentTransferElement
+instance IsGlobalEventHandlers SVGFEComponentTransferElement
+instance IsElementCSSInlineStyle SVGFEComponentTransferElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEComponentTransferElement
+instance IsGObject SVGFEComponentTransferElement where
+  typeGType _ = gTypeSVGFEComponentTransferElement
+  {-# INLINE typeGType #-}
+noSVGFEComponentTransferElement :: Maybe SVGFEComponentTransferElement
+noSVGFEComponentTransferElement = Nothing
+{-# INLINE noSVGFEComponentTransferElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEComponentTransferElement\"]" gTypeSVGFEComponentTransferElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFECompositeElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFECompositeElement Mozilla SVGFECompositeElement documentation>
+newtype SVGFECompositeElement = SVGFECompositeElement { unSVGFECompositeElement :: JSVal }
+
+instance Eq (SVGFECompositeElement) where
+  (SVGFECompositeElement a) == (SVGFECompositeElement b) = js_eq a b
+
+instance PToJSVal SVGFECompositeElement where
+  pToJSVal = unSVGFECompositeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFECompositeElement where
+  pFromJSVal = SVGFECompositeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFECompositeElement where
+  toJSVal = return . unSVGFECompositeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFECompositeElement where
+  fromJSVal = return . fmap SVGFECompositeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFECompositeElement
+instance IsElement SVGFECompositeElement
+instance IsNode SVGFECompositeElement
+instance IsEventTarget SVGFECompositeElement
+instance IsSlotable SVGFECompositeElement
+instance IsParentNode SVGFECompositeElement
+instance IsNonDocumentTypeChildNode SVGFECompositeElement
+instance IsDocumentAndElementEventHandlers SVGFECompositeElement
+instance IsChildNode SVGFECompositeElement
+instance IsAnimatable SVGFECompositeElement
+instance IsGlobalEventHandlers SVGFECompositeElement
+instance IsElementCSSInlineStyle SVGFECompositeElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFECompositeElement
+instance IsGObject SVGFECompositeElement where
+  typeGType _ = gTypeSVGFECompositeElement
+  {-# INLINE typeGType #-}
+noSVGFECompositeElement :: Maybe SVGFECompositeElement
+noSVGFECompositeElement = Nothing
+{-# INLINE noSVGFECompositeElement #-}
+
+foreign import javascript unsafe "window[\"SVGFECompositeElement\"]" gTypeSVGFECompositeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEConvolveMatrixElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEConvolveMatrixElement Mozilla SVGFEConvolveMatrixElement documentation>
+newtype SVGFEConvolveMatrixElement = SVGFEConvolveMatrixElement { unSVGFEConvolveMatrixElement :: JSVal }
+
+instance Eq (SVGFEConvolveMatrixElement) where
+  (SVGFEConvolveMatrixElement a) == (SVGFEConvolveMatrixElement b) = js_eq a b
+
+instance PToJSVal SVGFEConvolveMatrixElement where
+  pToJSVal = unSVGFEConvolveMatrixElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEConvolveMatrixElement where
+  pFromJSVal = SVGFEConvolveMatrixElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEConvolveMatrixElement where
+  toJSVal = return . unSVGFEConvolveMatrixElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEConvolveMatrixElement where
+  fromJSVal = return . fmap SVGFEConvolveMatrixElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEConvolveMatrixElement
+instance IsElement SVGFEConvolveMatrixElement
+instance IsNode SVGFEConvolveMatrixElement
+instance IsEventTarget SVGFEConvolveMatrixElement
+instance IsSlotable SVGFEConvolveMatrixElement
+instance IsParentNode SVGFEConvolveMatrixElement
+instance IsNonDocumentTypeChildNode SVGFEConvolveMatrixElement
+instance IsDocumentAndElementEventHandlers SVGFEConvolveMatrixElement
+instance IsChildNode SVGFEConvolveMatrixElement
+instance IsAnimatable SVGFEConvolveMatrixElement
+instance IsGlobalEventHandlers SVGFEConvolveMatrixElement
+instance IsElementCSSInlineStyle SVGFEConvolveMatrixElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEConvolveMatrixElement
+instance IsGObject SVGFEConvolveMatrixElement where
+  typeGType _ = gTypeSVGFEConvolveMatrixElement
+  {-# INLINE typeGType #-}
+noSVGFEConvolveMatrixElement :: Maybe SVGFEConvolveMatrixElement
+noSVGFEConvolveMatrixElement = Nothing
+{-# INLINE noSVGFEConvolveMatrixElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEConvolveMatrixElement\"]" gTypeSVGFEConvolveMatrixElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEDiffuseLightingElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDiffuseLightingElement Mozilla SVGFEDiffuseLightingElement documentation>
+newtype SVGFEDiffuseLightingElement = SVGFEDiffuseLightingElement { unSVGFEDiffuseLightingElement :: JSVal }
+
+instance Eq (SVGFEDiffuseLightingElement) where
+  (SVGFEDiffuseLightingElement a) == (SVGFEDiffuseLightingElement b) = js_eq a b
+
+instance PToJSVal SVGFEDiffuseLightingElement where
+  pToJSVal = unSVGFEDiffuseLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDiffuseLightingElement where
+  pFromJSVal = SVGFEDiffuseLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDiffuseLightingElement where
+  toJSVal = return . unSVGFEDiffuseLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDiffuseLightingElement where
+  fromJSVal = return . fmap SVGFEDiffuseLightingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEDiffuseLightingElement
+instance IsElement SVGFEDiffuseLightingElement
+instance IsNode SVGFEDiffuseLightingElement
+instance IsEventTarget SVGFEDiffuseLightingElement
+instance IsSlotable SVGFEDiffuseLightingElement
+instance IsParentNode SVGFEDiffuseLightingElement
+instance IsNonDocumentTypeChildNode SVGFEDiffuseLightingElement
+instance IsDocumentAndElementEventHandlers SVGFEDiffuseLightingElement
+instance IsChildNode SVGFEDiffuseLightingElement
+instance IsAnimatable SVGFEDiffuseLightingElement
+instance IsGlobalEventHandlers SVGFEDiffuseLightingElement
+instance IsElementCSSInlineStyle SVGFEDiffuseLightingElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEDiffuseLightingElement
+instance IsGObject SVGFEDiffuseLightingElement where
+  typeGType _ = gTypeSVGFEDiffuseLightingElement
+  {-# INLINE typeGType #-}
+noSVGFEDiffuseLightingElement :: Maybe SVGFEDiffuseLightingElement
+noSVGFEDiffuseLightingElement = Nothing
+{-# INLINE noSVGFEDiffuseLightingElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEDiffuseLightingElement\"]" gTypeSVGFEDiffuseLightingElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEDisplacementMapElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDisplacementMapElement Mozilla SVGFEDisplacementMapElement documentation>
+newtype SVGFEDisplacementMapElement = SVGFEDisplacementMapElement { unSVGFEDisplacementMapElement :: JSVal }
+
+instance Eq (SVGFEDisplacementMapElement) where
+  (SVGFEDisplacementMapElement a) == (SVGFEDisplacementMapElement b) = js_eq a b
+
+instance PToJSVal SVGFEDisplacementMapElement where
+  pToJSVal = unSVGFEDisplacementMapElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDisplacementMapElement where
+  pFromJSVal = SVGFEDisplacementMapElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDisplacementMapElement where
+  toJSVal = return . unSVGFEDisplacementMapElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDisplacementMapElement where
+  fromJSVal = return . fmap SVGFEDisplacementMapElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEDisplacementMapElement
+instance IsElement SVGFEDisplacementMapElement
+instance IsNode SVGFEDisplacementMapElement
+instance IsEventTarget SVGFEDisplacementMapElement
+instance IsSlotable SVGFEDisplacementMapElement
+instance IsParentNode SVGFEDisplacementMapElement
+instance IsNonDocumentTypeChildNode SVGFEDisplacementMapElement
+instance IsDocumentAndElementEventHandlers SVGFEDisplacementMapElement
+instance IsChildNode SVGFEDisplacementMapElement
+instance IsAnimatable SVGFEDisplacementMapElement
+instance IsGlobalEventHandlers SVGFEDisplacementMapElement
+instance IsElementCSSInlineStyle SVGFEDisplacementMapElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEDisplacementMapElement
+instance IsGObject SVGFEDisplacementMapElement where
+  typeGType _ = gTypeSVGFEDisplacementMapElement
+  {-# INLINE typeGType #-}
+noSVGFEDisplacementMapElement :: Maybe SVGFEDisplacementMapElement
+noSVGFEDisplacementMapElement = Nothing
+{-# INLINE noSVGFEDisplacementMapElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEDisplacementMapElement\"]" gTypeSVGFEDisplacementMapElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEDistantLightElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDistantLightElement Mozilla SVGFEDistantLightElement documentation>
+newtype SVGFEDistantLightElement = SVGFEDistantLightElement { unSVGFEDistantLightElement :: JSVal }
+
+instance Eq (SVGFEDistantLightElement) where
+  (SVGFEDistantLightElement a) == (SVGFEDistantLightElement b) = js_eq a b
+
+instance PToJSVal SVGFEDistantLightElement where
+  pToJSVal = unSVGFEDistantLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDistantLightElement where
+  pFromJSVal = SVGFEDistantLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDistantLightElement where
+  toJSVal = return . unSVGFEDistantLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDistantLightElement where
+  fromJSVal = return . fmap SVGFEDistantLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEDistantLightElement
+instance IsElement SVGFEDistantLightElement
+instance IsNode SVGFEDistantLightElement
+instance IsEventTarget SVGFEDistantLightElement
+instance IsSlotable SVGFEDistantLightElement
+instance IsParentNode SVGFEDistantLightElement
+instance IsNonDocumentTypeChildNode SVGFEDistantLightElement
+instance IsDocumentAndElementEventHandlers SVGFEDistantLightElement
+instance IsChildNode SVGFEDistantLightElement
+instance IsAnimatable SVGFEDistantLightElement
+instance IsGlobalEventHandlers SVGFEDistantLightElement
+instance IsElementCSSInlineStyle SVGFEDistantLightElement
+instance IsGObject SVGFEDistantLightElement where
+  typeGType _ = gTypeSVGFEDistantLightElement
+  {-# INLINE typeGType #-}
+noSVGFEDistantLightElement :: Maybe SVGFEDistantLightElement
+noSVGFEDistantLightElement = Nothing
+{-# INLINE noSVGFEDistantLightElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEDistantLightElement\"]" gTypeSVGFEDistantLightElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEDropShadowElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEDropShadowElement Mozilla SVGFEDropShadowElement documentation>
+newtype SVGFEDropShadowElement = SVGFEDropShadowElement { unSVGFEDropShadowElement :: JSVal }
+
+instance Eq (SVGFEDropShadowElement) where
+  (SVGFEDropShadowElement a) == (SVGFEDropShadowElement b) = js_eq a b
+
+instance PToJSVal SVGFEDropShadowElement where
+  pToJSVal = unSVGFEDropShadowElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEDropShadowElement where
+  pFromJSVal = SVGFEDropShadowElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEDropShadowElement where
+  toJSVal = return . unSVGFEDropShadowElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEDropShadowElement where
+  fromJSVal = return . fmap SVGFEDropShadowElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEDropShadowElement
+instance IsElement SVGFEDropShadowElement
+instance IsNode SVGFEDropShadowElement
+instance IsEventTarget SVGFEDropShadowElement
+instance IsSlotable SVGFEDropShadowElement
+instance IsParentNode SVGFEDropShadowElement
+instance IsNonDocumentTypeChildNode SVGFEDropShadowElement
+instance IsDocumentAndElementEventHandlers SVGFEDropShadowElement
+instance IsChildNode SVGFEDropShadowElement
+instance IsAnimatable SVGFEDropShadowElement
+instance IsGlobalEventHandlers SVGFEDropShadowElement
+instance IsElementCSSInlineStyle SVGFEDropShadowElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEDropShadowElement
+instance IsGObject SVGFEDropShadowElement where
+  typeGType _ = gTypeSVGFEDropShadowElement
+  {-# INLINE typeGType #-}
+noSVGFEDropShadowElement :: Maybe SVGFEDropShadowElement
+noSVGFEDropShadowElement = Nothing
+{-# INLINE noSVGFEDropShadowElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEDropShadowElement\"]" gTypeSVGFEDropShadowElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEFloodElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFloodElement Mozilla SVGFEFloodElement documentation>
+newtype SVGFEFloodElement = SVGFEFloodElement { unSVGFEFloodElement :: JSVal }
+
+instance Eq (SVGFEFloodElement) where
+  (SVGFEFloodElement a) == (SVGFEFloodElement b) = js_eq a b
+
+instance PToJSVal SVGFEFloodElement where
+  pToJSVal = unSVGFEFloodElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFloodElement where
+  pFromJSVal = SVGFEFloodElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFloodElement where
+  toJSVal = return . unSVGFEFloodElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFloodElement where
+  fromJSVal = return . fmap SVGFEFloodElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEFloodElement
+instance IsElement SVGFEFloodElement
+instance IsNode SVGFEFloodElement
+instance IsEventTarget SVGFEFloodElement
+instance IsSlotable SVGFEFloodElement
+instance IsParentNode SVGFEFloodElement
+instance IsNonDocumentTypeChildNode SVGFEFloodElement
+instance IsDocumentAndElementEventHandlers SVGFEFloodElement
+instance IsChildNode SVGFEFloodElement
+instance IsAnimatable SVGFEFloodElement
+instance IsGlobalEventHandlers SVGFEFloodElement
+instance IsElementCSSInlineStyle SVGFEFloodElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEFloodElement
+instance IsGObject SVGFEFloodElement where
+  typeGType _ = gTypeSVGFEFloodElement
+  {-# INLINE typeGType #-}
+noSVGFEFloodElement :: Maybe SVGFEFloodElement
+noSVGFEFloodElement = Nothing
+{-# INLINE noSVGFEFloodElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEFloodElement\"]" gTypeSVGFEFloodElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEFuncAElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGComponentTransferFunctionElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncAElement Mozilla SVGFEFuncAElement documentation>
+newtype SVGFEFuncAElement = SVGFEFuncAElement { unSVGFEFuncAElement :: JSVal }
+
+instance Eq (SVGFEFuncAElement) where
+  (SVGFEFuncAElement a) == (SVGFEFuncAElement b) = js_eq a b
+
+instance PToJSVal SVGFEFuncAElement where
+  pToJSVal = unSVGFEFuncAElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncAElement where
+  pFromJSVal = SVGFEFuncAElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncAElement where
+  toJSVal = return . unSVGFEFuncAElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncAElement where
+  fromJSVal = return . fmap SVGFEFuncAElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncAElement
+instance IsSVGElement SVGFEFuncAElement
+instance IsElement SVGFEFuncAElement
+instance IsNode SVGFEFuncAElement
+instance IsEventTarget SVGFEFuncAElement
+instance IsSlotable SVGFEFuncAElement
+instance IsParentNode SVGFEFuncAElement
+instance IsNonDocumentTypeChildNode SVGFEFuncAElement
+instance IsDocumentAndElementEventHandlers SVGFEFuncAElement
+instance IsChildNode SVGFEFuncAElement
+instance IsAnimatable SVGFEFuncAElement
+instance IsGlobalEventHandlers SVGFEFuncAElement
+instance IsElementCSSInlineStyle SVGFEFuncAElement
+instance IsGObject SVGFEFuncAElement where
+  typeGType _ = gTypeSVGFEFuncAElement
+  {-# INLINE typeGType #-}
+noSVGFEFuncAElement :: Maybe SVGFEFuncAElement
+noSVGFEFuncAElement = Nothing
+{-# INLINE noSVGFEFuncAElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEFuncAElement\"]" gTypeSVGFEFuncAElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEFuncBElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGComponentTransferFunctionElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncBElement Mozilla SVGFEFuncBElement documentation>
+newtype SVGFEFuncBElement = SVGFEFuncBElement { unSVGFEFuncBElement :: JSVal }
+
+instance Eq (SVGFEFuncBElement) where
+  (SVGFEFuncBElement a) == (SVGFEFuncBElement b) = js_eq a b
+
+instance PToJSVal SVGFEFuncBElement where
+  pToJSVal = unSVGFEFuncBElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncBElement where
+  pFromJSVal = SVGFEFuncBElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncBElement where
+  toJSVal = return . unSVGFEFuncBElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncBElement where
+  fromJSVal = return . fmap SVGFEFuncBElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncBElement
+instance IsSVGElement SVGFEFuncBElement
+instance IsElement SVGFEFuncBElement
+instance IsNode SVGFEFuncBElement
+instance IsEventTarget SVGFEFuncBElement
+instance IsSlotable SVGFEFuncBElement
+instance IsParentNode SVGFEFuncBElement
+instance IsNonDocumentTypeChildNode SVGFEFuncBElement
+instance IsDocumentAndElementEventHandlers SVGFEFuncBElement
+instance IsChildNode SVGFEFuncBElement
+instance IsAnimatable SVGFEFuncBElement
+instance IsGlobalEventHandlers SVGFEFuncBElement
+instance IsElementCSSInlineStyle SVGFEFuncBElement
+instance IsGObject SVGFEFuncBElement where
+  typeGType _ = gTypeSVGFEFuncBElement
+  {-# INLINE typeGType #-}
+noSVGFEFuncBElement :: Maybe SVGFEFuncBElement
+noSVGFEFuncBElement = Nothing
+{-# INLINE noSVGFEFuncBElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEFuncBElement\"]" gTypeSVGFEFuncBElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEFuncGElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGComponentTransferFunctionElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncGElement Mozilla SVGFEFuncGElement documentation>
+newtype SVGFEFuncGElement = SVGFEFuncGElement { unSVGFEFuncGElement :: JSVal }
+
+instance Eq (SVGFEFuncGElement) where
+  (SVGFEFuncGElement a) == (SVGFEFuncGElement b) = js_eq a b
+
+instance PToJSVal SVGFEFuncGElement where
+  pToJSVal = unSVGFEFuncGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncGElement where
+  pFromJSVal = SVGFEFuncGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncGElement where
+  toJSVal = return . unSVGFEFuncGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncGElement where
+  fromJSVal = return . fmap SVGFEFuncGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncGElement
+instance IsSVGElement SVGFEFuncGElement
+instance IsElement SVGFEFuncGElement
+instance IsNode SVGFEFuncGElement
+instance IsEventTarget SVGFEFuncGElement
+instance IsSlotable SVGFEFuncGElement
+instance IsParentNode SVGFEFuncGElement
+instance IsNonDocumentTypeChildNode SVGFEFuncGElement
+instance IsDocumentAndElementEventHandlers SVGFEFuncGElement
+instance IsChildNode SVGFEFuncGElement
+instance IsAnimatable SVGFEFuncGElement
+instance IsGlobalEventHandlers SVGFEFuncGElement
+instance IsElementCSSInlineStyle SVGFEFuncGElement
+instance IsGObject SVGFEFuncGElement where
+  typeGType _ = gTypeSVGFEFuncGElement
+  {-# INLINE typeGType #-}
+noSVGFEFuncGElement :: Maybe SVGFEFuncGElement
+noSVGFEFuncGElement = Nothing
+{-# INLINE noSVGFEFuncGElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEFuncGElement\"]" gTypeSVGFEFuncGElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEFuncRElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGComponentTransferFunctionElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEFuncRElement Mozilla SVGFEFuncRElement documentation>
+newtype SVGFEFuncRElement = SVGFEFuncRElement { unSVGFEFuncRElement :: JSVal }
+
+instance Eq (SVGFEFuncRElement) where
+  (SVGFEFuncRElement a) == (SVGFEFuncRElement b) = js_eq a b
+
+instance PToJSVal SVGFEFuncRElement where
+  pToJSVal = unSVGFEFuncRElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEFuncRElement where
+  pFromJSVal = SVGFEFuncRElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEFuncRElement where
+  toJSVal = return . unSVGFEFuncRElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEFuncRElement where
+  fromJSVal = return . fmap SVGFEFuncRElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGComponentTransferFunctionElement SVGFEFuncRElement
+instance IsSVGElement SVGFEFuncRElement
+instance IsElement SVGFEFuncRElement
+instance IsNode SVGFEFuncRElement
+instance IsEventTarget SVGFEFuncRElement
+instance IsSlotable SVGFEFuncRElement
+instance IsParentNode SVGFEFuncRElement
+instance IsNonDocumentTypeChildNode SVGFEFuncRElement
+instance IsDocumentAndElementEventHandlers SVGFEFuncRElement
+instance IsChildNode SVGFEFuncRElement
+instance IsAnimatable SVGFEFuncRElement
+instance IsGlobalEventHandlers SVGFEFuncRElement
+instance IsElementCSSInlineStyle SVGFEFuncRElement
+instance IsGObject SVGFEFuncRElement where
+  typeGType _ = gTypeSVGFEFuncRElement
+  {-# INLINE typeGType #-}
+noSVGFEFuncRElement :: Maybe SVGFEFuncRElement
+noSVGFEFuncRElement = Nothing
+{-# INLINE noSVGFEFuncRElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEFuncRElement\"]" gTypeSVGFEFuncRElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEGaussianBlurElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEGaussianBlurElement Mozilla SVGFEGaussianBlurElement documentation>
+newtype SVGFEGaussianBlurElement = SVGFEGaussianBlurElement { unSVGFEGaussianBlurElement :: JSVal }
+
+instance Eq (SVGFEGaussianBlurElement) where
+  (SVGFEGaussianBlurElement a) == (SVGFEGaussianBlurElement b) = js_eq a b
+
+instance PToJSVal SVGFEGaussianBlurElement where
+  pToJSVal = unSVGFEGaussianBlurElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEGaussianBlurElement where
+  pFromJSVal = SVGFEGaussianBlurElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEGaussianBlurElement where
+  toJSVal = return . unSVGFEGaussianBlurElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEGaussianBlurElement where
+  fromJSVal = return . fmap SVGFEGaussianBlurElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEGaussianBlurElement
+instance IsElement SVGFEGaussianBlurElement
+instance IsNode SVGFEGaussianBlurElement
+instance IsEventTarget SVGFEGaussianBlurElement
+instance IsSlotable SVGFEGaussianBlurElement
+instance IsParentNode SVGFEGaussianBlurElement
+instance IsNonDocumentTypeChildNode SVGFEGaussianBlurElement
+instance IsDocumentAndElementEventHandlers SVGFEGaussianBlurElement
+instance IsChildNode SVGFEGaussianBlurElement
+instance IsAnimatable SVGFEGaussianBlurElement
+instance IsGlobalEventHandlers SVGFEGaussianBlurElement
+instance IsElementCSSInlineStyle SVGFEGaussianBlurElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEGaussianBlurElement
+instance IsGObject SVGFEGaussianBlurElement where
+  typeGType _ = gTypeSVGFEGaussianBlurElement
+  {-# INLINE typeGType #-}
+noSVGFEGaussianBlurElement :: Maybe SVGFEGaussianBlurElement
+noSVGFEGaussianBlurElement = Nothing
+{-# INLINE noSVGFEGaussianBlurElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEGaussianBlurElement\"]" gTypeSVGFEGaussianBlurElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEImageElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEImageElement Mozilla SVGFEImageElement documentation>
+newtype SVGFEImageElement = SVGFEImageElement { unSVGFEImageElement :: JSVal }
+
+instance Eq (SVGFEImageElement) where
+  (SVGFEImageElement a) == (SVGFEImageElement b) = js_eq a b
+
+instance PToJSVal SVGFEImageElement where
+  pToJSVal = unSVGFEImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEImageElement where
+  pFromJSVal = SVGFEImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEImageElement where
+  toJSVal = return . unSVGFEImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEImageElement where
+  fromJSVal = return . fmap SVGFEImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEImageElement
+instance IsElement SVGFEImageElement
+instance IsNode SVGFEImageElement
+instance IsEventTarget SVGFEImageElement
+instance IsSlotable SVGFEImageElement
+instance IsParentNode SVGFEImageElement
+instance IsNonDocumentTypeChildNode SVGFEImageElement
+instance IsDocumentAndElementEventHandlers SVGFEImageElement
+instance IsChildNode SVGFEImageElement
+instance IsAnimatable SVGFEImageElement
+instance IsGlobalEventHandlers SVGFEImageElement
+instance IsElementCSSInlineStyle SVGFEImageElement
+instance IsSVGURIReference SVGFEImageElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEImageElement
+instance IsSVGExternalResourcesRequired SVGFEImageElement
+instance IsGObject SVGFEImageElement where
+  typeGType _ = gTypeSVGFEImageElement
+  {-# INLINE typeGType #-}
+noSVGFEImageElement :: Maybe SVGFEImageElement
+noSVGFEImageElement = Nothing
+{-# INLINE noSVGFEImageElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEImageElement\"]" gTypeSVGFEImageElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEMergeElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeElement Mozilla SVGFEMergeElement documentation>
+newtype SVGFEMergeElement = SVGFEMergeElement { unSVGFEMergeElement :: JSVal }
+
+instance Eq (SVGFEMergeElement) where
+  (SVGFEMergeElement a) == (SVGFEMergeElement b) = js_eq a b
+
+instance PToJSVal SVGFEMergeElement where
+  pToJSVal = unSVGFEMergeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeElement where
+  pFromJSVal = SVGFEMergeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeElement where
+  toJSVal = return . unSVGFEMergeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeElement where
+  fromJSVal = return . fmap SVGFEMergeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEMergeElement
+instance IsElement SVGFEMergeElement
+instance IsNode SVGFEMergeElement
+instance IsEventTarget SVGFEMergeElement
+instance IsSlotable SVGFEMergeElement
+instance IsParentNode SVGFEMergeElement
+instance IsNonDocumentTypeChildNode SVGFEMergeElement
+instance IsDocumentAndElementEventHandlers SVGFEMergeElement
+instance IsChildNode SVGFEMergeElement
+instance IsAnimatable SVGFEMergeElement
+instance IsGlobalEventHandlers SVGFEMergeElement
+instance IsElementCSSInlineStyle SVGFEMergeElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEMergeElement
+instance IsGObject SVGFEMergeElement where
+  typeGType _ = gTypeSVGFEMergeElement
+  {-# INLINE typeGType #-}
+noSVGFEMergeElement :: Maybe SVGFEMergeElement
+noSVGFEMergeElement = Nothing
+{-# INLINE noSVGFEMergeElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEMergeElement\"]" gTypeSVGFEMergeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEMergeNodeElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMergeNodeElement Mozilla SVGFEMergeNodeElement documentation>
+newtype SVGFEMergeNodeElement = SVGFEMergeNodeElement { unSVGFEMergeNodeElement :: JSVal }
+
+instance Eq (SVGFEMergeNodeElement) where
+  (SVGFEMergeNodeElement a) == (SVGFEMergeNodeElement b) = js_eq a b
+
+instance PToJSVal SVGFEMergeNodeElement where
+  pToJSVal = unSVGFEMergeNodeElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMergeNodeElement where
+  pFromJSVal = SVGFEMergeNodeElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMergeNodeElement where
+  toJSVal = return . unSVGFEMergeNodeElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMergeNodeElement where
+  fromJSVal = return . fmap SVGFEMergeNodeElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEMergeNodeElement
+instance IsElement SVGFEMergeNodeElement
+instance IsNode SVGFEMergeNodeElement
+instance IsEventTarget SVGFEMergeNodeElement
+instance IsSlotable SVGFEMergeNodeElement
+instance IsParentNode SVGFEMergeNodeElement
+instance IsNonDocumentTypeChildNode SVGFEMergeNodeElement
+instance IsDocumentAndElementEventHandlers SVGFEMergeNodeElement
+instance IsChildNode SVGFEMergeNodeElement
+instance IsAnimatable SVGFEMergeNodeElement
+instance IsGlobalEventHandlers SVGFEMergeNodeElement
+instance IsElementCSSInlineStyle SVGFEMergeNodeElement
+instance IsGObject SVGFEMergeNodeElement where
+  typeGType _ = gTypeSVGFEMergeNodeElement
+  {-# INLINE typeGType #-}
+noSVGFEMergeNodeElement :: Maybe SVGFEMergeNodeElement
+noSVGFEMergeNodeElement = Nothing
+{-# INLINE noSVGFEMergeNodeElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEMergeNodeElement\"]" gTypeSVGFEMergeNodeElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEMorphologyElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEMorphologyElement Mozilla SVGFEMorphologyElement documentation>
+newtype SVGFEMorphologyElement = SVGFEMorphologyElement { unSVGFEMorphologyElement :: JSVal }
+
+instance Eq (SVGFEMorphologyElement) where
+  (SVGFEMorphologyElement a) == (SVGFEMorphologyElement b) = js_eq a b
+
+instance PToJSVal SVGFEMorphologyElement where
+  pToJSVal = unSVGFEMorphologyElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEMorphologyElement where
+  pFromJSVal = SVGFEMorphologyElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEMorphologyElement where
+  toJSVal = return . unSVGFEMorphologyElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEMorphologyElement where
+  fromJSVal = return . fmap SVGFEMorphologyElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEMorphologyElement
+instance IsElement SVGFEMorphologyElement
+instance IsNode SVGFEMorphologyElement
+instance IsEventTarget SVGFEMorphologyElement
+instance IsSlotable SVGFEMorphologyElement
+instance IsParentNode SVGFEMorphologyElement
+instance IsNonDocumentTypeChildNode SVGFEMorphologyElement
+instance IsDocumentAndElementEventHandlers SVGFEMorphologyElement
+instance IsChildNode SVGFEMorphologyElement
+instance IsAnimatable SVGFEMorphologyElement
+instance IsGlobalEventHandlers SVGFEMorphologyElement
+instance IsElementCSSInlineStyle SVGFEMorphologyElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEMorphologyElement
+instance IsGObject SVGFEMorphologyElement where
+  typeGType _ = gTypeSVGFEMorphologyElement
+  {-# INLINE typeGType #-}
+noSVGFEMorphologyElement :: Maybe SVGFEMorphologyElement
+noSVGFEMorphologyElement = Nothing
+{-# INLINE noSVGFEMorphologyElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEMorphologyElement\"]" gTypeSVGFEMorphologyElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEOffsetElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEOffsetElement Mozilla SVGFEOffsetElement documentation>
+newtype SVGFEOffsetElement = SVGFEOffsetElement { unSVGFEOffsetElement :: JSVal }
+
+instance Eq (SVGFEOffsetElement) where
+  (SVGFEOffsetElement a) == (SVGFEOffsetElement b) = js_eq a b
+
+instance PToJSVal SVGFEOffsetElement where
+  pToJSVal = unSVGFEOffsetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEOffsetElement where
+  pFromJSVal = SVGFEOffsetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEOffsetElement where
+  toJSVal = return . unSVGFEOffsetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEOffsetElement where
+  fromJSVal = return . fmap SVGFEOffsetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEOffsetElement
+instance IsElement SVGFEOffsetElement
+instance IsNode SVGFEOffsetElement
+instance IsEventTarget SVGFEOffsetElement
+instance IsSlotable SVGFEOffsetElement
+instance IsParentNode SVGFEOffsetElement
+instance IsNonDocumentTypeChildNode SVGFEOffsetElement
+instance IsDocumentAndElementEventHandlers SVGFEOffsetElement
+instance IsChildNode SVGFEOffsetElement
+instance IsAnimatable SVGFEOffsetElement
+instance IsGlobalEventHandlers SVGFEOffsetElement
+instance IsElementCSSInlineStyle SVGFEOffsetElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFEOffsetElement
+instance IsGObject SVGFEOffsetElement where
+  typeGType _ = gTypeSVGFEOffsetElement
+  {-# INLINE typeGType #-}
+noSVGFEOffsetElement :: Maybe SVGFEOffsetElement
+noSVGFEOffsetElement = Nothing
+{-# INLINE noSVGFEOffsetElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEOffsetElement\"]" gTypeSVGFEOffsetElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFEPointLightElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFEPointLightElement Mozilla SVGFEPointLightElement documentation>
+newtype SVGFEPointLightElement = SVGFEPointLightElement { unSVGFEPointLightElement :: JSVal }
+
+instance Eq (SVGFEPointLightElement) where
+  (SVGFEPointLightElement a) == (SVGFEPointLightElement b) = js_eq a b
+
+instance PToJSVal SVGFEPointLightElement where
+  pToJSVal = unSVGFEPointLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFEPointLightElement where
+  pFromJSVal = SVGFEPointLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFEPointLightElement where
+  toJSVal = return . unSVGFEPointLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFEPointLightElement where
+  fromJSVal = return . fmap SVGFEPointLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFEPointLightElement
+instance IsElement SVGFEPointLightElement
+instance IsNode SVGFEPointLightElement
+instance IsEventTarget SVGFEPointLightElement
+instance IsSlotable SVGFEPointLightElement
+instance IsParentNode SVGFEPointLightElement
+instance IsNonDocumentTypeChildNode SVGFEPointLightElement
+instance IsDocumentAndElementEventHandlers SVGFEPointLightElement
+instance IsChildNode SVGFEPointLightElement
+instance IsAnimatable SVGFEPointLightElement
+instance IsGlobalEventHandlers SVGFEPointLightElement
+instance IsElementCSSInlineStyle SVGFEPointLightElement
+instance IsGObject SVGFEPointLightElement where
+  typeGType _ = gTypeSVGFEPointLightElement
+  {-# INLINE typeGType #-}
+noSVGFEPointLightElement :: Maybe SVGFEPointLightElement
+noSVGFEPointLightElement = Nothing
+{-# INLINE noSVGFEPointLightElement #-}
+
+foreign import javascript unsafe "window[\"SVGFEPointLightElement\"]" gTypeSVGFEPointLightElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFESpecularLightingElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpecularLightingElement Mozilla SVGFESpecularLightingElement documentation>
+newtype SVGFESpecularLightingElement = SVGFESpecularLightingElement { unSVGFESpecularLightingElement :: JSVal }
+
+instance Eq (SVGFESpecularLightingElement) where
+  (SVGFESpecularLightingElement a) == (SVGFESpecularLightingElement b) = js_eq a b
+
+instance PToJSVal SVGFESpecularLightingElement where
+  pToJSVal = unSVGFESpecularLightingElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpecularLightingElement where
+  pFromJSVal = SVGFESpecularLightingElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpecularLightingElement where
+  toJSVal = return . unSVGFESpecularLightingElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpecularLightingElement where
+  fromJSVal = return . fmap SVGFESpecularLightingElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFESpecularLightingElement
+instance IsElement SVGFESpecularLightingElement
+instance IsNode SVGFESpecularLightingElement
+instance IsEventTarget SVGFESpecularLightingElement
+instance IsSlotable SVGFESpecularLightingElement
+instance IsParentNode SVGFESpecularLightingElement
+instance IsNonDocumentTypeChildNode SVGFESpecularLightingElement
+instance IsDocumentAndElementEventHandlers SVGFESpecularLightingElement
+instance IsChildNode SVGFESpecularLightingElement
+instance IsAnimatable SVGFESpecularLightingElement
+instance IsGlobalEventHandlers SVGFESpecularLightingElement
+instance IsElementCSSInlineStyle SVGFESpecularLightingElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFESpecularLightingElement
+instance IsGObject SVGFESpecularLightingElement where
+  typeGType _ = gTypeSVGFESpecularLightingElement
+  {-# INLINE typeGType #-}
+noSVGFESpecularLightingElement :: Maybe SVGFESpecularLightingElement
+noSVGFESpecularLightingElement = Nothing
+{-# INLINE noSVGFESpecularLightingElement #-}
+
+foreign import javascript unsafe "window[\"SVGFESpecularLightingElement\"]" gTypeSVGFESpecularLightingElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFESpotLightElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFESpotLightElement Mozilla SVGFESpotLightElement documentation>
+newtype SVGFESpotLightElement = SVGFESpotLightElement { unSVGFESpotLightElement :: JSVal }
+
+instance Eq (SVGFESpotLightElement) where
+  (SVGFESpotLightElement a) == (SVGFESpotLightElement b) = js_eq a b
+
+instance PToJSVal SVGFESpotLightElement where
+  pToJSVal = unSVGFESpotLightElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFESpotLightElement where
+  pFromJSVal = SVGFESpotLightElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFESpotLightElement where
+  toJSVal = return . unSVGFESpotLightElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFESpotLightElement where
+  fromJSVal = return . fmap SVGFESpotLightElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFESpotLightElement
+instance IsElement SVGFESpotLightElement
+instance IsNode SVGFESpotLightElement
+instance IsEventTarget SVGFESpotLightElement
+instance IsSlotable SVGFESpotLightElement
+instance IsParentNode SVGFESpotLightElement
+instance IsNonDocumentTypeChildNode SVGFESpotLightElement
+instance IsDocumentAndElementEventHandlers SVGFESpotLightElement
+instance IsChildNode SVGFESpotLightElement
+instance IsAnimatable SVGFESpotLightElement
+instance IsGlobalEventHandlers SVGFESpotLightElement
+instance IsElementCSSInlineStyle SVGFESpotLightElement
+instance IsGObject SVGFESpotLightElement where
+  typeGType _ = gTypeSVGFESpotLightElement
+  {-# INLINE typeGType #-}
+noSVGFESpotLightElement :: Maybe SVGFESpotLightElement
+noSVGFESpotLightElement = Nothing
+{-# INLINE noSVGFESpotLightElement #-}
+
+foreign import javascript unsafe "window[\"SVGFESpotLightElement\"]" gTypeSVGFESpotLightElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFETileElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETileElement Mozilla SVGFETileElement documentation>
+newtype SVGFETileElement = SVGFETileElement { unSVGFETileElement :: JSVal }
+
+instance Eq (SVGFETileElement) where
+  (SVGFETileElement a) == (SVGFETileElement b) = js_eq a b
+
+instance PToJSVal SVGFETileElement where
+  pToJSVal = unSVGFETileElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETileElement where
+  pFromJSVal = SVGFETileElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETileElement where
+  toJSVal = return . unSVGFETileElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETileElement where
+  fromJSVal = return . fmap SVGFETileElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFETileElement
+instance IsElement SVGFETileElement
+instance IsNode SVGFETileElement
+instance IsEventTarget SVGFETileElement
+instance IsSlotable SVGFETileElement
+instance IsParentNode SVGFETileElement
+instance IsNonDocumentTypeChildNode SVGFETileElement
+instance IsDocumentAndElementEventHandlers SVGFETileElement
+instance IsChildNode SVGFETileElement
+instance IsAnimatable SVGFETileElement
+instance IsGlobalEventHandlers SVGFETileElement
+instance IsElementCSSInlineStyle SVGFETileElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFETileElement
+instance IsGObject SVGFETileElement where
+  typeGType _ = gTypeSVGFETileElement
+  {-# INLINE typeGType #-}
+noSVGFETileElement :: Maybe SVGFETileElement
+noSVGFETileElement = Nothing
+{-# INLINE noSVGFETileElement #-}
+
+foreign import javascript unsafe "window[\"SVGFETileElement\"]" gTypeSVGFETileElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFETurbulenceElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFETurbulenceElement Mozilla SVGFETurbulenceElement documentation>
+newtype SVGFETurbulenceElement = SVGFETurbulenceElement { unSVGFETurbulenceElement :: JSVal }
+
+instance Eq (SVGFETurbulenceElement) where
+  (SVGFETurbulenceElement a) == (SVGFETurbulenceElement b) = js_eq a b
+
+instance PToJSVal SVGFETurbulenceElement where
+  pToJSVal = unSVGFETurbulenceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFETurbulenceElement where
+  pFromJSVal = SVGFETurbulenceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFETurbulenceElement where
+  toJSVal = return . unSVGFETurbulenceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFETurbulenceElement where
+  fromJSVal = return . fmap SVGFETurbulenceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFETurbulenceElement
+instance IsElement SVGFETurbulenceElement
+instance IsNode SVGFETurbulenceElement
+instance IsEventTarget SVGFETurbulenceElement
+instance IsSlotable SVGFETurbulenceElement
+instance IsParentNode SVGFETurbulenceElement
+instance IsNonDocumentTypeChildNode SVGFETurbulenceElement
+instance IsDocumentAndElementEventHandlers SVGFETurbulenceElement
+instance IsChildNode SVGFETurbulenceElement
+instance IsAnimatable SVGFETurbulenceElement
+instance IsGlobalEventHandlers SVGFETurbulenceElement
+instance IsElementCSSInlineStyle SVGFETurbulenceElement
+instance IsSVGFilterPrimitiveStandardAttributes SVGFETurbulenceElement
+instance IsGObject SVGFETurbulenceElement where
+  typeGType _ = gTypeSVGFETurbulenceElement
+  {-# INLINE typeGType #-}
+noSVGFETurbulenceElement :: Maybe SVGFETurbulenceElement
+noSVGFETurbulenceElement = Nothing
+{-# INLINE noSVGFETurbulenceElement #-}
+
+foreign import javascript unsafe "window[\"SVGFETurbulenceElement\"]" gTypeSVGFETurbulenceElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFilterElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterElement Mozilla SVGFilterElement documentation>
+newtype SVGFilterElement = SVGFilterElement { unSVGFilterElement :: JSVal }
+
+instance Eq (SVGFilterElement) where
+  (SVGFilterElement a) == (SVGFilterElement b) = js_eq a b
+
+instance PToJSVal SVGFilterElement where
+  pToJSVal = unSVGFilterElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterElement where
+  pFromJSVal = SVGFilterElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterElement where
+  toJSVal = return . unSVGFilterElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterElement where
+  fromJSVal = return . fmap SVGFilterElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFilterElement
+instance IsElement SVGFilterElement
+instance IsNode SVGFilterElement
+instance IsEventTarget SVGFilterElement
+instance IsSlotable SVGFilterElement
+instance IsParentNode SVGFilterElement
+instance IsNonDocumentTypeChildNode SVGFilterElement
+instance IsDocumentAndElementEventHandlers SVGFilterElement
+instance IsChildNode SVGFilterElement
+instance IsAnimatable SVGFilterElement
+instance IsGlobalEventHandlers SVGFilterElement
+instance IsElementCSSInlineStyle SVGFilterElement
+instance IsSVGURIReference SVGFilterElement
+instance IsSVGExternalResourcesRequired SVGFilterElement
+instance IsGObject SVGFilterElement where
+  typeGType _ = gTypeSVGFilterElement
+  {-# INLINE typeGType #-}
+noSVGFilterElement :: Maybe SVGFilterElement
+noSVGFilterElement = Nothing
+{-# INLINE noSVGFilterElement #-}
+
+foreign import javascript unsafe "window[\"SVGFilterElement\"]" gTypeSVGFilterElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFilterPrimitiveStandardAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFilterPrimitiveStandardAttributes Mozilla SVGFilterPrimitiveStandardAttributes documentation>
+newtype SVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes { unSVGFilterPrimitiveStandardAttributes :: JSVal }
+
+instance Eq (SVGFilterPrimitiveStandardAttributes) where
+  (SVGFilterPrimitiveStandardAttributes a) == (SVGFilterPrimitiveStandardAttributes b) = js_eq a b
+
+instance PToJSVal SVGFilterPrimitiveStandardAttributes where
+  pToJSVal = unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFilterPrimitiveStandardAttributes where
+  pFromJSVal = SVGFilterPrimitiveStandardAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFilterPrimitiveStandardAttributes where
+  toJSVal = return . unSVGFilterPrimitiveStandardAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFilterPrimitiveStandardAttributes where
+  fromJSVal = return . fmap SVGFilterPrimitiveStandardAttributes . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGFilterPrimitiveStandardAttributes o
+toSVGFilterPrimitiveStandardAttributes :: IsSVGFilterPrimitiveStandardAttributes o => o -> SVGFilterPrimitiveStandardAttributes
+toSVGFilterPrimitiveStandardAttributes = SVGFilterPrimitiveStandardAttributes . coerce
+
+instance IsSVGFilterPrimitiveStandardAttributes SVGFilterPrimitiveStandardAttributes
+instance IsGObject SVGFilterPrimitiveStandardAttributes where
+  typeGType _ = gTypeSVGFilterPrimitiveStandardAttributes
+  {-# INLINE typeGType #-}
+noSVGFilterPrimitiveStandardAttributes :: Maybe SVGFilterPrimitiveStandardAttributes
+noSVGFilterPrimitiveStandardAttributes = Nothing
+{-# INLINE noSVGFilterPrimitiveStandardAttributes #-}
+
+foreign import javascript unsafe "window[\"SVGFilterPrimitiveStandardAttributes\"]" gTypeSVGFilterPrimitiveStandardAttributes :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFitToViewBox".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFitToViewBox Mozilla SVGFitToViewBox documentation>
+newtype SVGFitToViewBox = SVGFitToViewBox { unSVGFitToViewBox :: JSVal }
+
+instance Eq (SVGFitToViewBox) where
+  (SVGFitToViewBox a) == (SVGFitToViewBox b) = js_eq a b
+
+instance PToJSVal SVGFitToViewBox where
+  pToJSVal = unSVGFitToViewBox
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFitToViewBox where
+  pFromJSVal = SVGFitToViewBox
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFitToViewBox where
+  toJSVal = return . unSVGFitToViewBox
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFitToViewBox where
+  fromJSVal = return . fmap SVGFitToViewBox . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGFitToViewBox o
+toSVGFitToViewBox :: IsSVGFitToViewBox o => o -> SVGFitToViewBox
+toSVGFitToViewBox = SVGFitToViewBox . coerce
+
+instance IsSVGFitToViewBox SVGFitToViewBox
+instance IsGObject SVGFitToViewBox where
+  typeGType _ = gTypeSVGFitToViewBox
+  {-# INLINE typeGType #-}
+noSVGFitToViewBox :: Maybe SVGFitToViewBox
+noSVGFitToViewBox = Nothing
+{-# INLINE noSVGFitToViewBox #-}
+
+foreign import javascript unsafe "window[\"SVGFitToViewBox\"]" gTypeSVGFitToViewBox :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontElement Mozilla SVGFontElement documentation>
+newtype SVGFontElement = SVGFontElement { unSVGFontElement :: JSVal }
+
+instance Eq (SVGFontElement) where
+  (SVGFontElement a) == (SVGFontElement b) = js_eq a b
+
+instance PToJSVal SVGFontElement where
+  pToJSVal = unSVGFontElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontElement where
+  pFromJSVal = SVGFontElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontElement where
+  toJSVal = return . unSVGFontElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontElement where
+  fromJSVal = return . fmap SVGFontElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontElement
+instance IsElement SVGFontElement
+instance IsNode SVGFontElement
+instance IsEventTarget SVGFontElement
+instance IsSlotable SVGFontElement
+instance IsParentNode SVGFontElement
+instance IsNonDocumentTypeChildNode SVGFontElement
+instance IsDocumentAndElementEventHandlers SVGFontElement
+instance IsChildNode SVGFontElement
+instance IsAnimatable SVGFontElement
+instance IsGlobalEventHandlers SVGFontElement
+instance IsElementCSSInlineStyle SVGFontElement
+instance IsGObject SVGFontElement where
+  typeGType _ = gTypeSVGFontElement
+  {-# INLINE typeGType #-}
+noSVGFontElement :: Maybe SVGFontElement
+noSVGFontElement = Nothing
+{-# INLINE noSVGFontElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontElement\"]" gTypeSVGFontElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontFaceElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceElement Mozilla SVGFontFaceElement documentation>
+newtype SVGFontFaceElement = SVGFontFaceElement { unSVGFontFaceElement :: JSVal }
+
+instance Eq (SVGFontFaceElement) where
+  (SVGFontFaceElement a) == (SVGFontFaceElement b) = js_eq a b
+
+instance PToJSVal SVGFontFaceElement where
+  pToJSVal = unSVGFontFaceElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceElement where
+  pFromJSVal = SVGFontFaceElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceElement where
+  toJSVal = return . unSVGFontFaceElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceElement where
+  fromJSVal = return . fmap SVGFontFaceElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontFaceElement
+instance IsElement SVGFontFaceElement
+instance IsNode SVGFontFaceElement
+instance IsEventTarget SVGFontFaceElement
+instance IsSlotable SVGFontFaceElement
+instance IsParentNode SVGFontFaceElement
+instance IsNonDocumentTypeChildNode SVGFontFaceElement
+instance IsDocumentAndElementEventHandlers SVGFontFaceElement
+instance IsChildNode SVGFontFaceElement
+instance IsAnimatable SVGFontFaceElement
+instance IsGlobalEventHandlers SVGFontFaceElement
+instance IsElementCSSInlineStyle SVGFontFaceElement
+instance IsGObject SVGFontFaceElement where
+  typeGType _ = gTypeSVGFontFaceElement
+  {-# INLINE typeGType #-}
+noSVGFontFaceElement :: Maybe SVGFontFaceElement
+noSVGFontFaceElement = Nothing
+{-# INLINE noSVGFontFaceElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontFaceElement\"]" gTypeSVGFontFaceElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontFaceFormatElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceFormatElement Mozilla SVGFontFaceFormatElement documentation>
+newtype SVGFontFaceFormatElement = SVGFontFaceFormatElement { unSVGFontFaceFormatElement :: JSVal }
+
+instance Eq (SVGFontFaceFormatElement) where
+  (SVGFontFaceFormatElement a) == (SVGFontFaceFormatElement b) = js_eq a b
+
+instance PToJSVal SVGFontFaceFormatElement where
+  pToJSVal = unSVGFontFaceFormatElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceFormatElement where
+  pFromJSVal = SVGFontFaceFormatElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceFormatElement where
+  toJSVal = return . unSVGFontFaceFormatElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceFormatElement where
+  fromJSVal = return . fmap SVGFontFaceFormatElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontFaceFormatElement
+instance IsElement SVGFontFaceFormatElement
+instance IsNode SVGFontFaceFormatElement
+instance IsEventTarget SVGFontFaceFormatElement
+instance IsSlotable SVGFontFaceFormatElement
+instance IsParentNode SVGFontFaceFormatElement
+instance IsNonDocumentTypeChildNode SVGFontFaceFormatElement
+instance IsDocumentAndElementEventHandlers SVGFontFaceFormatElement
+instance IsChildNode SVGFontFaceFormatElement
+instance IsAnimatable SVGFontFaceFormatElement
+instance IsGlobalEventHandlers SVGFontFaceFormatElement
+instance IsElementCSSInlineStyle SVGFontFaceFormatElement
+instance IsGObject SVGFontFaceFormatElement where
+  typeGType _ = gTypeSVGFontFaceFormatElement
+  {-# INLINE typeGType #-}
+noSVGFontFaceFormatElement :: Maybe SVGFontFaceFormatElement
+noSVGFontFaceFormatElement = Nothing
+{-# INLINE noSVGFontFaceFormatElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontFaceFormatElement\"]" gTypeSVGFontFaceFormatElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontFaceNameElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceNameElement Mozilla SVGFontFaceNameElement documentation>
+newtype SVGFontFaceNameElement = SVGFontFaceNameElement { unSVGFontFaceNameElement :: JSVal }
+
+instance Eq (SVGFontFaceNameElement) where
+  (SVGFontFaceNameElement a) == (SVGFontFaceNameElement b) = js_eq a b
+
+instance PToJSVal SVGFontFaceNameElement where
+  pToJSVal = unSVGFontFaceNameElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceNameElement where
+  pFromJSVal = SVGFontFaceNameElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceNameElement where
+  toJSVal = return . unSVGFontFaceNameElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceNameElement where
+  fromJSVal = return . fmap SVGFontFaceNameElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontFaceNameElement
+instance IsElement SVGFontFaceNameElement
+instance IsNode SVGFontFaceNameElement
+instance IsEventTarget SVGFontFaceNameElement
+instance IsSlotable SVGFontFaceNameElement
+instance IsParentNode SVGFontFaceNameElement
+instance IsNonDocumentTypeChildNode SVGFontFaceNameElement
+instance IsDocumentAndElementEventHandlers SVGFontFaceNameElement
+instance IsChildNode SVGFontFaceNameElement
+instance IsAnimatable SVGFontFaceNameElement
+instance IsGlobalEventHandlers SVGFontFaceNameElement
+instance IsElementCSSInlineStyle SVGFontFaceNameElement
+instance IsGObject SVGFontFaceNameElement where
+  typeGType _ = gTypeSVGFontFaceNameElement
+  {-# INLINE typeGType #-}
+noSVGFontFaceNameElement :: Maybe SVGFontFaceNameElement
+noSVGFontFaceNameElement = Nothing
+{-# INLINE noSVGFontFaceNameElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontFaceNameElement\"]" gTypeSVGFontFaceNameElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontFaceSrcElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceSrcElement Mozilla SVGFontFaceSrcElement documentation>
+newtype SVGFontFaceSrcElement = SVGFontFaceSrcElement { unSVGFontFaceSrcElement :: JSVal }
+
+instance Eq (SVGFontFaceSrcElement) where
+  (SVGFontFaceSrcElement a) == (SVGFontFaceSrcElement b) = js_eq a b
+
+instance PToJSVal SVGFontFaceSrcElement where
+  pToJSVal = unSVGFontFaceSrcElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceSrcElement where
+  pFromJSVal = SVGFontFaceSrcElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceSrcElement where
+  toJSVal = return . unSVGFontFaceSrcElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceSrcElement where
+  fromJSVal = return . fmap SVGFontFaceSrcElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontFaceSrcElement
+instance IsElement SVGFontFaceSrcElement
+instance IsNode SVGFontFaceSrcElement
+instance IsEventTarget SVGFontFaceSrcElement
+instance IsSlotable SVGFontFaceSrcElement
+instance IsParentNode SVGFontFaceSrcElement
+instance IsNonDocumentTypeChildNode SVGFontFaceSrcElement
+instance IsDocumentAndElementEventHandlers SVGFontFaceSrcElement
+instance IsChildNode SVGFontFaceSrcElement
+instance IsAnimatable SVGFontFaceSrcElement
+instance IsGlobalEventHandlers SVGFontFaceSrcElement
+instance IsElementCSSInlineStyle SVGFontFaceSrcElement
+instance IsGObject SVGFontFaceSrcElement where
+  typeGType _ = gTypeSVGFontFaceSrcElement
+  {-# INLINE typeGType #-}
+noSVGFontFaceSrcElement :: Maybe SVGFontFaceSrcElement
+noSVGFontFaceSrcElement = Nothing
+{-# INLINE noSVGFontFaceSrcElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontFaceSrcElement\"]" gTypeSVGFontFaceSrcElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGFontFaceUriElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGFontFaceUriElement Mozilla SVGFontFaceUriElement documentation>
+newtype SVGFontFaceUriElement = SVGFontFaceUriElement { unSVGFontFaceUriElement :: JSVal }
+
+instance Eq (SVGFontFaceUriElement) where
+  (SVGFontFaceUriElement a) == (SVGFontFaceUriElement b) = js_eq a b
+
+instance PToJSVal SVGFontFaceUriElement where
+  pToJSVal = unSVGFontFaceUriElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGFontFaceUriElement where
+  pFromJSVal = SVGFontFaceUriElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGFontFaceUriElement where
+  toJSVal = return . unSVGFontFaceUriElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGFontFaceUriElement where
+  fromJSVal = return . fmap SVGFontFaceUriElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGFontFaceUriElement
+instance IsElement SVGFontFaceUriElement
+instance IsNode SVGFontFaceUriElement
+instance IsEventTarget SVGFontFaceUriElement
+instance IsSlotable SVGFontFaceUriElement
+instance IsParentNode SVGFontFaceUriElement
+instance IsNonDocumentTypeChildNode SVGFontFaceUriElement
+instance IsDocumentAndElementEventHandlers SVGFontFaceUriElement
+instance IsChildNode SVGFontFaceUriElement
+instance IsAnimatable SVGFontFaceUriElement
+instance IsGlobalEventHandlers SVGFontFaceUriElement
+instance IsElementCSSInlineStyle SVGFontFaceUriElement
+instance IsGObject SVGFontFaceUriElement where
+  typeGType _ = gTypeSVGFontFaceUriElement
+  {-# INLINE typeGType #-}
+noSVGFontFaceUriElement :: Maybe SVGFontFaceUriElement
+noSVGFontFaceUriElement = Nothing
+{-# INLINE noSVGFontFaceUriElement #-}
+
+foreign import javascript unsafe "window[\"SVGFontFaceUriElement\"]" gTypeSVGFontFaceUriElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGForeignObjectElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGForeignObjectElement Mozilla SVGForeignObjectElement documentation>
+newtype SVGForeignObjectElement = SVGForeignObjectElement { unSVGForeignObjectElement :: JSVal }
+
+instance Eq (SVGForeignObjectElement) where
+  (SVGForeignObjectElement a) == (SVGForeignObjectElement b) = js_eq a b
+
+instance PToJSVal SVGForeignObjectElement where
+  pToJSVal = unSVGForeignObjectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGForeignObjectElement where
+  pFromJSVal = SVGForeignObjectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGForeignObjectElement where
+  toJSVal = return . unSVGForeignObjectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGForeignObjectElement where
+  fromJSVal = return . fmap SVGForeignObjectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGForeignObjectElement
+instance IsSVGElement SVGForeignObjectElement
+instance IsElement SVGForeignObjectElement
+instance IsNode SVGForeignObjectElement
+instance IsEventTarget SVGForeignObjectElement
+instance IsSlotable SVGForeignObjectElement
+instance IsParentNode SVGForeignObjectElement
+instance IsNonDocumentTypeChildNode SVGForeignObjectElement
+instance IsDocumentAndElementEventHandlers SVGForeignObjectElement
+instance IsChildNode SVGForeignObjectElement
+instance IsAnimatable SVGForeignObjectElement
+instance IsGlobalEventHandlers SVGForeignObjectElement
+instance IsElementCSSInlineStyle SVGForeignObjectElement
+instance IsSVGTests SVGForeignObjectElement
+instance IsSVGExternalResourcesRequired SVGForeignObjectElement
+instance IsGObject SVGForeignObjectElement where
+  typeGType _ = gTypeSVGForeignObjectElement
+  {-# INLINE typeGType #-}
+noSVGForeignObjectElement :: Maybe SVGForeignObjectElement
+noSVGForeignObjectElement = Nothing
+{-# INLINE noSVGForeignObjectElement #-}
+
+foreign import javascript unsafe "window[\"SVGForeignObjectElement\"]" gTypeSVGForeignObjectElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGGElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGElement Mozilla SVGGElement documentation>
+newtype SVGGElement = SVGGElement { unSVGGElement :: JSVal }
+
+instance Eq (SVGGElement) where
+  (SVGGElement a) == (SVGGElement b) = js_eq a b
+
+instance PToJSVal SVGGElement where
+  pToJSVal = unSVGGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGElement where
+  pFromJSVal = SVGGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGElement where
+  toJSVal = return . unSVGGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGElement where
+  fromJSVal = return . fmap SVGGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGGElement
+instance IsSVGElement SVGGElement
+instance IsElement SVGGElement
+instance IsNode SVGGElement
+instance IsEventTarget SVGGElement
+instance IsSlotable SVGGElement
+instance IsParentNode SVGGElement
+instance IsNonDocumentTypeChildNode SVGGElement
+instance IsDocumentAndElementEventHandlers SVGGElement
+instance IsChildNode SVGGElement
+instance IsAnimatable SVGGElement
+instance IsGlobalEventHandlers SVGGElement
+instance IsElementCSSInlineStyle SVGGElement
+instance IsSVGTests SVGGElement
+instance IsSVGExternalResourcesRequired SVGGElement
+instance IsGObject SVGGElement where
+  typeGType _ = gTypeSVGGElement
+  {-# INLINE typeGType #-}
+noSVGGElement :: Maybe SVGGElement
+noSVGGElement = Nothing
+{-# INLINE noSVGGElement #-}
+
+foreign import javascript unsafe "window[\"SVGGElement\"]" gTypeSVGGElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGGlyphElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphElement Mozilla SVGGlyphElement documentation>
+newtype SVGGlyphElement = SVGGlyphElement { unSVGGlyphElement :: JSVal }
+
+instance Eq (SVGGlyphElement) where
+  (SVGGlyphElement a) == (SVGGlyphElement b) = js_eq a b
+
+instance PToJSVal SVGGlyphElement where
+  pToJSVal = unSVGGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphElement where
+  pFromJSVal = SVGGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphElement where
+  toJSVal = return . unSVGGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphElement where
+  fromJSVal = return . fmap SVGGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGGlyphElement
+instance IsElement SVGGlyphElement
+instance IsNode SVGGlyphElement
+instance IsEventTarget SVGGlyphElement
+instance IsSlotable SVGGlyphElement
+instance IsParentNode SVGGlyphElement
+instance IsNonDocumentTypeChildNode SVGGlyphElement
+instance IsDocumentAndElementEventHandlers SVGGlyphElement
+instance IsChildNode SVGGlyphElement
+instance IsAnimatable SVGGlyphElement
+instance IsGlobalEventHandlers SVGGlyphElement
+instance IsElementCSSInlineStyle SVGGlyphElement
+instance IsGObject SVGGlyphElement where
+  typeGType _ = gTypeSVGGlyphElement
+  {-# INLINE typeGType #-}
+noSVGGlyphElement :: Maybe SVGGlyphElement
+noSVGGlyphElement = Nothing
+{-# INLINE noSVGGlyphElement #-}
+
+foreign import javascript unsafe "window[\"SVGGlyphElement\"]" gTypeSVGGlyphElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGGlyphRefElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGlyphRefElement Mozilla SVGGlyphRefElement documentation>
+newtype SVGGlyphRefElement = SVGGlyphRefElement { unSVGGlyphRefElement :: JSVal }
+
+instance Eq (SVGGlyphRefElement) where
+  (SVGGlyphRefElement a) == (SVGGlyphRefElement b) = js_eq a b
+
+instance PToJSVal SVGGlyphRefElement where
+  pToJSVal = unSVGGlyphRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGlyphRefElement where
+  pFromJSVal = SVGGlyphRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGlyphRefElement where
+  toJSVal = return . unSVGGlyphRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGlyphRefElement where
+  fromJSVal = return . fmap SVGGlyphRefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGGlyphRefElement
+instance IsElement SVGGlyphRefElement
+instance IsNode SVGGlyphRefElement
+instance IsEventTarget SVGGlyphRefElement
+instance IsSlotable SVGGlyphRefElement
+instance IsParentNode SVGGlyphRefElement
+instance IsNonDocumentTypeChildNode SVGGlyphRefElement
+instance IsDocumentAndElementEventHandlers SVGGlyphRefElement
+instance IsChildNode SVGGlyphRefElement
+instance IsAnimatable SVGGlyphRefElement
+instance IsGlobalEventHandlers SVGGlyphRefElement
+instance IsElementCSSInlineStyle SVGGlyphRefElement
+instance IsSVGURIReference SVGGlyphRefElement
+instance IsGObject SVGGlyphRefElement where
+  typeGType _ = gTypeSVGGlyphRefElement
+  {-# INLINE typeGType #-}
+noSVGGlyphRefElement :: Maybe SVGGlyphRefElement
+noSVGGlyphRefElement = Nothing
+{-# INLINE noSVGGlyphRefElement #-}
+
+foreign import javascript unsafe "window[\"SVGGlyphRefElement\"]" gTypeSVGGlyphRefElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGGradientElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGradientElement Mozilla SVGGradientElement documentation>
+newtype SVGGradientElement = SVGGradientElement { unSVGGradientElement :: JSVal }
+
+instance Eq (SVGGradientElement) where
+  (SVGGradientElement a) == (SVGGradientElement b) = js_eq a b
+
+instance PToJSVal SVGGradientElement where
+  pToJSVal = unSVGGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGradientElement where
+  pFromJSVal = SVGGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGradientElement where
+  toJSVal = return . unSVGGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGradientElement where
+  fromJSVal = return . fmap SVGGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGURIReference o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGGradientElement o
+toSVGGradientElement :: IsSVGGradientElement o => o -> SVGGradientElement
+toSVGGradientElement = SVGGradientElement . coerce
+
+instance IsSVGGradientElement SVGGradientElement
+instance IsSVGElement SVGGradientElement
+instance IsElement SVGGradientElement
+instance IsNode SVGGradientElement
+instance IsEventTarget SVGGradientElement
+instance IsSlotable SVGGradientElement
+instance IsParentNode SVGGradientElement
+instance IsNonDocumentTypeChildNode SVGGradientElement
+instance IsDocumentAndElementEventHandlers SVGGradientElement
+instance IsChildNode SVGGradientElement
+instance IsAnimatable SVGGradientElement
+instance IsGlobalEventHandlers SVGGradientElement
+instance IsElementCSSInlineStyle SVGGradientElement
+instance IsSVGURIReference SVGGradientElement
+instance IsSVGExternalResourcesRequired SVGGradientElement
+instance IsGObject SVGGradientElement where
+  typeGType _ = gTypeSVGGradientElement
+  {-# INLINE typeGType #-}
+noSVGGradientElement :: Maybe SVGGradientElement
+noSVGGradientElement = Nothing
+{-# INLINE noSVGGradientElement #-}
+
+foreign import javascript unsafe "window[\"SVGGradientElement\"]" gTypeSVGGradientElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGGraphicsElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGGraphicsElement Mozilla SVGGraphicsElement documentation>
+newtype SVGGraphicsElement = SVGGraphicsElement { unSVGGraphicsElement :: JSVal }
+
+instance Eq (SVGGraphicsElement) where
+  (SVGGraphicsElement a) == (SVGGraphicsElement b) = js_eq a b
+
+instance PToJSVal SVGGraphicsElement where
+  pToJSVal = unSVGGraphicsElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGGraphicsElement where
+  pFromJSVal = SVGGraphicsElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGGraphicsElement where
+  toJSVal = return . unSVGGraphicsElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGGraphicsElement where
+  fromJSVal = return . fmap SVGGraphicsElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsGObject o) => IsSVGGraphicsElement o
+toSVGGraphicsElement :: IsSVGGraphicsElement o => o -> SVGGraphicsElement
+toSVGGraphicsElement = SVGGraphicsElement . coerce
+
+instance IsSVGGraphicsElement SVGGraphicsElement
+instance IsSVGElement SVGGraphicsElement
+instance IsElement SVGGraphicsElement
+instance IsNode SVGGraphicsElement
+instance IsEventTarget SVGGraphicsElement
+instance IsSlotable SVGGraphicsElement
+instance IsParentNode SVGGraphicsElement
+instance IsNonDocumentTypeChildNode SVGGraphicsElement
+instance IsDocumentAndElementEventHandlers SVGGraphicsElement
+instance IsChildNode SVGGraphicsElement
+instance IsAnimatable SVGGraphicsElement
+instance IsGlobalEventHandlers SVGGraphicsElement
+instance IsElementCSSInlineStyle SVGGraphicsElement
+instance IsSVGTests SVGGraphicsElement
+instance IsGObject SVGGraphicsElement where
+  typeGType _ = gTypeSVGGraphicsElement
+  {-# INLINE typeGType #-}
+noSVGGraphicsElement :: Maybe SVGGraphicsElement
+noSVGGraphicsElement = Nothing
+{-# INLINE noSVGGraphicsElement #-}
+
+foreign import javascript unsafe "window[\"SVGGraphicsElement\"]" gTypeSVGGraphicsElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGHKernElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGHKernElement Mozilla SVGHKernElement documentation>
+newtype SVGHKernElement = SVGHKernElement { unSVGHKernElement :: JSVal }
+
+instance Eq (SVGHKernElement) where
+  (SVGHKernElement a) == (SVGHKernElement b) = js_eq a b
+
+instance PToJSVal SVGHKernElement where
+  pToJSVal = unSVGHKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGHKernElement where
+  pFromJSVal = SVGHKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGHKernElement where
+  toJSVal = return . unSVGHKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGHKernElement where
+  fromJSVal = return . fmap SVGHKernElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGHKernElement
+instance IsElement SVGHKernElement
+instance IsNode SVGHKernElement
+instance IsEventTarget SVGHKernElement
+instance IsSlotable SVGHKernElement
+instance IsParentNode SVGHKernElement
+instance IsNonDocumentTypeChildNode SVGHKernElement
+instance IsDocumentAndElementEventHandlers SVGHKernElement
+instance IsChildNode SVGHKernElement
+instance IsAnimatable SVGHKernElement
+instance IsGlobalEventHandlers SVGHKernElement
+instance IsElementCSSInlineStyle SVGHKernElement
+instance IsGObject SVGHKernElement where
+  typeGType _ = gTypeSVGHKernElement
+  {-# INLINE typeGType #-}
+noSVGHKernElement :: Maybe SVGHKernElement
+noSVGHKernElement = Nothing
+{-# INLINE noSVGHKernElement #-}
+
+foreign import javascript unsafe "window[\"SVGHKernElement\"]" gTypeSVGHKernElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGImageElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGImageElement Mozilla SVGImageElement documentation>
+newtype SVGImageElement = SVGImageElement { unSVGImageElement :: JSVal }
+
+instance Eq (SVGImageElement) where
+  (SVGImageElement a) == (SVGImageElement b) = js_eq a b
+
+instance PToJSVal SVGImageElement where
+  pToJSVal = unSVGImageElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGImageElement where
+  pFromJSVal = SVGImageElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGImageElement where
+  toJSVal = return . unSVGImageElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGImageElement where
+  fromJSVal = return . fmap SVGImageElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGImageElement
+instance IsSVGElement SVGImageElement
+instance IsElement SVGImageElement
+instance IsNode SVGImageElement
+instance IsEventTarget SVGImageElement
+instance IsSlotable SVGImageElement
+instance IsParentNode SVGImageElement
+instance IsNonDocumentTypeChildNode SVGImageElement
+instance IsDocumentAndElementEventHandlers SVGImageElement
+instance IsChildNode SVGImageElement
+instance IsAnimatable SVGImageElement
+instance IsGlobalEventHandlers SVGImageElement
+instance IsElementCSSInlineStyle SVGImageElement
+instance IsSVGTests SVGImageElement
+instance IsSVGURIReference SVGImageElement
+instance IsSVGExternalResourcesRequired SVGImageElement
+instance IsGObject SVGImageElement where
+  typeGType _ = gTypeSVGImageElement
+  {-# INLINE typeGType #-}
+noSVGImageElement :: Maybe SVGImageElement
+noSVGImageElement = Nothing
+{-# INLINE noSVGImageElement #-}
+
+foreign import javascript unsafe "window[\"SVGImageElement\"]" gTypeSVGImageElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGLength".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLength Mozilla SVGLength documentation>
+newtype SVGLength = SVGLength { unSVGLength :: JSVal }
+
+instance Eq (SVGLength) where
+  (SVGLength a) == (SVGLength b) = js_eq a b
+
+instance PToJSVal SVGLength where
+  pToJSVal = unSVGLength
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLength where
+  pFromJSVal = SVGLength
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLength where
+  toJSVal = return . unSVGLength
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLength where
+  fromJSVal = return . fmap SVGLength . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGLength where
+  typeGType _ = gTypeSVGLength
+  {-# INLINE typeGType #-}
+noSVGLength :: Maybe SVGLength
+noSVGLength = Nothing
+{-# INLINE noSVGLength #-}
+
+foreign import javascript unsafe "window[\"SVGLength\"]" gTypeSVGLength :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGLengthList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLengthList Mozilla SVGLengthList documentation>
+newtype SVGLengthList = SVGLengthList { unSVGLengthList :: JSVal }
+
+instance Eq (SVGLengthList) where
+  (SVGLengthList a) == (SVGLengthList b) = js_eq a b
+
+instance PToJSVal SVGLengthList where
+  pToJSVal = unSVGLengthList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLengthList where
+  pFromJSVal = SVGLengthList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLengthList where
+  toJSVal = return . unSVGLengthList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLengthList where
+  fromJSVal = return . fmap SVGLengthList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGLengthList where
+  typeGType _ = gTypeSVGLengthList
+  {-# INLINE typeGType #-}
+noSVGLengthList :: Maybe SVGLengthList
+noSVGLengthList = Nothing
+{-# INLINE noSVGLengthList #-}
+
+foreign import javascript unsafe "window[\"SVGLengthList\"]" gTypeSVGLengthList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGLineElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLineElement Mozilla SVGLineElement documentation>
+newtype SVGLineElement = SVGLineElement { unSVGLineElement :: JSVal }
+
+instance Eq (SVGLineElement) where
+  (SVGLineElement a) == (SVGLineElement b) = js_eq a b
+
+instance PToJSVal SVGLineElement where
+  pToJSVal = unSVGLineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLineElement where
+  pFromJSVal = SVGLineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLineElement where
+  toJSVal = return . unSVGLineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLineElement where
+  fromJSVal = return . fmap SVGLineElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGLineElement
+instance IsSVGElement SVGLineElement
+instance IsElement SVGLineElement
+instance IsNode SVGLineElement
+instance IsEventTarget SVGLineElement
+instance IsSlotable SVGLineElement
+instance IsParentNode SVGLineElement
+instance IsNonDocumentTypeChildNode SVGLineElement
+instance IsDocumentAndElementEventHandlers SVGLineElement
+instance IsChildNode SVGLineElement
+instance IsAnimatable SVGLineElement
+instance IsGlobalEventHandlers SVGLineElement
+instance IsElementCSSInlineStyle SVGLineElement
+instance IsSVGTests SVGLineElement
+instance IsSVGExternalResourcesRequired SVGLineElement
+instance IsGObject SVGLineElement where
+  typeGType _ = gTypeSVGLineElement
+  {-# INLINE typeGType #-}
+noSVGLineElement :: Maybe SVGLineElement
+noSVGLineElement = Nothing
+{-# INLINE noSVGLineElement #-}
+
+foreign import javascript unsafe "window[\"SVGLineElement\"]" gTypeSVGLineElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGLinearGradientElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGradientElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGLinearGradientElement Mozilla SVGLinearGradientElement documentation>
+newtype SVGLinearGradientElement = SVGLinearGradientElement { unSVGLinearGradientElement :: JSVal }
+
+instance Eq (SVGLinearGradientElement) where
+  (SVGLinearGradientElement a) == (SVGLinearGradientElement b) = js_eq a b
+
+instance PToJSVal SVGLinearGradientElement where
+  pToJSVal = unSVGLinearGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGLinearGradientElement where
+  pFromJSVal = SVGLinearGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGLinearGradientElement where
+  toJSVal = return . unSVGLinearGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGLinearGradientElement where
+  fromJSVal = return . fmap SVGLinearGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGradientElement SVGLinearGradientElement
+instance IsSVGElement SVGLinearGradientElement
+instance IsElement SVGLinearGradientElement
+instance IsNode SVGLinearGradientElement
+instance IsEventTarget SVGLinearGradientElement
+instance IsSlotable SVGLinearGradientElement
+instance IsParentNode SVGLinearGradientElement
+instance IsNonDocumentTypeChildNode SVGLinearGradientElement
+instance IsDocumentAndElementEventHandlers SVGLinearGradientElement
+instance IsChildNode SVGLinearGradientElement
+instance IsAnimatable SVGLinearGradientElement
+instance IsGlobalEventHandlers SVGLinearGradientElement
+instance IsElementCSSInlineStyle SVGLinearGradientElement
+instance IsSVGURIReference SVGLinearGradientElement
+instance IsSVGExternalResourcesRequired SVGLinearGradientElement
+instance IsGObject SVGLinearGradientElement where
+  typeGType _ = gTypeSVGLinearGradientElement
+  {-# INLINE typeGType #-}
+noSVGLinearGradientElement :: Maybe SVGLinearGradientElement
+noSVGLinearGradientElement = Nothing
+{-# INLINE noSVGLinearGradientElement #-}
+
+foreign import javascript unsafe "window[\"SVGLinearGradientElement\"]" gTypeSVGLinearGradientElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMPathElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMPathElement Mozilla SVGMPathElement documentation>
+newtype SVGMPathElement = SVGMPathElement { unSVGMPathElement :: JSVal }
+
+instance Eq (SVGMPathElement) where
+  (SVGMPathElement a) == (SVGMPathElement b) = js_eq a b
+
+instance PToJSVal SVGMPathElement where
+  pToJSVal = unSVGMPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMPathElement where
+  pFromJSVal = SVGMPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMPathElement where
+  toJSVal = return . unSVGMPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMPathElement where
+  fromJSVal = return . fmap SVGMPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGMPathElement
+instance IsElement SVGMPathElement
+instance IsNode SVGMPathElement
+instance IsEventTarget SVGMPathElement
+instance IsSlotable SVGMPathElement
+instance IsParentNode SVGMPathElement
+instance IsNonDocumentTypeChildNode SVGMPathElement
+instance IsDocumentAndElementEventHandlers SVGMPathElement
+instance IsChildNode SVGMPathElement
+instance IsAnimatable SVGMPathElement
+instance IsGlobalEventHandlers SVGMPathElement
+instance IsElementCSSInlineStyle SVGMPathElement
+instance IsSVGURIReference SVGMPathElement
+instance IsSVGExternalResourcesRequired SVGMPathElement
+instance IsGObject SVGMPathElement where
+  typeGType _ = gTypeSVGMPathElement
+  {-# INLINE typeGType #-}
+noSVGMPathElement :: Maybe SVGMPathElement
+noSVGMPathElement = Nothing
+{-# INLINE noSVGMPathElement #-}
+
+foreign import javascript unsafe "window[\"SVGMPathElement\"]" gTypeSVGMPathElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMarkerElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMarkerElement Mozilla SVGMarkerElement documentation>
+newtype SVGMarkerElement = SVGMarkerElement { unSVGMarkerElement :: JSVal }
+
+instance Eq (SVGMarkerElement) where
+  (SVGMarkerElement a) == (SVGMarkerElement b) = js_eq a b
+
+instance PToJSVal SVGMarkerElement where
+  pToJSVal = unSVGMarkerElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMarkerElement where
+  pFromJSVal = SVGMarkerElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMarkerElement where
+  toJSVal = return . unSVGMarkerElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMarkerElement where
+  fromJSVal = return . fmap SVGMarkerElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGMarkerElement
+instance IsElement SVGMarkerElement
+instance IsNode SVGMarkerElement
+instance IsEventTarget SVGMarkerElement
+instance IsSlotable SVGMarkerElement
+instance IsParentNode SVGMarkerElement
+instance IsNonDocumentTypeChildNode SVGMarkerElement
+instance IsDocumentAndElementEventHandlers SVGMarkerElement
+instance IsChildNode SVGMarkerElement
+instance IsAnimatable SVGMarkerElement
+instance IsGlobalEventHandlers SVGMarkerElement
+instance IsElementCSSInlineStyle SVGMarkerElement
+instance IsSVGFitToViewBox SVGMarkerElement
+instance IsSVGExternalResourcesRequired SVGMarkerElement
+instance IsGObject SVGMarkerElement where
+  typeGType _ = gTypeSVGMarkerElement
+  {-# INLINE typeGType #-}
+noSVGMarkerElement :: Maybe SVGMarkerElement
+noSVGMarkerElement = Nothing
+{-# INLINE noSVGMarkerElement #-}
+
+foreign import javascript unsafe "window[\"SVGMarkerElement\"]" gTypeSVGMarkerElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMaskElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMaskElement Mozilla SVGMaskElement documentation>
+newtype SVGMaskElement = SVGMaskElement { unSVGMaskElement :: JSVal }
+
+instance Eq (SVGMaskElement) where
+  (SVGMaskElement a) == (SVGMaskElement b) = js_eq a b
+
+instance PToJSVal SVGMaskElement where
+  pToJSVal = unSVGMaskElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMaskElement where
+  pFromJSVal = SVGMaskElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMaskElement where
+  toJSVal = return . unSVGMaskElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMaskElement where
+  fromJSVal = return . fmap SVGMaskElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGMaskElement
+instance IsElement SVGMaskElement
+instance IsNode SVGMaskElement
+instance IsEventTarget SVGMaskElement
+instance IsSlotable SVGMaskElement
+instance IsParentNode SVGMaskElement
+instance IsNonDocumentTypeChildNode SVGMaskElement
+instance IsDocumentAndElementEventHandlers SVGMaskElement
+instance IsChildNode SVGMaskElement
+instance IsAnimatable SVGMaskElement
+instance IsGlobalEventHandlers SVGMaskElement
+instance IsElementCSSInlineStyle SVGMaskElement
+instance IsSVGTests SVGMaskElement
+instance IsSVGExternalResourcesRequired SVGMaskElement
+instance IsGObject SVGMaskElement where
+  typeGType _ = gTypeSVGMaskElement
+  {-# INLINE typeGType #-}
+noSVGMaskElement :: Maybe SVGMaskElement
+noSVGMaskElement = Nothing
+{-# INLINE noSVGMaskElement #-}
+
+foreign import javascript unsafe "window[\"SVGMaskElement\"]" gTypeSVGMaskElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMatrix Mozilla SVGMatrix documentation>
+newtype SVGMatrix = SVGMatrix { unSVGMatrix :: JSVal }
+
+instance Eq (SVGMatrix) where
+  (SVGMatrix a) == (SVGMatrix b) = js_eq a b
+
+instance PToJSVal SVGMatrix where
+  pToJSVal = unSVGMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMatrix where
+  pFromJSVal = SVGMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMatrix where
+  toJSVal = return . unSVGMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMatrix where
+  fromJSVal = return . fmap SVGMatrix . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGMatrix where
+  typeGType _ = gTypeSVGMatrix
+  {-# INLINE typeGType #-}
+noSVGMatrix :: Maybe SVGMatrix
+noSVGMatrix = Nothing
+{-# INLINE noSVGMatrix #-}
+
+foreign import javascript unsafe "window[\"SVGMatrix\"]" gTypeSVGMatrix :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMetadataElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMetadataElement Mozilla SVGMetadataElement documentation>
+newtype SVGMetadataElement = SVGMetadataElement { unSVGMetadataElement :: JSVal }
+
+instance Eq (SVGMetadataElement) where
+  (SVGMetadataElement a) == (SVGMetadataElement b) = js_eq a b
+
+instance PToJSVal SVGMetadataElement where
+  pToJSVal = unSVGMetadataElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMetadataElement where
+  pFromJSVal = SVGMetadataElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMetadataElement where
+  toJSVal = return . unSVGMetadataElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMetadataElement where
+  fromJSVal = return . fmap SVGMetadataElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGMetadataElement
+instance IsElement SVGMetadataElement
+instance IsNode SVGMetadataElement
+instance IsEventTarget SVGMetadataElement
+instance IsSlotable SVGMetadataElement
+instance IsParentNode SVGMetadataElement
+instance IsNonDocumentTypeChildNode SVGMetadataElement
+instance IsDocumentAndElementEventHandlers SVGMetadataElement
+instance IsChildNode SVGMetadataElement
+instance IsAnimatable SVGMetadataElement
+instance IsGlobalEventHandlers SVGMetadataElement
+instance IsElementCSSInlineStyle SVGMetadataElement
+instance IsGObject SVGMetadataElement where
+  typeGType _ = gTypeSVGMetadataElement
+  {-# INLINE typeGType #-}
+noSVGMetadataElement :: Maybe SVGMetadataElement
+noSVGMetadataElement = Nothing
+{-# INLINE noSVGMetadataElement #-}
+
+foreign import javascript unsafe "window[\"SVGMetadataElement\"]" gTypeSVGMetadataElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGMissingGlyphElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGMissingGlyphElement Mozilla SVGMissingGlyphElement documentation>
+newtype SVGMissingGlyphElement = SVGMissingGlyphElement { unSVGMissingGlyphElement :: JSVal }
+
+instance Eq (SVGMissingGlyphElement) where
+  (SVGMissingGlyphElement a) == (SVGMissingGlyphElement b) = js_eq a b
+
+instance PToJSVal SVGMissingGlyphElement where
+  pToJSVal = unSVGMissingGlyphElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGMissingGlyphElement where
+  pFromJSVal = SVGMissingGlyphElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGMissingGlyphElement where
+  toJSVal = return . unSVGMissingGlyphElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGMissingGlyphElement where
+  fromJSVal = return . fmap SVGMissingGlyphElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGMissingGlyphElement
+instance IsElement SVGMissingGlyphElement
+instance IsNode SVGMissingGlyphElement
+instance IsEventTarget SVGMissingGlyphElement
+instance IsSlotable SVGMissingGlyphElement
+instance IsParentNode SVGMissingGlyphElement
+instance IsNonDocumentTypeChildNode SVGMissingGlyphElement
+instance IsDocumentAndElementEventHandlers SVGMissingGlyphElement
+instance IsChildNode SVGMissingGlyphElement
+instance IsAnimatable SVGMissingGlyphElement
+instance IsGlobalEventHandlers SVGMissingGlyphElement
+instance IsElementCSSInlineStyle SVGMissingGlyphElement
+instance IsGObject SVGMissingGlyphElement where
+  typeGType _ = gTypeSVGMissingGlyphElement
+  {-# INLINE typeGType #-}
+noSVGMissingGlyphElement :: Maybe SVGMissingGlyphElement
+noSVGMissingGlyphElement = Nothing
+{-# INLINE noSVGMissingGlyphElement #-}
+
+foreign import javascript unsafe "window[\"SVGMissingGlyphElement\"]" gTypeSVGMissingGlyphElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGNumber".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumber Mozilla SVGNumber documentation>
+newtype SVGNumber = SVGNumber { unSVGNumber :: JSVal }
+
+instance Eq (SVGNumber) where
+  (SVGNumber a) == (SVGNumber b) = js_eq a b
+
+instance PToJSVal SVGNumber where
+  pToJSVal = unSVGNumber
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumber where
+  pFromJSVal = SVGNumber
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumber where
+  toJSVal = return . unSVGNumber
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumber where
+  fromJSVal = return . fmap SVGNumber . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGNumber where
+  typeGType _ = gTypeSVGNumber
+  {-# INLINE typeGType #-}
+noSVGNumber :: Maybe SVGNumber
+noSVGNumber = Nothing
+{-# INLINE noSVGNumber #-}
+
+foreign import javascript unsafe "window[\"SVGNumber\"]" gTypeSVGNumber :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGNumberList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGNumberList Mozilla SVGNumberList documentation>
+newtype SVGNumberList = SVGNumberList { unSVGNumberList :: JSVal }
+
+instance Eq (SVGNumberList) where
+  (SVGNumberList a) == (SVGNumberList b) = js_eq a b
+
+instance PToJSVal SVGNumberList where
+  pToJSVal = unSVGNumberList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGNumberList where
+  pFromJSVal = SVGNumberList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGNumberList where
+  toJSVal = return . unSVGNumberList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGNumberList where
+  fromJSVal = return . fmap SVGNumberList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGNumberList where
+  typeGType _ = gTypeSVGNumberList
+  {-# INLINE typeGType #-}
+noSVGNumberList :: Maybe SVGNumberList
+noSVGNumberList = Nothing
+{-# INLINE noSVGNumberList #-}
+
+foreign import javascript unsafe "window[\"SVGNumberList\"]" gTypeSVGNumberList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathElement Mozilla SVGPathElement documentation>
+newtype SVGPathElement = SVGPathElement { unSVGPathElement :: JSVal }
+
+instance Eq (SVGPathElement) where
+  (SVGPathElement a) == (SVGPathElement b) = js_eq a b
+
+instance PToJSVal SVGPathElement where
+  pToJSVal = unSVGPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathElement where
+  pFromJSVal = SVGPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathElement where
+  toJSVal = return . unSVGPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathElement where
+  fromJSVal = return . fmap SVGPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGPathElement
+instance IsSVGElement SVGPathElement
+instance IsElement SVGPathElement
+instance IsNode SVGPathElement
+instance IsEventTarget SVGPathElement
+instance IsSlotable SVGPathElement
+instance IsParentNode SVGPathElement
+instance IsNonDocumentTypeChildNode SVGPathElement
+instance IsDocumentAndElementEventHandlers SVGPathElement
+instance IsChildNode SVGPathElement
+instance IsAnimatable SVGPathElement
+instance IsGlobalEventHandlers SVGPathElement
+instance IsElementCSSInlineStyle SVGPathElement
+instance IsSVGTests SVGPathElement
+instance IsSVGExternalResourcesRequired SVGPathElement
+instance IsGObject SVGPathElement where
+  typeGType _ = gTypeSVGPathElement
+  {-# INLINE typeGType #-}
+noSVGPathElement :: Maybe SVGPathElement
+noSVGPathElement = Nothing
+{-# INLINE noSVGPathElement #-}
+
+foreign import javascript unsafe "window[\"SVGPathElement\"]" gTypeSVGPathElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSeg".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSeg Mozilla SVGPathSeg documentation>
+newtype SVGPathSeg = SVGPathSeg { unSVGPathSeg :: JSVal }
+
+instance Eq (SVGPathSeg) where
+  (SVGPathSeg a) == (SVGPathSeg b) = js_eq a b
+
+instance PToJSVal SVGPathSeg where
+  pToJSVal = unSVGPathSeg
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSeg where
+  pFromJSVal = SVGPathSeg
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSeg where
+  toJSVal = return . unSVGPathSeg
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSeg where
+  fromJSVal = return . fmap SVGPathSeg . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGPathSeg o
+toSVGPathSeg :: IsSVGPathSeg o => o -> SVGPathSeg
+toSVGPathSeg = SVGPathSeg . coerce
+
+instance IsSVGPathSeg SVGPathSeg
+instance IsGObject SVGPathSeg where
+  typeGType _ = gTypeSVGPathSeg
+  {-# INLINE typeGType #-}
+noSVGPathSeg :: Maybe SVGPathSeg
+noSVGPathSeg = Nothing
+{-# INLINE noSVGPathSeg #-}
+
+foreign import javascript unsafe "window[\"SVGPathSeg\"]" gTypeSVGPathSeg :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegArcAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcAbs Mozilla SVGPathSegArcAbs documentation>
+newtype SVGPathSegArcAbs = SVGPathSegArcAbs { unSVGPathSegArcAbs :: JSVal }
+
+instance Eq (SVGPathSegArcAbs) where
+  (SVGPathSegArcAbs a) == (SVGPathSegArcAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegArcAbs where
+  pToJSVal = unSVGPathSegArcAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcAbs where
+  pFromJSVal = SVGPathSegArcAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcAbs where
+  toJSVal = return . unSVGPathSegArcAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcAbs where
+  fromJSVal = return . fmap SVGPathSegArcAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegArcAbs
+instance IsGObject SVGPathSegArcAbs where
+  typeGType _ = gTypeSVGPathSegArcAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegArcAbs :: Maybe SVGPathSegArcAbs
+noSVGPathSegArcAbs = Nothing
+{-# INLINE noSVGPathSegArcAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegArcAbs\"]" gTypeSVGPathSegArcAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegArcRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegArcRel Mozilla SVGPathSegArcRel documentation>
+newtype SVGPathSegArcRel = SVGPathSegArcRel { unSVGPathSegArcRel :: JSVal }
+
+instance Eq (SVGPathSegArcRel) where
+  (SVGPathSegArcRel a) == (SVGPathSegArcRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegArcRel where
+  pToJSVal = unSVGPathSegArcRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegArcRel where
+  pFromJSVal = SVGPathSegArcRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegArcRel where
+  toJSVal = return . unSVGPathSegArcRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegArcRel where
+  fromJSVal = return . fmap SVGPathSegArcRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegArcRel
+instance IsGObject SVGPathSegArcRel where
+  typeGType _ = gTypeSVGPathSegArcRel
+  {-# INLINE typeGType #-}
+noSVGPathSegArcRel :: Maybe SVGPathSegArcRel
+noSVGPathSegArcRel = Nothing
+{-# INLINE noSVGPathSegArcRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegArcRel\"]" gTypeSVGPathSegArcRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegClosePath".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegClosePath Mozilla SVGPathSegClosePath documentation>
+newtype SVGPathSegClosePath = SVGPathSegClosePath { unSVGPathSegClosePath :: JSVal }
+
+instance Eq (SVGPathSegClosePath) where
+  (SVGPathSegClosePath a) == (SVGPathSegClosePath b) = js_eq a b
+
+instance PToJSVal SVGPathSegClosePath where
+  pToJSVal = unSVGPathSegClosePath
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegClosePath where
+  pFromJSVal = SVGPathSegClosePath
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegClosePath where
+  toJSVal = return . unSVGPathSegClosePath
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegClosePath where
+  fromJSVal = return . fmap SVGPathSegClosePath . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegClosePath
+instance IsGObject SVGPathSegClosePath where
+  typeGType _ = gTypeSVGPathSegClosePath
+  {-# INLINE typeGType #-}
+noSVGPathSegClosePath :: Maybe SVGPathSegClosePath
+noSVGPathSegClosePath = Nothing
+{-# INLINE noSVGPathSegClosePath #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegClosePath\"]" gTypeSVGPathSegClosePath :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoCubicAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicAbs Mozilla SVGPathSegCurvetoCubicAbs documentation>
+newtype SVGPathSegCurvetoCubicAbs = SVGPathSegCurvetoCubicAbs { unSVGPathSegCurvetoCubicAbs :: JSVal }
+
+instance Eq (SVGPathSegCurvetoCubicAbs) where
+  (SVGPathSegCurvetoCubicAbs a) == (SVGPathSegCurvetoCubicAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoCubicAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicAbs where
+  fromJSVal = return . fmap SVGPathSegCurvetoCubicAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicAbs
+instance IsGObject SVGPathSegCurvetoCubicAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoCubicAbs :: Maybe SVGPathSegCurvetoCubicAbs
+noSVGPathSegCurvetoCubicAbs = Nothing
+{-# INLINE noSVGPathSegCurvetoCubicAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicAbs\"]" gTypeSVGPathSegCurvetoCubicAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoCubicRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicRel Mozilla SVGPathSegCurvetoCubicRel documentation>
+newtype SVGPathSegCurvetoCubicRel = SVGPathSegCurvetoCubicRel { unSVGPathSegCurvetoCubicRel :: JSVal }
+
+instance Eq (SVGPathSegCurvetoCubicRel) where
+  (SVGPathSegCurvetoCubicRel a) == (SVGPathSegCurvetoCubicRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoCubicRel where
+  pToJSVal = unSVGPathSegCurvetoCubicRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicRel where
+  pFromJSVal = SVGPathSegCurvetoCubicRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicRel where
+  fromJSVal = return . fmap SVGPathSegCurvetoCubicRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicRel
+instance IsGObject SVGPathSegCurvetoCubicRel where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicRel
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoCubicRel :: Maybe SVGPathSegCurvetoCubicRel
+noSVGPathSegCurvetoCubicRel = Nothing
+{-# INLINE noSVGPathSegCurvetoCubicRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicRel\"]" gTypeSVGPathSegCurvetoCubicRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoCubicSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothAbs Mozilla SVGPathSegCurvetoCubicSmoothAbs documentation>
+newtype SVGPathSegCurvetoCubicSmoothAbs = SVGPathSegCurvetoCubicSmoothAbs { unSVGPathSegCurvetoCubicSmoothAbs :: JSVal }
+
+instance Eq (SVGPathSegCurvetoCubicSmoothAbs) where
+  (SVGPathSegCurvetoCubicSmoothAbs a) == (SVGPathSegCurvetoCubicSmoothAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothAbs where
+  fromJSVal = return . fmap SVGPathSegCurvetoCubicSmoothAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothAbs
+instance IsGObject SVGPathSegCurvetoCubicSmoothAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicSmoothAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoCubicSmoothAbs :: Maybe SVGPathSegCurvetoCubicSmoothAbs
+noSVGPathSegCurvetoCubicSmoothAbs = Nothing
+{-# INLINE noSVGPathSegCurvetoCubicSmoothAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicSmoothAbs\"]" gTypeSVGPathSegCurvetoCubicSmoothAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoCubicSmoothRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoCubicSmoothRel Mozilla SVGPathSegCurvetoCubicSmoothRel documentation>
+newtype SVGPathSegCurvetoCubicSmoothRel = SVGPathSegCurvetoCubicSmoothRel { unSVGPathSegCurvetoCubicSmoothRel :: JSVal }
+
+instance Eq (SVGPathSegCurvetoCubicSmoothRel) where
+  (SVGPathSegCurvetoCubicSmoothRel a) == (SVGPathSegCurvetoCubicSmoothRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoCubicSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoCubicSmoothRel where
+  fromJSVal = return . fmap SVGPathSegCurvetoCubicSmoothRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoCubicSmoothRel
+instance IsGObject SVGPathSegCurvetoCubicSmoothRel where
+  typeGType _ = gTypeSVGPathSegCurvetoCubicSmoothRel
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoCubicSmoothRel :: Maybe SVGPathSegCurvetoCubicSmoothRel
+noSVGPathSegCurvetoCubicSmoothRel = Nothing
+{-# INLINE noSVGPathSegCurvetoCubicSmoothRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoCubicSmoothRel\"]" gTypeSVGPathSegCurvetoCubicSmoothRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoQuadraticAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticAbs Mozilla SVGPathSegCurvetoQuadraticAbs documentation>
+newtype SVGPathSegCurvetoQuadraticAbs = SVGPathSegCurvetoQuadraticAbs { unSVGPathSegCurvetoQuadraticAbs :: JSVal }
+
+instance Eq (SVGPathSegCurvetoQuadraticAbs) where
+  (SVGPathSegCurvetoQuadraticAbs a) == (SVGPathSegCurvetoQuadraticAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoQuadraticAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticAbs where
+  fromJSVal = return . fmap SVGPathSegCurvetoQuadraticAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticAbs
+instance IsGObject SVGPathSegCurvetoQuadraticAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoQuadraticAbs :: Maybe SVGPathSegCurvetoQuadraticAbs
+noSVGPathSegCurvetoQuadraticAbs = Nothing
+{-# INLINE noSVGPathSegCurvetoQuadraticAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticAbs\"]" gTypeSVGPathSegCurvetoQuadraticAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoQuadraticRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticRel Mozilla SVGPathSegCurvetoQuadraticRel documentation>
+newtype SVGPathSegCurvetoQuadraticRel = SVGPathSegCurvetoQuadraticRel { unSVGPathSegCurvetoQuadraticRel :: JSVal }
+
+instance Eq (SVGPathSegCurvetoQuadraticRel) where
+  (SVGPathSegCurvetoQuadraticRel a) == (SVGPathSegCurvetoQuadraticRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoQuadraticRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticRel where
+  fromJSVal = return . fmap SVGPathSegCurvetoQuadraticRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticRel
+instance IsGObject SVGPathSegCurvetoQuadraticRel where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticRel
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoQuadraticRel :: Maybe SVGPathSegCurvetoQuadraticRel
+noSVGPathSegCurvetoQuadraticRel = Nothing
+{-# INLINE noSVGPathSegCurvetoQuadraticRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticRel\"]" gTypeSVGPathSegCurvetoQuadraticRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothAbs Mozilla SVGPathSegCurvetoQuadraticSmoothAbs documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothAbs = SVGPathSegCurvetoQuadraticSmoothAbs { unSVGPathSegCurvetoQuadraticSmoothAbs :: JSVal }
+
+instance Eq (SVGPathSegCurvetoQuadraticSmoothAbs) where
+  (SVGPathSegCurvetoQuadraticSmoothAbs a) == (SVGPathSegCurvetoQuadraticSmoothAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothAbs where
+  fromJSVal = return . fmap SVGPathSegCurvetoQuadraticSmoothAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothAbs
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothAbs where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticSmoothAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoQuadraticSmoothAbs :: Maybe SVGPathSegCurvetoQuadraticSmoothAbs
+noSVGPathSegCurvetoQuadraticSmoothAbs = Nothing
+{-# INLINE noSVGPathSegCurvetoQuadraticSmoothAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticSmoothAbs\"]" gTypeSVGPathSegCurvetoQuadraticSmoothAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegCurvetoQuadraticSmoothRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegCurvetoQuadraticSmoothRel Mozilla SVGPathSegCurvetoQuadraticSmoothRel documentation>
+newtype SVGPathSegCurvetoQuadraticSmoothRel = SVGPathSegCurvetoQuadraticSmoothRel { unSVGPathSegCurvetoQuadraticSmoothRel :: JSVal }
+
+instance Eq (SVGPathSegCurvetoQuadraticSmoothRel) where
+  (SVGPathSegCurvetoQuadraticSmoothRel a) == (SVGPathSegCurvetoQuadraticSmoothRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pToJSVal = unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  pFromJSVal = SVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  toJSVal = return . unSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegCurvetoQuadraticSmoothRel where
+  fromJSVal = return . fmap SVGPathSegCurvetoQuadraticSmoothRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegCurvetoQuadraticSmoothRel
+instance IsGObject SVGPathSegCurvetoQuadraticSmoothRel where
+  typeGType _ = gTypeSVGPathSegCurvetoQuadraticSmoothRel
+  {-# INLINE typeGType #-}
+noSVGPathSegCurvetoQuadraticSmoothRel :: Maybe SVGPathSegCurvetoQuadraticSmoothRel
+noSVGPathSegCurvetoQuadraticSmoothRel = Nothing
+{-# INLINE noSVGPathSegCurvetoQuadraticSmoothRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegCurvetoQuadraticSmoothRel\"]" gTypeSVGPathSegCurvetoQuadraticSmoothRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoAbs Mozilla SVGPathSegLinetoAbs documentation>
+newtype SVGPathSegLinetoAbs = SVGPathSegLinetoAbs { unSVGPathSegLinetoAbs :: JSVal }
+
+instance Eq (SVGPathSegLinetoAbs) where
+  (SVGPathSegLinetoAbs a) == (SVGPathSegLinetoAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoAbs where
+  pToJSVal = unSVGPathSegLinetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoAbs where
+  pFromJSVal = SVGPathSegLinetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoAbs where
+  toJSVal = return . unSVGPathSegLinetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoAbs where
+  fromJSVal = return . fmap SVGPathSegLinetoAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoAbs
+instance IsGObject SVGPathSegLinetoAbs where
+  typeGType _ = gTypeSVGPathSegLinetoAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoAbs :: Maybe SVGPathSegLinetoAbs
+noSVGPathSegLinetoAbs = Nothing
+{-# INLINE noSVGPathSegLinetoAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoAbs\"]" gTypeSVGPathSegLinetoAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoHorizontalAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalAbs Mozilla SVGPathSegLinetoHorizontalAbs documentation>
+newtype SVGPathSegLinetoHorizontalAbs = SVGPathSegLinetoHorizontalAbs { unSVGPathSegLinetoHorizontalAbs :: JSVal }
+
+instance Eq (SVGPathSegLinetoHorizontalAbs) where
+  (SVGPathSegLinetoHorizontalAbs a) == (SVGPathSegLinetoHorizontalAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoHorizontalAbs where
+  pToJSVal = unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalAbs where
+  pFromJSVal = SVGPathSegLinetoHorizontalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalAbs where
+  toJSVal = return . unSVGPathSegLinetoHorizontalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalAbs where
+  fromJSVal = return . fmap SVGPathSegLinetoHorizontalAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalAbs
+instance IsGObject SVGPathSegLinetoHorizontalAbs where
+  typeGType _ = gTypeSVGPathSegLinetoHorizontalAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoHorizontalAbs :: Maybe SVGPathSegLinetoHorizontalAbs
+noSVGPathSegLinetoHorizontalAbs = Nothing
+{-# INLINE noSVGPathSegLinetoHorizontalAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoHorizontalAbs\"]" gTypeSVGPathSegLinetoHorizontalAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoHorizontalRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoHorizontalRel Mozilla SVGPathSegLinetoHorizontalRel documentation>
+newtype SVGPathSegLinetoHorizontalRel = SVGPathSegLinetoHorizontalRel { unSVGPathSegLinetoHorizontalRel :: JSVal }
+
+instance Eq (SVGPathSegLinetoHorizontalRel) where
+  (SVGPathSegLinetoHorizontalRel a) == (SVGPathSegLinetoHorizontalRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoHorizontalRel where
+  pToJSVal = unSVGPathSegLinetoHorizontalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoHorizontalRel where
+  pFromJSVal = SVGPathSegLinetoHorizontalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoHorizontalRel where
+  toJSVal = return . unSVGPathSegLinetoHorizontalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoHorizontalRel where
+  fromJSVal = return . fmap SVGPathSegLinetoHorizontalRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoHorizontalRel
+instance IsGObject SVGPathSegLinetoHorizontalRel where
+  typeGType _ = gTypeSVGPathSegLinetoHorizontalRel
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoHorizontalRel :: Maybe SVGPathSegLinetoHorizontalRel
+noSVGPathSegLinetoHorizontalRel = Nothing
+{-# INLINE noSVGPathSegLinetoHorizontalRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoHorizontalRel\"]" gTypeSVGPathSegLinetoHorizontalRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoRel Mozilla SVGPathSegLinetoRel documentation>
+newtype SVGPathSegLinetoRel = SVGPathSegLinetoRel { unSVGPathSegLinetoRel :: JSVal }
+
+instance Eq (SVGPathSegLinetoRel) where
+  (SVGPathSegLinetoRel a) == (SVGPathSegLinetoRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoRel where
+  pToJSVal = unSVGPathSegLinetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoRel where
+  pFromJSVal = SVGPathSegLinetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoRel where
+  toJSVal = return . unSVGPathSegLinetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoRel where
+  fromJSVal = return . fmap SVGPathSegLinetoRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoRel
+instance IsGObject SVGPathSegLinetoRel where
+  typeGType _ = gTypeSVGPathSegLinetoRel
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoRel :: Maybe SVGPathSegLinetoRel
+noSVGPathSegLinetoRel = Nothing
+{-# INLINE noSVGPathSegLinetoRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoRel\"]" gTypeSVGPathSegLinetoRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoVerticalAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalAbs Mozilla SVGPathSegLinetoVerticalAbs documentation>
+newtype SVGPathSegLinetoVerticalAbs = SVGPathSegLinetoVerticalAbs { unSVGPathSegLinetoVerticalAbs :: JSVal }
+
+instance Eq (SVGPathSegLinetoVerticalAbs) where
+  (SVGPathSegLinetoVerticalAbs a) == (SVGPathSegLinetoVerticalAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoVerticalAbs where
+  pToJSVal = unSVGPathSegLinetoVerticalAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalAbs where
+  pFromJSVal = SVGPathSegLinetoVerticalAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalAbs where
+  toJSVal = return . unSVGPathSegLinetoVerticalAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalAbs where
+  fromJSVal = return . fmap SVGPathSegLinetoVerticalAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalAbs
+instance IsGObject SVGPathSegLinetoVerticalAbs where
+  typeGType _ = gTypeSVGPathSegLinetoVerticalAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoVerticalAbs :: Maybe SVGPathSegLinetoVerticalAbs
+noSVGPathSegLinetoVerticalAbs = Nothing
+{-# INLINE noSVGPathSegLinetoVerticalAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoVerticalAbs\"]" gTypeSVGPathSegLinetoVerticalAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegLinetoVerticalRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegLinetoVerticalRel Mozilla SVGPathSegLinetoVerticalRel documentation>
+newtype SVGPathSegLinetoVerticalRel = SVGPathSegLinetoVerticalRel { unSVGPathSegLinetoVerticalRel :: JSVal }
+
+instance Eq (SVGPathSegLinetoVerticalRel) where
+  (SVGPathSegLinetoVerticalRel a) == (SVGPathSegLinetoVerticalRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegLinetoVerticalRel where
+  pToJSVal = unSVGPathSegLinetoVerticalRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegLinetoVerticalRel where
+  pFromJSVal = SVGPathSegLinetoVerticalRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegLinetoVerticalRel where
+  toJSVal = return . unSVGPathSegLinetoVerticalRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegLinetoVerticalRel where
+  fromJSVal = return . fmap SVGPathSegLinetoVerticalRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegLinetoVerticalRel
+instance IsGObject SVGPathSegLinetoVerticalRel where
+  typeGType _ = gTypeSVGPathSegLinetoVerticalRel
+  {-# INLINE typeGType #-}
+noSVGPathSegLinetoVerticalRel :: Maybe SVGPathSegLinetoVerticalRel
+noSVGPathSegLinetoVerticalRel = Nothing
+{-# INLINE noSVGPathSegLinetoVerticalRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegLinetoVerticalRel\"]" gTypeSVGPathSegLinetoVerticalRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegList Mozilla SVGPathSegList documentation>
+newtype SVGPathSegList = SVGPathSegList { unSVGPathSegList :: JSVal }
+
+instance Eq (SVGPathSegList) where
+  (SVGPathSegList a) == (SVGPathSegList b) = js_eq a b
+
+instance PToJSVal SVGPathSegList where
+  pToJSVal = unSVGPathSegList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegList where
+  pFromJSVal = SVGPathSegList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegList where
+  toJSVal = return . unSVGPathSegList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegList where
+  fromJSVal = return . fmap SVGPathSegList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGPathSegList where
+  typeGType _ = gTypeSVGPathSegList
+  {-# INLINE typeGType #-}
+noSVGPathSegList :: Maybe SVGPathSegList
+noSVGPathSegList = Nothing
+{-# INLINE noSVGPathSegList #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegList\"]" gTypeSVGPathSegList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegMovetoAbs".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoAbs Mozilla SVGPathSegMovetoAbs documentation>
+newtype SVGPathSegMovetoAbs = SVGPathSegMovetoAbs { unSVGPathSegMovetoAbs :: JSVal }
+
+instance Eq (SVGPathSegMovetoAbs) where
+  (SVGPathSegMovetoAbs a) == (SVGPathSegMovetoAbs b) = js_eq a b
+
+instance PToJSVal SVGPathSegMovetoAbs where
+  pToJSVal = unSVGPathSegMovetoAbs
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoAbs where
+  pFromJSVal = SVGPathSegMovetoAbs
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoAbs where
+  toJSVal = return . unSVGPathSegMovetoAbs
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoAbs where
+  fromJSVal = return . fmap SVGPathSegMovetoAbs . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegMovetoAbs
+instance IsGObject SVGPathSegMovetoAbs where
+  typeGType _ = gTypeSVGPathSegMovetoAbs
+  {-# INLINE typeGType #-}
+noSVGPathSegMovetoAbs :: Maybe SVGPathSegMovetoAbs
+noSVGPathSegMovetoAbs = Nothing
+{-# INLINE noSVGPathSegMovetoAbs #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegMovetoAbs\"]" gTypeSVGPathSegMovetoAbs :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPathSegMovetoRel".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGPathSeg"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPathSegMovetoRel Mozilla SVGPathSegMovetoRel documentation>
+newtype SVGPathSegMovetoRel = SVGPathSegMovetoRel { unSVGPathSegMovetoRel :: JSVal }
+
+instance Eq (SVGPathSegMovetoRel) where
+  (SVGPathSegMovetoRel a) == (SVGPathSegMovetoRel b) = js_eq a b
+
+instance PToJSVal SVGPathSegMovetoRel where
+  pToJSVal = unSVGPathSegMovetoRel
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPathSegMovetoRel where
+  pFromJSVal = SVGPathSegMovetoRel
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPathSegMovetoRel where
+  toJSVal = return . unSVGPathSegMovetoRel
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPathSegMovetoRel where
+  fromJSVal = return . fmap SVGPathSegMovetoRel . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGPathSeg SVGPathSegMovetoRel
+instance IsGObject SVGPathSegMovetoRel where
+  typeGType _ = gTypeSVGPathSegMovetoRel
+  {-# INLINE typeGType #-}
+noSVGPathSegMovetoRel :: Maybe SVGPathSegMovetoRel
+noSVGPathSegMovetoRel = Nothing
+{-# INLINE noSVGPathSegMovetoRel #-}
+
+foreign import javascript unsafe "window[\"SVGPathSegMovetoRel\"]" gTypeSVGPathSegMovetoRel :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPatternElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPatternElement Mozilla SVGPatternElement documentation>
+newtype SVGPatternElement = SVGPatternElement { unSVGPatternElement :: JSVal }
+
+instance Eq (SVGPatternElement) where
+  (SVGPatternElement a) == (SVGPatternElement b) = js_eq a b
+
+instance PToJSVal SVGPatternElement where
+  pToJSVal = unSVGPatternElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPatternElement where
+  pFromJSVal = SVGPatternElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPatternElement where
+  toJSVal = return . unSVGPatternElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPatternElement where
+  fromJSVal = return . fmap SVGPatternElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGPatternElement
+instance IsElement SVGPatternElement
+instance IsNode SVGPatternElement
+instance IsEventTarget SVGPatternElement
+instance IsSlotable SVGPatternElement
+instance IsParentNode SVGPatternElement
+instance IsNonDocumentTypeChildNode SVGPatternElement
+instance IsDocumentAndElementEventHandlers SVGPatternElement
+instance IsChildNode SVGPatternElement
+instance IsAnimatable SVGPatternElement
+instance IsGlobalEventHandlers SVGPatternElement
+instance IsElementCSSInlineStyle SVGPatternElement
+instance IsSVGURIReference SVGPatternElement
+instance IsSVGTests SVGPatternElement
+instance IsSVGFitToViewBox SVGPatternElement
+instance IsSVGExternalResourcesRequired SVGPatternElement
+instance IsGObject SVGPatternElement where
+  typeGType _ = gTypeSVGPatternElement
+  {-# INLINE typeGType #-}
+noSVGPatternElement :: Maybe SVGPatternElement
+noSVGPatternElement = Nothing
+{-# INLINE noSVGPatternElement #-}
+
+foreign import javascript unsafe "window[\"SVGPatternElement\"]" gTypeSVGPatternElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPoint Mozilla SVGPoint documentation>
+newtype SVGPoint = SVGPoint { unSVGPoint :: JSVal }
+
+instance Eq (SVGPoint) where
+  (SVGPoint a) == (SVGPoint b) = js_eq a b
+
+instance PToJSVal SVGPoint where
+  pToJSVal = unSVGPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPoint where
+  pFromJSVal = SVGPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPoint where
+  toJSVal = return . unSVGPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPoint where
+  fromJSVal = return . fmap SVGPoint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGPoint where
+  typeGType _ = gTypeSVGPoint
+  {-# INLINE typeGType #-}
+noSVGPoint :: Maybe SVGPoint
+noSVGPoint = Nothing
+{-# INLINE noSVGPoint #-}
+
+foreign import javascript unsafe "window[\"SVGPoint\"]" gTypeSVGPoint :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPointList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPointList Mozilla SVGPointList documentation>
+newtype SVGPointList = SVGPointList { unSVGPointList :: JSVal }
+
+instance Eq (SVGPointList) where
+  (SVGPointList a) == (SVGPointList b) = js_eq a b
+
+instance PToJSVal SVGPointList where
+  pToJSVal = unSVGPointList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPointList where
+  pFromJSVal = SVGPointList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPointList where
+  toJSVal = return . unSVGPointList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPointList where
+  fromJSVal = return . fmap SVGPointList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGPointList where
+  typeGType _ = gTypeSVGPointList
+  {-# INLINE typeGType #-}
+noSVGPointList :: Maybe SVGPointList
+noSVGPointList = Nothing
+{-# INLINE noSVGPointList #-}
+
+foreign import javascript unsafe "window[\"SVGPointList\"]" gTypeSVGPointList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPolygonElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolygonElement Mozilla SVGPolygonElement documentation>
+newtype SVGPolygonElement = SVGPolygonElement { unSVGPolygonElement :: JSVal }
+
+instance Eq (SVGPolygonElement) where
+  (SVGPolygonElement a) == (SVGPolygonElement b) = js_eq a b
+
+instance PToJSVal SVGPolygonElement where
+  pToJSVal = unSVGPolygonElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolygonElement where
+  pFromJSVal = SVGPolygonElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolygonElement where
+  toJSVal = return . unSVGPolygonElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolygonElement where
+  fromJSVal = return . fmap SVGPolygonElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGPolygonElement
+instance IsSVGElement SVGPolygonElement
+instance IsElement SVGPolygonElement
+instance IsNode SVGPolygonElement
+instance IsEventTarget SVGPolygonElement
+instance IsSlotable SVGPolygonElement
+instance IsParentNode SVGPolygonElement
+instance IsNonDocumentTypeChildNode SVGPolygonElement
+instance IsDocumentAndElementEventHandlers SVGPolygonElement
+instance IsChildNode SVGPolygonElement
+instance IsAnimatable SVGPolygonElement
+instance IsGlobalEventHandlers SVGPolygonElement
+instance IsElementCSSInlineStyle SVGPolygonElement
+instance IsSVGTests SVGPolygonElement
+instance IsSVGExternalResourcesRequired SVGPolygonElement
+instance IsGObject SVGPolygonElement where
+  typeGType _ = gTypeSVGPolygonElement
+  {-# INLINE typeGType #-}
+noSVGPolygonElement :: Maybe SVGPolygonElement
+noSVGPolygonElement = Nothing
+{-# INLINE noSVGPolygonElement #-}
+
+foreign import javascript unsafe "window[\"SVGPolygonElement\"]" gTypeSVGPolygonElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPolylineElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPolylineElement Mozilla SVGPolylineElement documentation>
+newtype SVGPolylineElement = SVGPolylineElement { unSVGPolylineElement :: JSVal }
+
+instance Eq (SVGPolylineElement) where
+  (SVGPolylineElement a) == (SVGPolylineElement b) = js_eq a b
+
+instance PToJSVal SVGPolylineElement where
+  pToJSVal = unSVGPolylineElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPolylineElement where
+  pFromJSVal = SVGPolylineElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPolylineElement where
+  toJSVal = return . unSVGPolylineElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPolylineElement where
+  fromJSVal = return . fmap SVGPolylineElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGPolylineElement
+instance IsSVGElement SVGPolylineElement
+instance IsElement SVGPolylineElement
+instance IsNode SVGPolylineElement
+instance IsEventTarget SVGPolylineElement
+instance IsSlotable SVGPolylineElement
+instance IsParentNode SVGPolylineElement
+instance IsNonDocumentTypeChildNode SVGPolylineElement
+instance IsDocumentAndElementEventHandlers SVGPolylineElement
+instance IsChildNode SVGPolylineElement
+instance IsAnimatable SVGPolylineElement
+instance IsGlobalEventHandlers SVGPolylineElement
+instance IsElementCSSInlineStyle SVGPolylineElement
+instance IsSVGTests SVGPolylineElement
+instance IsSVGExternalResourcesRequired SVGPolylineElement
+instance IsGObject SVGPolylineElement where
+  typeGType _ = gTypeSVGPolylineElement
+  {-# INLINE typeGType #-}
+noSVGPolylineElement :: Maybe SVGPolylineElement
+noSVGPolylineElement = Nothing
+{-# INLINE noSVGPolylineElement #-}
+
+foreign import javascript unsafe "window[\"SVGPolylineElement\"]" gTypeSVGPolylineElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGPreserveAspectRatio".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGPreserveAspectRatio Mozilla SVGPreserveAspectRatio documentation>
+newtype SVGPreserveAspectRatio = SVGPreserveAspectRatio { unSVGPreserveAspectRatio :: JSVal }
+
+instance Eq (SVGPreserveAspectRatio) where
+  (SVGPreserveAspectRatio a) == (SVGPreserveAspectRatio b) = js_eq a b
+
+instance PToJSVal SVGPreserveAspectRatio where
+  pToJSVal = unSVGPreserveAspectRatio
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGPreserveAspectRatio where
+  pFromJSVal = SVGPreserveAspectRatio
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGPreserveAspectRatio where
+  toJSVal = return . unSVGPreserveAspectRatio
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGPreserveAspectRatio where
+  fromJSVal = return . fmap SVGPreserveAspectRatio . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGPreserveAspectRatio where
+  typeGType _ = gTypeSVGPreserveAspectRatio
+  {-# INLINE typeGType #-}
+noSVGPreserveAspectRatio :: Maybe SVGPreserveAspectRatio
+noSVGPreserveAspectRatio = Nothing
+{-# INLINE noSVGPreserveAspectRatio #-}
+
+foreign import javascript unsafe "window[\"SVGPreserveAspectRatio\"]" gTypeSVGPreserveAspectRatio :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGRadialGradientElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGradientElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRadialGradientElement Mozilla SVGRadialGradientElement documentation>
+newtype SVGRadialGradientElement = SVGRadialGradientElement { unSVGRadialGradientElement :: JSVal }
+
+instance Eq (SVGRadialGradientElement) where
+  (SVGRadialGradientElement a) == (SVGRadialGradientElement b) = js_eq a b
+
+instance PToJSVal SVGRadialGradientElement where
+  pToJSVal = unSVGRadialGradientElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRadialGradientElement where
+  pFromJSVal = SVGRadialGradientElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRadialGradientElement where
+  toJSVal = return . unSVGRadialGradientElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRadialGradientElement where
+  fromJSVal = return . fmap SVGRadialGradientElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGradientElement SVGRadialGradientElement
+instance IsSVGElement SVGRadialGradientElement
+instance IsElement SVGRadialGradientElement
+instance IsNode SVGRadialGradientElement
+instance IsEventTarget SVGRadialGradientElement
+instance IsSlotable SVGRadialGradientElement
+instance IsParentNode SVGRadialGradientElement
+instance IsNonDocumentTypeChildNode SVGRadialGradientElement
+instance IsDocumentAndElementEventHandlers SVGRadialGradientElement
+instance IsChildNode SVGRadialGradientElement
+instance IsAnimatable SVGRadialGradientElement
+instance IsGlobalEventHandlers SVGRadialGradientElement
+instance IsElementCSSInlineStyle SVGRadialGradientElement
+instance IsSVGURIReference SVGRadialGradientElement
+instance IsSVGExternalResourcesRequired SVGRadialGradientElement
+instance IsGObject SVGRadialGradientElement where
+  typeGType _ = gTypeSVGRadialGradientElement
+  {-# INLINE typeGType #-}
+noSVGRadialGradientElement :: Maybe SVGRadialGradientElement
+noSVGRadialGradientElement = Nothing
+{-# INLINE noSVGRadialGradientElement #-}
+
+foreign import javascript unsafe "window[\"SVGRadialGradientElement\"]" gTypeSVGRadialGradientElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGRect".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRect Mozilla SVGRect documentation>
+newtype SVGRect = SVGRect { unSVGRect :: JSVal }
+
+instance Eq (SVGRect) where
+  (SVGRect a) == (SVGRect b) = js_eq a b
+
+instance PToJSVal SVGRect where
+  pToJSVal = unSVGRect
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRect where
+  pFromJSVal = SVGRect
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRect where
+  toJSVal = return . unSVGRect
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRect where
+  fromJSVal = return . fmap SVGRect . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGRect where
+  typeGType _ = gTypeSVGRect
+  {-# INLINE typeGType #-}
+noSVGRect :: Maybe SVGRect
+noSVGRect = Nothing
+{-# INLINE noSVGRect #-}
+
+foreign import javascript unsafe "window[\"SVGRect\"]" gTypeSVGRect :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGRectElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRectElement Mozilla SVGRectElement documentation>
+newtype SVGRectElement = SVGRectElement { unSVGRectElement :: JSVal }
+
+instance Eq (SVGRectElement) where
+  (SVGRectElement a) == (SVGRectElement b) = js_eq a b
+
+instance PToJSVal SVGRectElement where
+  pToJSVal = unSVGRectElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRectElement where
+  pFromJSVal = SVGRectElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRectElement where
+  toJSVal = return . unSVGRectElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRectElement where
+  fromJSVal = return . fmap SVGRectElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGRectElement
+instance IsSVGElement SVGRectElement
+instance IsElement SVGRectElement
+instance IsNode SVGRectElement
+instance IsEventTarget SVGRectElement
+instance IsSlotable SVGRectElement
+instance IsParentNode SVGRectElement
+instance IsNonDocumentTypeChildNode SVGRectElement
+instance IsDocumentAndElementEventHandlers SVGRectElement
+instance IsChildNode SVGRectElement
+instance IsAnimatable SVGRectElement
+instance IsGlobalEventHandlers SVGRectElement
+instance IsElementCSSInlineStyle SVGRectElement
+instance IsSVGTests SVGRectElement
+instance IsSVGExternalResourcesRequired SVGRectElement
+instance IsGObject SVGRectElement where
+  typeGType _ = gTypeSVGRectElement
+  {-# INLINE typeGType #-}
+noSVGRectElement :: Maybe SVGRectElement
+noSVGRectElement = Nothing
+{-# INLINE noSVGRectElement #-}
+
+foreign import javascript unsafe "window[\"SVGRectElement\"]" gTypeSVGRectElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGRenderingIntent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGRenderingIntent Mozilla SVGRenderingIntent documentation>
+newtype SVGRenderingIntent = SVGRenderingIntent { unSVGRenderingIntent :: JSVal }
+
+instance Eq (SVGRenderingIntent) where
+  (SVGRenderingIntent a) == (SVGRenderingIntent b) = js_eq a b
+
+instance PToJSVal SVGRenderingIntent where
+  pToJSVal = unSVGRenderingIntent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGRenderingIntent where
+  pFromJSVal = SVGRenderingIntent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGRenderingIntent where
+  toJSVal = return . unSVGRenderingIntent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGRenderingIntent where
+  fromJSVal = return . fmap SVGRenderingIntent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGRenderingIntent where
+  typeGType _ = gTypeSVGRenderingIntent
+  {-# INLINE typeGType #-}
+noSVGRenderingIntent :: Maybe SVGRenderingIntent
+noSVGRenderingIntent = Nothing
+{-# INLINE noSVGRenderingIntent #-}
+
+foreign import javascript unsafe "window[\"SVGRenderingIntent\"]" gTypeSVGRenderingIntent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGSVGElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGZoomAndPan"
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSVGElement Mozilla SVGSVGElement documentation>
+newtype SVGSVGElement = SVGSVGElement { unSVGSVGElement :: JSVal }
+
+instance Eq (SVGSVGElement) where
+  (SVGSVGElement a) == (SVGSVGElement b) = js_eq a b
+
+instance PToJSVal SVGSVGElement where
+  pToJSVal = unSVGSVGElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSVGElement where
+  pFromJSVal = SVGSVGElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSVGElement where
+  toJSVal = return . unSVGSVGElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSVGElement where
+  fromJSVal = return . fmap SVGSVGElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGSVGElement
+instance IsSVGElement SVGSVGElement
+instance IsElement SVGSVGElement
+instance IsNode SVGSVGElement
+instance IsEventTarget SVGSVGElement
+instance IsSlotable SVGSVGElement
+instance IsParentNode SVGSVGElement
+instance IsNonDocumentTypeChildNode SVGSVGElement
+instance IsDocumentAndElementEventHandlers SVGSVGElement
+instance IsChildNode SVGSVGElement
+instance IsAnimatable SVGSVGElement
+instance IsGlobalEventHandlers SVGSVGElement
+instance IsElementCSSInlineStyle SVGSVGElement
+instance IsSVGTests SVGSVGElement
+instance IsSVGZoomAndPan SVGSVGElement
+instance IsSVGFitToViewBox SVGSVGElement
+instance IsSVGExternalResourcesRequired SVGSVGElement
+instance IsGObject SVGSVGElement where
+  typeGType _ = gTypeSVGSVGElement
+  {-# INLINE typeGType #-}
+noSVGSVGElement :: Maybe SVGSVGElement
+noSVGSVGElement = Nothing
+{-# INLINE noSVGSVGElement #-}
+
+foreign import javascript unsafe "window[\"SVGSVGElement\"]" gTypeSVGSVGElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGScriptElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGScriptElement Mozilla SVGScriptElement documentation>
+newtype SVGScriptElement = SVGScriptElement { unSVGScriptElement :: JSVal }
+
+instance Eq (SVGScriptElement) where
+  (SVGScriptElement a) == (SVGScriptElement b) = js_eq a b
+
+instance PToJSVal SVGScriptElement where
+  pToJSVal = unSVGScriptElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGScriptElement where
+  pFromJSVal = SVGScriptElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGScriptElement where
+  toJSVal = return . unSVGScriptElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGScriptElement where
+  fromJSVal = return . fmap SVGScriptElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGScriptElement
+instance IsElement SVGScriptElement
+instance IsNode SVGScriptElement
+instance IsEventTarget SVGScriptElement
+instance IsSlotable SVGScriptElement
+instance IsParentNode SVGScriptElement
+instance IsNonDocumentTypeChildNode SVGScriptElement
+instance IsDocumentAndElementEventHandlers SVGScriptElement
+instance IsChildNode SVGScriptElement
+instance IsAnimatable SVGScriptElement
+instance IsGlobalEventHandlers SVGScriptElement
+instance IsElementCSSInlineStyle SVGScriptElement
+instance IsSVGURIReference SVGScriptElement
+instance IsSVGExternalResourcesRequired SVGScriptElement
+instance IsGObject SVGScriptElement where
+  typeGType _ = gTypeSVGScriptElement
+  {-# INLINE typeGType #-}
+noSVGScriptElement :: Maybe SVGScriptElement
+noSVGScriptElement = Nothing
+{-# INLINE noSVGScriptElement #-}
+
+foreign import javascript unsafe "window[\"SVGScriptElement\"]" gTypeSVGScriptElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGSetElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGAnimationElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSetElement Mozilla SVGSetElement documentation>
+newtype SVGSetElement = SVGSetElement { unSVGSetElement :: JSVal }
+
+instance Eq (SVGSetElement) where
+  (SVGSetElement a) == (SVGSetElement b) = js_eq a b
+
+instance PToJSVal SVGSetElement where
+  pToJSVal = unSVGSetElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSetElement where
+  pFromJSVal = SVGSetElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSetElement where
+  toJSVal = return . unSVGSetElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSetElement where
+  fromJSVal = return . fmap SVGSetElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGAnimationElement SVGSetElement
+instance IsSVGElement SVGSetElement
+instance IsElement SVGSetElement
+instance IsNode SVGSetElement
+instance IsEventTarget SVGSetElement
+instance IsSlotable SVGSetElement
+instance IsParentNode SVGSetElement
+instance IsNonDocumentTypeChildNode SVGSetElement
+instance IsDocumentAndElementEventHandlers SVGSetElement
+instance IsChildNode SVGSetElement
+instance IsAnimatable SVGSetElement
+instance IsGlobalEventHandlers SVGSetElement
+instance IsElementCSSInlineStyle SVGSetElement
+instance IsSVGTests SVGSetElement
+instance IsSVGExternalResourcesRequired SVGSetElement
+instance IsGObject SVGSetElement where
+  typeGType _ = gTypeSVGSetElement
+  {-# INLINE typeGType #-}
+noSVGSetElement :: Maybe SVGSetElement
+noSVGSetElement = Nothing
+{-# INLINE noSVGSetElement #-}
+
+foreign import javascript unsafe "window[\"SVGSetElement\"]" gTypeSVGSetElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGStopElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStopElement Mozilla SVGStopElement documentation>
+newtype SVGStopElement = SVGStopElement { unSVGStopElement :: JSVal }
+
+instance Eq (SVGStopElement) where
+  (SVGStopElement a) == (SVGStopElement b) = js_eq a b
+
+instance PToJSVal SVGStopElement where
+  pToJSVal = unSVGStopElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStopElement where
+  pFromJSVal = SVGStopElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStopElement where
+  toJSVal = return . unSVGStopElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStopElement where
+  fromJSVal = return . fmap SVGStopElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGStopElement
+instance IsElement SVGStopElement
+instance IsNode SVGStopElement
+instance IsEventTarget SVGStopElement
+instance IsSlotable SVGStopElement
+instance IsParentNode SVGStopElement
+instance IsNonDocumentTypeChildNode SVGStopElement
+instance IsDocumentAndElementEventHandlers SVGStopElement
+instance IsChildNode SVGStopElement
+instance IsAnimatable SVGStopElement
+instance IsGlobalEventHandlers SVGStopElement
+instance IsElementCSSInlineStyle SVGStopElement
+instance IsGObject SVGStopElement where
+  typeGType _ = gTypeSVGStopElement
+  {-# INLINE typeGType #-}
+noSVGStopElement :: Maybe SVGStopElement
+noSVGStopElement = Nothing
+{-# INLINE noSVGStopElement #-}
+
+foreign import javascript unsafe "window[\"SVGStopElement\"]" gTypeSVGStopElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGStringList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStringList Mozilla SVGStringList documentation>
+newtype SVGStringList = SVGStringList { unSVGStringList :: JSVal }
+
+instance Eq (SVGStringList) where
+  (SVGStringList a) == (SVGStringList b) = js_eq a b
+
+instance PToJSVal SVGStringList where
+  pToJSVal = unSVGStringList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStringList where
+  pFromJSVal = SVGStringList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStringList where
+  toJSVal = return . unSVGStringList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStringList where
+  fromJSVal = return . fmap SVGStringList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGStringList where
+  typeGType _ = gTypeSVGStringList
+  {-# INLINE typeGType #-}
+noSVGStringList :: Maybe SVGStringList
+noSVGStringList = Nothing
+{-# INLINE noSVGStringList #-}
+
+foreign import javascript unsafe "window[\"SVGStringList\"]" gTypeSVGStringList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGStyleElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGStyleElement Mozilla SVGStyleElement documentation>
+newtype SVGStyleElement = SVGStyleElement { unSVGStyleElement :: JSVal }
+
+instance Eq (SVGStyleElement) where
+  (SVGStyleElement a) == (SVGStyleElement b) = js_eq a b
+
+instance PToJSVal SVGStyleElement where
+  pToJSVal = unSVGStyleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGStyleElement where
+  pFromJSVal = SVGStyleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGStyleElement where
+  toJSVal = return . unSVGStyleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGStyleElement where
+  fromJSVal = return . fmap SVGStyleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGStyleElement
+instance IsElement SVGStyleElement
+instance IsNode SVGStyleElement
+instance IsEventTarget SVGStyleElement
+instance IsSlotable SVGStyleElement
+instance IsParentNode SVGStyleElement
+instance IsNonDocumentTypeChildNode SVGStyleElement
+instance IsDocumentAndElementEventHandlers SVGStyleElement
+instance IsChildNode SVGStyleElement
+instance IsAnimatable SVGStyleElement
+instance IsGlobalEventHandlers SVGStyleElement
+instance IsElementCSSInlineStyle SVGStyleElement
+instance IsGObject SVGStyleElement where
+  typeGType _ = gTypeSVGStyleElement
+  {-# INLINE typeGType #-}
+noSVGStyleElement :: Maybe SVGStyleElement
+noSVGStyleElement = Nothing
+{-# INLINE noSVGStyleElement #-}
+
+foreign import javascript unsafe "window[\"SVGStyleElement\"]" gTypeSVGStyleElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGSwitchElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSwitchElement Mozilla SVGSwitchElement documentation>
+newtype SVGSwitchElement = SVGSwitchElement { unSVGSwitchElement :: JSVal }
+
+instance Eq (SVGSwitchElement) where
+  (SVGSwitchElement a) == (SVGSwitchElement b) = js_eq a b
+
+instance PToJSVal SVGSwitchElement where
+  pToJSVal = unSVGSwitchElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSwitchElement where
+  pFromJSVal = SVGSwitchElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSwitchElement where
+  toJSVal = return . unSVGSwitchElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSwitchElement where
+  fromJSVal = return . fmap SVGSwitchElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGSwitchElement
+instance IsSVGElement SVGSwitchElement
+instance IsElement SVGSwitchElement
+instance IsNode SVGSwitchElement
+instance IsEventTarget SVGSwitchElement
+instance IsSlotable SVGSwitchElement
+instance IsParentNode SVGSwitchElement
+instance IsNonDocumentTypeChildNode SVGSwitchElement
+instance IsDocumentAndElementEventHandlers SVGSwitchElement
+instance IsChildNode SVGSwitchElement
+instance IsAnimatable SVGSwitchElement
+instance IsGlobalEventHandlers SVGSwitchElement
+instance IsElementCSSInlineStyle SVGSwitchElement
+instance IsSVGTests SVGSwitchElement
+instance IsSVGExternalResourcesRequired SVGSwitchElement
+instance IsGObject SVGSwitchElement where
+  typeGType _ = gTypeSVGSwitchElement
+  {-# INLINE typeGType #-}
+noSVGSwitchElement :: Maybe SVGSwitchElement
+noSVGSwitchElement = Nothing
+{-# INLINE noSVGSwitchElement #-}
+
+foreign import javascript unsafe "window[\"SVGSwitchElement\"]" gTypeSVGSwitchElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGSymbolElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGSymbolElement Mozilla SVGSymbolElement documentation>
+newtype SVGSymbolElement = SVGSymbolElement { unSVGSymbolElement :: JSVal }
+
+instance Eq (SVGSymbolElement) where
+  (SVGSymbolElement a) == (SVGSymbolElement b) = js_eq a b
+
+instance PToJSVal SVGSymbolElement where
+  pToJSVal = unSVGSymbolElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGSymbolElement where
+  pFromJSVal = SVGSymbolElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGSymbolElement where
+  toJSVal = return . unSVGSymbolElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGSymbolElement where
+  fromJSVal = return . fmap SVGSymbolElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGSymbolElement
+instance IsElement SVGSymbolElement
+instance IsNode SVGSymbolElement
+instance IsEventTarget SVGSymbolElement
+instance IsSlotable SVGSymbolElement
+instance IsParentNode SVGSymbolElement
+instance IsNonDocumentTypeChildNode SVGSymbolElement
+instance IsDocumentAndElementEventHandlers SVGSymbolElement
+instance IsChildNode SVGSymbolElement
+instance IsAnimatable SVGSymbolElement
+instance IsGlobalEventHandlers SVGSymbolElement
+instance IsElementCSSInlineStyle SVGSymbolElement
+instance IsSVGFitToViewBox SVGSymbolElement
+instance IsSVGExternalResourcesRequired SVGSymbolElement
+instance IsGObject SVGSymbolElement where
+  typeGType _ = gTypeSVGSymbolElement
+  {-# INLINE typeGType #-}
+noSVGSymbolElement :: Maybe SVGSymbolElement
+noSVGSymbolElement = Nothing
+{-# INLINE noSVGSymbolElement #-}
+
+foreign import javascript unsafe "window[\"SVGSymbolElement\"]" gTypeSVGSymbolElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTRefElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextPositioningElement"
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--     * "GHCJS.DOM.SVGURIReference"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTRefElement Mozilla SVGTRefElement documentation>
+newtype SVGTRefElement = SVGTRefElement { unSVGTRefElement :: JSVal }
+
+instance Eq (SVGTRefElement) where
+  (SVGTRefElement a) == (SVGTRefElement b) = js_eq a b
+
+instance PToJSVal SVGTRefElement where
+  pToJSVal = unSVGTRefElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTRefElement where
+  pFromJSVal = SVGTRefElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTRefElement where
+  toJSVal = return . unSVGTRefElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTRefElement where
+  fromJSVal = return . fmap SVGTRefElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGTextPositioningElement SVGTRefElement
+instance IsSVGTextContentElement SVGTRefElement
+instance IsSVGGraphicsElement SVGTRefElement
+instance IsSVGElement SVGTRefElement
+instance IsElement SVGTRefElement
+instance IsNode SVGTRefElement
+instance IsEventTarget SVGTRefElement
+instance IsSlotable SVGTRefElement
+instance IsParentNode SVGTRefElement
+instance IsNonDocumentTypeChildNode SVGTRefElement
+instance IsDocumentAndElementEventHandlers SVGTRefElement
+instance IsChildNode SVGTRefElement
+instance IsAnimatable SVGTRefElement
+instance IsGlobalEventHandlers SVGTRefElement
+instance IsElementCSSInlineStyle SVGTRefElement
+instance IsSVGTests SVGTRefElement
+instance IsSVGExternalResourcesRequired SVGTRefElement
+instance IsSVGURIReference SVGTRefElement
+instance IsGObject SVGTRefElement where
+  typeGType _ = gTypeSVGTRefElement
+  {-# INLINE typeGType #-}
+noSVGTRefElement :: Maybe SVGTRefElement
+noSVGTRefElement = Nothing
+{-# INLINE noSVGTRefElement #-}
+
+foreign import javascript unsafe "window[\"SVGTRefElement\"]" gTypeSVGTRefElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTSpanElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextPositioningElement"
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTSpanElement Mozilla SVGTSpanElement documentation>
+newtype SVGTSpanElement = SVGTSpanElement { unSVGTSpanElement :: JSVal }
+
+instance Eq (SVGTSpanElement) where
+  (SVGTSpanElement a) == (SVGTSpanElement b) = js_eq a b
+
+instance PToJSVal SVGTSpanElement where
+  pToJSVal = unSVGTSpanElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTSpanElement where
+  pFromJSVal = SVGTSpanElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTSpanElement where
+  toJSVal = return . unSVGTSpanElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTSpanElement where
+  fromJSVal = return . fmap SVGTSpanElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGTextPositioningElement SVGTSpanElement
+instance IsSVGTextContentElement SVGTSpanElement
+instance IsSVGGraphicsElement SVGTSpanElement
+instance IsSVGElement SVGTSpanElement
+instance IsElement SVGTSpanElement
+instance IsNode SVGTSpanElement
+instance IsEventTarget SVGTSpanElement
+instance IsSlotable SVGTSpanElement
+instance IsParentNode SVGTSpanElement
+instance IsNonDocumentTypeChildNode SVGTSpanElement
+instance IsDocumentAndElementEventHandlers SVGTSpanElement
+instance IsChildNode SVGTSpanElement
+instance IsAnimatable SVGTSpanElement
+instance IsGlobalEventHandlers SVGTSpanElement
+instance IsElementCSSInlineStyle SVGTSpanElement
+instance IsSVGTests SVGTSpanElement
+instance IsSVGExternalResourcesRequired SVGTSpanElement
+instance IsGObject SVGTSpanElement where
+  typeGType _ = gTypeSVGTSpanElement
+  {-# INLINE typeGType #-}
+noSVGTSpanElement :: Maybe SVGTSpanElement
+noSVGTSpanElement = Nothing
+{-# INLINE noSVGTSpanElement #-}
+
+foreign import javascript unsafe "window[\"SVGTSpanElement\"]" gTypeSVGTSpanElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTests".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTests Mozilla SVGTests documentation>
+newtype SVGTests = SVGTests { unSVGTests :: JSVal }
+
+instance Eq (SVGTests) where
+  (SVGTests a) == (SVGTests b) = js_eq a b
+
+instance PToJSVal SVGTests where
+  pToJSVal = unSVGTests
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTests where
+  pFromJSVal = SVGTests
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTests where
+  toJSVal = return . unSVGTests
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTests where
+  fromJSVal = return . fmap SVGTests . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGTests o
+toSVGTests :: IsSVGTests o => o -> SVGTests
+toSVGTests = SVGTests . coerce
+
+instance IsSVGTests SVGTests
+instance IsGObject SVGTests where
+  typeGType _ = gTypeSVGTests
+  {-# INLINE typeGType #-}
+noSVGTests :: Maybe SVGTests
+noSVGTests = Nothing
+{-# INLINE noSVGTests #-}
+
+foreign import javascript unsafe "window[\"SVGTests\"]" gTypeSVGTests :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTextContentElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextContentElement Mozilla SVGTextContentElement documentation>
+newtype SVGTextContentElement = SVGTextContentElement { unSVGTextContentElement :: JSVal }
+
+instance Eq (SVGTextContentElement) where
+  (SVGTextContentElement a) == (SVGTextContentElement b) = js_eq a b
+
+instance PToJSVal SVGTextContentElement where
+  pToJSVal = unSVGTextContentElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextContentElement where
+  pFromJSVal = SVGTextContentElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextContentElement where
+  toJSVal = return . unSVGTextContentElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextContentElement where
+  fromJSVal = return . fmap SVGTextContentElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextContentElement o
+toSVGTextContentElement :: IsSVGTextContentElement o => o -> SVGTextContentElement
+toSVGTextContentElement = SVGTextContentElement . coerce
+
+instance IsSVGTextContentElement SVGTextContentElement
+instance IsSVGGraphicsElement SVGTextContentElement
+instance IsSVGElement SVGTextContentElement
+instance IsElement SVGTextContentElement
+instance IsNode SVGTextContentElement
+instance IsEventTarget SVGTextContentElement
+instance IsSlotable SVGTextContentElement
+instance IsParentNode SVGTextContentElement
+instance IsNonDocumentTypeChildNode SVGTextContentElement
+instance IsDocumentAndElementEventHandlers SVGTextContentElement
+instance IsChildNode SVGTextContentElement
+instance IsAnimatable SVGTextContentElement
+instance IsGlobalEventHandlers SVGTextContentElement
+instance IsElementCSSInlineStyle SVGTextContentElement
+instance IsSVGTests SVGTextContentElement
+instance IsSVGExternalResourcesRequired SVGTextContentElement
+instance IsGObject SVGTextContentElement where
+  typeGType _ = gTypeSVGTextContentElement
+  {-# INLINE typeGType #-}
+noSVGTextContentElement :: Maybe SVGTextContentElement
+noSVGTextContentElement = Nothing
+{-# INLINE noSVGTextContentElement #-}
+
+foreign import javascript unsafe "window[\"SVGTextContentElement\"]" gTypeSVGTextContentElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTextElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextPositioningElement"
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextElement Mozilla SVGTextElement documentation>
+newtype SVGTextElement = SVGTextElement { unSVGTextElement :: JSVal }
+
+instance Eq (SVGTextElement) where
+  (SVGTextElement a) == (SVGTextElement b) = js_eq a b
+
+instance PToJSVal SVGTextElement where
+  pToJSVal = unSVGTextElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextElement where
+  pFromJSVal = SVGTextElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextElement where
+  toJSVal = return . unSVGTextElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextElement where
+  fromJSVal = return . fmap SVGTextElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGTextPositioningElement SVGTextElement
+instance IsSVGTextContentElement SVGTextElement
+instance IsSVGGraphicsElement SVGTextElement
+instance IsSVGElement SVGTextElement
+instance IsElement SVGTextElement
+instance IsNode SVGTextElement
+instance IsEventTarget SVGTextElement
+instance IsSlotable SVGTextElement
+instance IsParentNode SVGTextElement
+instance IsNonDocumentTypeChildNode SVGTextElement
+instance IsDocumentAndElementEventHandlers SVGTextElement
+instance IsChildNode SVGTextElement
+instance IsAnimatable SVGTextElement
+instance IsGlobalEventHandlers SVGTextElement
+instance IsElementCSSInlineStyle SVGTextElement
+instance IsSVGTests SVGTextElement
+instance IsSVGExternalResourcesRequired SVGTextElement
+instance IsGObject SVGTextElement where
+  typeGType _ = gTypeSVGTextElement
+  {-# INLINE typeGType #-}
+noSVGTextElement :: Maybe SVGTextElement
+noSVGTextElement = Nothing
+{-# INLINE noSVGTextElement #-}
+
+foreign import javascript unsafe "window[\"SVGTextElement\"]" gTypeSVGTextElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTextPathElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--     * "GHCJS.DOM.SVGURIReference"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPathElement Mozilla SVGTextPathElement documentation>
+newtype SVGTextPathElement = SVGTextPathElement { unSVGTextPathElement :: JSVal }
+
+instance Eq (SVGTextPathElement) where
+  (SVGTextPathElement a) == (SVGTextPathElement b) = js_eq a b
+
+instance PToJSVal SVGTextPathElement where
+  pToJSVal = unSVGTextPathElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPathElement where
+  pFromJSVal = SVGTextPathElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPathElement where
+  toJSVal = return . unSVGTextPathElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPathElement where
+  fromJSVal = return . fmap SVGTextPathElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGTextContentElement SVGTextPathElement
+instance IsSVGGraphicsElement SVGTextPathElement
+instance IsSVGElement SVGTextPathElement
+instance IsElement SVGTextPathElement
+instance IsNode SVGTextPathElement
+instance IsEventTarget SVGTextPathElement
+instance IsSlotable SVGTextPathElement
+instance IsParentNode SVGTextPathElement
+instance IsNonDocumentTypeChildNode SVGTextPathElement
+instance IsDocumentAndElementEventHandlers SVGTextPathElement
+instance IsChildNode SVGTextPathElement
+instance IsAnimatable SVGTextPathElement
+instance IsGlobalEventHandlers SVGTextPathElement
+instance IsElementCSSInlineStyle SVGTextPathElement
+instance IsSVGTests SVGTextPathElement
+instance IsSVGExternalResourcesRequired SVGTextPathElement
+instance IsSVGURIReference SVGTextPathElement
+instance IsGObject SVGTextPathElement where
+  typeGType _ = gTypeSVGTextPathElement
+  {-# INLINE typeGType #-}
+noSVGTextPathElement :: Maybe SVGTextPathElement
+noSVGTextPathElement = Nothing
+{-# INLINE noSVGTextPathElement #-}
+
+foreign import javascript unsafe "window[\"SVGTextPathElement\"]" gTypeSVGTextPathElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTextPositioningElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGTextContentElement"
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTextPositioningElement Mozilla SVGTextPositioningElement documentation>
+newtype SVGTextPositioningElement = SVGTextPositioningElement { unSVGTextPositioningElement :: JSVal }
+
+instance Eq (SVGTextPositioningElement) where
+  (SVGTextPositioningElement a) == (SVGTextPositioningElement b) = js_eq a b
+
+instance PToJSVal SVGTextPositioningElement where
+  pToJSVal = unSVGTextPositioningElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTextPositioningElement where
+  pFromJSVal = SVGTextPositioningElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTextPositioningElement where
+  toJSVal = return . unSVGTextPositioningElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTextPositioningElement where
+  fromJSVal = return . fmap SVGTextPositioningElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsSVGTextContentElement o, IsSVGGraphicsElement o, IsSVGElement o, IsElement o, IsNode o, IsEventTarget o, IsSlotable o, IsParentNode o, IsNonDocumentTypeChildNode o, IsDocumentAndElementEventHandlers o, IsChildNode o, IsAnimatable o, IsGlobalEventHandlers o, IsElementCSSInlineStyle o, IsSVGTests o, IsSVGExternalResourcesRequired o, IsGObject o) => IsSVGTextPositioningElement o
+toSVGTextPositioningElement :: IsSVGTextPositioningElement o => o -> SVGTextPositioningElement
+toSVGTextPositioningElement = SVGTextPositioningElement . coerce
+
+instance IsSVGTextPositioningElement SVGTextPositioningElement
+instance IsSVGTextContentElement SVGTextPositioningElement
+instance IsSVGGraphicsElement SVGTextPositioningElement
+instance IsSVGElement SVGTextPositioningElement
+instance IsElement SVGTextPositioningElement
+instance IsNode SVGTextPositioningElement
+instance IsEventTarget SVGTextPositioningElement
+instance IsSlotable SVGTextPositioningElement
+instance IsParentNode SVGTextPositioningElement
+instance IsNonDocumentTypeChildNode SVGTextPositioningElement
+instance IsDocumentAndElementEventHandlers SVGTextPositioningElement
+instance IsChildNode SVGTextPositioningElement
+instance IsAnimatable SVGTextPositioningElement
+instance IsGlobalEventHandlers SVGTextPositioningElement
+instance IsElementCSSInlineStyle SVGTextPositioningElement
+instance IsSVGTests SVGTextPositioningElement
+instance IsSVGExternalResourcesRequired SVGTextPositioningElement
+instance IsGObject SVGTextPositioningElement where
+  typeGType _ = gTypeSVGTextPositioningElement
+  {-# INLINE typeGType #-}
+noSVGTextPositioningElement :: Maybe SVGTextPositioningElement
+noSVGTextPositioningElement = Nothing
+{-# INLINE noSVGTextPositioningElement #-}
+
+foreign import javascript unsafe "window[\"SVGTextPositioningElement\"]" gTypeSVGTextPositioningElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTitleElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTitleElement Mozilla SVGTitleElement documentation>
+newtype SVGTitleElement = SVGTitleElement { unSVGTitleElement :: JSVal }
+
+instance Eq (SVGTitleElement) where
+  (SVGTitleElement a) == (SVGTitleElement b) = js_eq a b
+
+instance PToJSVal SVGTitleElement where
+  pToJSVal = unSVGTitleElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTitleElement where
+  pFromJSVal = SVGTitleElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTitleElement where
+  toJSVal = return . unSVGTitleElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTitleElement where
+  fromJSVal = return . fmap SVGTitleElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGTitleElement
+instance IsElement SVGTitleElement
+instance IsNode SVGTitleElement
+instance IsEventTarget SVGTitleElement
+instance IsSlotable SVGTitleElement
+instance IsParentNode SVGTitleElement
+instance IsNonDocumentTypeChildNode SVGTitleElement
+instance IsDocumentAndElementEventHandlers SVGTitleElement
+instance IsChildNode SVGTitleElement
+instance IsAnimatable SVGTitleElement
+instance IsGlobalEventHandlers SVGTitleElement
+instance IsElementCSSInlineStyle SVGTitleElement
+instance IsGObject SVGTitleElement where
+  typeGType _ = gTypeSVGTitleElement
+  {-# INLINE typeGType #-}
+noSVGTitleElement :: Maybe SVGTitleElement
+noSVGTitleElement = Nothing
+{-# INLINE noSVGTitleElement #-}
+
+foreign import javascript unsafe "window[\"SVGTitleElement\"]" gTypeSVGTitleElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTransform".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransform Mozilla SVGTransform documentation>
+newtype SVGTransform = SVGTransform { unSVGTransform :: JSVal }
+
+instance Eq (SVGTransform) where
+  (SVGTransform a) == (SVGTransform b) = js_eq a b
+
+instance PToJSVal SVGTransform where
+  pToJSVal = unSVGTransform
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransform where
+  pFromJSVal = SVGTransform
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransform where
+  toJSVal = return . unSVGTransform
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransform where
+  fromJSVal = return . fmap SVGTransform . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGTransform where
+  typeGType _ = gTypeSVGTransform
+  {-# INLINE typeGType #-}
+noSVGTransform :: Maybe SVGTransform
+noSVGTransform = Nothing
+{-# INLINE noSVGTransform #-}
+
+foreign import javascript unsafe "window[\"SVGTransform\"]" gTypeSVGTransform :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGTransformList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGTransformList Mozilla SVGTransformList documentation>
+newtype SVGTransformList = SVGTransformList { unSVGTransformList :: JSVal }
+
+instance Eq (SVGTransformList) where
+  (SVGTransformList a) == (SVGTransformList b) = js_eq a b
+
+instance PToJSVal SVGTransformList where
+  pToJSVal = unSVGTransformList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGTransformList where
+  pFromJSVal = SVGTransformList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGTransformList where
+  toJSVal = return . unSVGTransformList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGTransformList where
+  fromJSVal = return . fmap SVGTransformList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGTransformList where
+  typeGType _ = gTypeSVGTransformList
+  {-# INLINE typeGType #-}
+noSVGTransformList :: Maybe SVGTransformList
+noSVGTransformList = Nothing
+{-# INLINE noSVGTransformList #-}
+
+foreign import javascript unsafe "window[\"SVGTransformList\"]" gTypeSVGTransformList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGURIReference".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGURIReference Mozilla SVGURIReference documentation>
+newtype SVGURIReference = SVGURIReference { unSVGURIReference :: JSVal }
+
+instance Eq (SVGURIReference) where
+  (SVGURIReference a) == (SVGURIReference b) = js_eq a b
+
+instance PToJSVal SVGURIReference where
+  pToJSVal = unSVGURIReference
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGURIReference where
+  pFromJSVal = SVGURIReference
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGURIReference where
+  toJSVal = return . unSVGURIReference
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGURIReference where
+  fromJSVal = return . fmap SVGURIReference . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGURIReference o
+toSVGURIReference :: IsSVGURIReference o => o -> SVGURIReference
+toSVGURIReference = SVGURIReference . coerce
+
+instance IsSVGURIReference SVGURIReference
+instance IsGObject SVGURIReference where
+  typeGType _ = gTypeSVGURIReference
+  {-# INLINE typeGType #-}
+noSVGURIReference :: Maybe SVGURIReference
+noSVGURIReference = Nothing
+{-# INLINE noSVGURIReference #-}
+
+foreign import javascript unsafe "window[\"SVGURIReference\"]" gTypeSVGURIReference :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGUnitTypes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUnitTypes Mozilla SVGUnitTypes documentation>
+newtype SVGUnitTypes = SVGUnitTypes { unSVGUnitTypes :: JSVal }
+
+instance Eq (SVGUnitTypes) where
+  (SVGUnitTypes a) == (SVGUnitTypes b) = js_eq a b
+
+instance PToJSVal SVGUnitTypes where
+  pToJSVal = unSVGUnitTypes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUnitTypes where
+  pFromJSVal = SVGUnitTypes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUnitTypes where
+  toJSVal = return . unSVGUnitTypes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUnitTypes where
+  fromJSVal = return . fmap SVGUnitTypes . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SVGUnitTypes where
+  typeGType _ = gTypeSVGUnitTypes
+  {-# INLINE typeGType #-}
+noSVGUnitTypes :: Maybe SVGUnitTypes
+noSVGUnitTypes = Nothing
+{-# INLINE noSVGUnitTypes #-}
+
+foreign import javascript unsafe "window[\"SVGUnitTypes\"]" gTypeSVGUnitTypes :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGUseElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGGraphicsElement"
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGTests"
+--     * "GHCJS.DOM.SVGURIReference"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGUseElement Mozilla SVGUseElement documentation>
+newtype SVGUseElement = SVGUseElement { unSVGUseElement :: JSVal }
+
+instance Eq (SVGUseElement) where
+  (SVGUseElement a) == (SVGUseElement b) = js_eq a b
+
+instance PToJSVal SVGUseElement where
+  pToJSVal = unSVGUseElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGUseElement where
+  pFromJSVal = SVGUseElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGUseElement where
+  toJSVal = return . unSVGUseElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGUseElement where
+  fromJSVal = return . fmap SVGUseElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGGraphicsElement SVGUseElement
+instance IsSVGElement SVGUseElement
+instance IsElement SVGUseElement
+instance IsNode SVGUseElement
+instance IsEventTarget SVGUseElement
+instance IsSlotable SVGUseElement
+instance IsParentNode SVGUseElement
+instance IsNonDocumentTypeChildNode SVGUseElement
+instance IsDocumentAndElementEventHandlers SVGUseElement
+instance IsChildNode SVGUseElement
+instance IsAnimatable SVGUseElement
+instance IsGlobalEventHandlers SVGUseElement
+instance IsElementCSSInlineStyle SVGUseElement
+instance IsSVGTests SVGUseElement
+instance IsSVGURIReference SVGUseElement
+instance IsSVGExternalResourcesRequired SVGUseElement
+instance IsGObject SVGUseElement where
+  typeGType _ = gTypeSVGUseElement
+  {-# INLINE typeGType #-}
+noSVGUseElement :: Maybe SVGUseElement
+noSVGUseElement = Nothing
+{-# INLINE noSVGUseElement #-}
+
+foreign import javascript unsafe "window[\"SVGUseElement\"]" gTypeSVGUseElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGVKernElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGVKernElement Mozilla SVGVKernElement documentation>
+newtype SVGVKernElement = SVGVKernElement { unSVGVKernElement :: JSVal }
+
+instance Eq (SVGVKernElement) where
+  (SVGVKernElement a) == (SVGVKernElement b) = js_eq a b
+
+instance PToJSVal SVGVKernElement where
+  pToJSVal = unSVGVKernElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGVKernElement where
+  pFromJSVal = SVGVKernElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGVKernElement where
+  toJSVal = return . unSVGVKernElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGVKernElement where
+  fromJSVal = return . fmap SVGVKernElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGVKernElement
+instance IsElement SVGVKernElement
+instance IsNode SVGVKernElement
+instance IsEventTarget SVGVKernElement
+instance IsSlotable SVGVKernElement
+instance IsParentNode SVGVKernElement
+instance IsNonDocumentTypeChildNode SVGVKernElement
+instance IsDocumentAndElementEventHandlers SVGVKernElement
+instance IsChildNode SVGVKernElement
+instance IsAnimatable SVGVKernElement
+instance IsGlobalEventHandlers SVGVKernElement
+instance IsElementCSSInlineStyle SVGVKernElement
+instance IsGObject SVGVKernElement where
+  typeGType _ = gTypeSVGVKernElement
+  {-# INLINE typeGType #-}
+noSVGVKernElement :: Maybe SVGVKernElement
+noSVGVKernElement = Nothing
+{-# INLINE noSVGVKernElement #-}
+
+foreign import javascript unsafe "window[\"SVGVKernElement\"]" gTypeSVGVKernElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGViewElement".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGElement"
+--     * "GHCJS.DOM.Element"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.Slotable"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Animatable"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.ElementCSSInlineStyle"
+--     * "GHCJS.DOM.SVGZoomAndPan"
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--     * "GHCJS.DOM.SVGExternalResourcesRequired"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewElement Mozilla SVGViewElement documentation>
+newtype SVGViewElement = SVGViewElement { unSVGViewElement :: JSVal }
+
+instance Eq (SVGViewElement) where
+  (SVGViewElement a) == (SVGViewElement b) = js_eq a b
+
+instance PToJSVal SVGViewElement where
+  pToJSVal = unSVGViewElement
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewElement where
+  pFromJSVal = SVGViewElement
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewElement where
+  toJSVal = return . unSVGViewElement
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewElement where
+  fromJSVal = return . fmap SVGViewElement . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGElement SVGViewElement
+instance IsElement SVGViewElement
+instance IsNode SVGViewElement
+instance IsEventTarget SVGViewElement
+instance IsSlotable SVGViewElement
+instance IsParentNode SVGViewElement
+instance IsNonDocumentTypeChildNode SVGViewElement
+instance IsDocumentAndElementEventHandlers SVGViewElement
+instance IsChildNode SVGViewElement
+instance IsAnimatable SVGViewElement
+instance IsGlobalEventHandlers SVGViewElement
+instance IsElementCSSInlineStyle SVGViewElement
+instance IsSVGZoomAndPan SVGViewElement
+instance IsSVGFitToViewBox SVGViewElement
+instance IsSVGExternalResourcesRequired SVGViewElement
+instance IsGObject SVGViewElement where
+  typeGType _ = gTypeSVGViewElement
+  {-# INLINE typeGType #-}
+noSVGViewElement :: Maybe SVGViewElement
+noSVGViewElement = Nothing
+{-# INLINE noSVGViewElement #-}
+
+foreign import javascript unsafe "window[\"SVGViewElement\"]" gTypeSVGViewElement :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGViewSpec".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.SVGFitToViewBox"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGViewSpec Mozilla SVGViewSpec documentation>
+newtype SVGViewSpec = SVGViewSpec { unSVGViewSpec :: JSVal }
+
+instance Eq (SVGViewSpec) where
+  (SVGViewSpec a) == (SVGViewSpec b) = js_eq a b
+
+instance PToJSVal SVGViewSpec where
+  pToJSVal = unSVGViewSpec
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGViewSpec where
+  pFromJSVal = SVGViewSpec
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGViewSpec where
+  toJSVal = return . unSVGViewSpec
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGViewSpec where
+  fromJSVal = return . fmap SVGViewSpec . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsSVGFitToViewBox SVGViewSpec
+instance IsGObject SVGViewSpec where
+  typeGType _ = gTypeSVGViewSpec
+  {-# INLINE typeGType #-}
+noSVGViewSpec :: Maybe SVGViewSpec
+noSVGViewSpec = Nothing
+{-# INLINE noSVGViewSpec #-}
+
+foreign import javascript unsafe "window[\"SVGViewSpec\"]" gTypeSVGViewSpec :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGZoomAndPan".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomAndPan Mozilla SVGZoomAndPan documentation>
+newtype SVGZoomAndPan = SVGZoomAndPan { unSVGZoomAndPan :: JSVal }
+
+instance Eq (SVGZoomAndPan) where
+  (SVGZoomAndPan a) == (SVGZoomAndPan b) = js_eq a b
+
+instance PToJSVal SVGZoomAndPan where
+  pToJSVal = unSVGZoomAndPan
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomAndPan where
+  pFromJSVal = SVGZoomAndPan
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomAndPan where
+  toJSVal = return . unSVGZoomAndPan
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomAndPan where
+  fromJSVal = return . fmap SVGZoomAndPan . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSVGZoomAndPan o
+toSVGZoomAndPan :: IsSVGZoomAndPan o => o -> SVGZoomAndPan
+toSVGZoomAndPan = SVGZoomAndPan . coerce
+
+instance IsSVGZoomAndPan SVGZoomAndPan
+instance IsGObject SVGZoomAndPan where
+  typeGType _ = gTypeSVGZoomAndPan
+  {-# INLINE typeGType #-}
+noSVGZoomAndPan :: Maybe SVGZoomAndPan
+noSVGZoomAndPan = Nothing
+{-# INLINE noSVGZoomAndPan #-}
+
+foreign import javascript unsafe "window[\"SVGZoomAndPan\"]" gTypeSVGZoomAndPan :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SVGZoomEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SVGZoomEvent Mozilla SVGZoomEvent documentation>
+newtype SVGZoomEvent = SVGZoomEvent { unSVGZoomEvent :: JSVal }
+
+instance Eq (SVGZoomEvent) where
+  (SVGZoomEvent a) == (SVGZoomEvent b) = js_eq a b
+
+instance PToJSVal SVGZoomEvent where
+  pToJSVal = unSVGZoomEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SVGZoomEvent where
+  pFromJSVal = SVGZoomEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SVGZoomEvent where
+  toJSVal = return . unSVGZoomEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SVGZoomEvent where
+  fromJSVal = return . fmap SVGZoomEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent SVGZoomEvent
+instance IsEvent SVGZoomEvent
+instance IsGObject SVGZoomEvent where
+  typeGType _ = gTypeSVGZoomEvent
+  {-# INLINE typeGType #-}
+noSVGZoomEvent :: Maybe SVGZoomEvent
+noSVGZoomEvent = Nothing
+{-# INLINE noSVGZoomEvent #-}
+
+foreign import javascript unsafe "window[\"SVGZoomEvent\"]" gTypeSVGZoomEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Screen".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Screen Mozilla Screen documentation>
+newtype Screen = Screen { unScreen :: JSVal }
+
+instance Eq (Screen) where
+  (Screen a) == (Screen b) = js_eq a b
+
+instance PToJSVal Screen where
+  pToJSVal = unScreen
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Screen where
+  pFromJSVal = Screen
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Screen where
+  toJSVal = return . unScreen
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Screen where
+  fromJSVal = return . fmap Screen . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Screen where
+  typeGType _ = gTypeScreen
+  {-# INLINE typeGType #-}
+noScreen :: Maybe Screen
+noScreen = Nothing
+{-# INLINE noScreen #-}
+
+foreign import javascript unsafe "window[\"Screen\"]" gTypeScreen :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ScriptProcessorNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScriptProcessorNode Mozilla ScriptProcessorNode documentation>
+newtype ScriptProcessorNode = ScriptProcessorNode { unScriptProcessorNode :: JSVal }
+
+instance Eq (ScriptProcessorNode) where
+  (ScriptProcessorNode a) == (ScriptProcessorNode b) = js_eq a b
+
+instance PToJSVal ScriptProcessorNode where
+  pToJSVal = unScriptProcessorNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScriptProcessorNode where
+  pFromJSVal = ScriptProcessorNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScriptProcessorNode where
+  toJSVal = return . unScriptProcessorNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScriptProcessorNode where
+  fromJSVal = return . fmap ScriptProcessorNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode ScriptProcessorNode
+instance IsEventTarget ScriptProcessorNode
+instance IsGObject ScriptProcessorNode where
+  typeGType _ = gTypeScriptProcessorNode
+  {-# INLINE typeGType #-}
+noScriptProcessorNode :: Maybe ScriptProcessorNode
+noScriptProcessorNode = Nothing
+{-# INLINE noScriptProcessorNode #-}
+
+foreign import javascript unsafe "window[\"ScriptProcessorNode\"]" gTypeScriptProcessorNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ScrollToOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ScrollToOptions Mozilla ScrollToOptions documentation>
+newtype ScrollToOptions = ScrollToOptions { unScrollToOptions :: JSVal }
+
+instance Eq (ScrollToOptions) where
+  (ScrollToOptions a) == (ScrollToOptions b) = js_eq a b
+
+instance PToJSVal ScrollToOptions where
+  pToJSVal = unScrollToOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ScrollToOptions where
+  pFromJSVal = ScrollToOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ScrollToOptions where
+  toJSVal = return . unScrollToOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ScrollToOptions where
+  fromJSVal = return . fmap ScrollToOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ScrollToOptions where
+  typeGType _ = gTypeScrollToOptions
+  {-# INLINE typeGType #-}
+noScrollToOptions :: Maybe ScrollToOptions
+noScrollToOptions = Nothing
+{-# INLINE noScrollToOptions #-}
+
+foreign import javascript unsafe "window[\"ScrollToOptions\"]" gTypeScrollToOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SecurityPolicyViolationEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEvent Mozilla SecurityPolicyViolationEvent documentation>
+newtype SecurityPolicyViolationEvent = SecurityPolicyViolationEvent { unSecurityPolicyViolationEvent :: JSVal }
+
+instance Eq (SecurityPolicyViolationEvent) where
+  (SecurityPolicyViolationEvent a) == (SecurityPolicyViolationEvent b) = js_eq a b
+
+instance PToJSVal SecurityPolicyViolationEvent where
+  pToJSVal = unSecurityPolicyViolationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicyViolationEvent where
+  pFromJSVal = SecurityPolicyViolationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicyViolationEvent where
+  toJSVal = return . unSecurityPolicyViolationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicyViolationEvent where
+  fromJSVal = return . fmap SecurityPolicyViolationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SecurityPolicyViolationEvent
+instance IsGObject SecurityPolicyViolationEvent where
+  typeGType _ = gTypeSecurityPolicyViolationEvent
+  {-# INLINE typeGType #-}
+noSecurityPolicyViolationEvent :: Maybe SecurityPolicyViolationEvent
+noSecurityPolicyViolationEvent = Nothing
+{-# INLINE noSecurityPolicyViolationEvent #-}
+
+foreign import javascript unsafe "window[\"SecurityPolicyViolationEvent\"]" gTypeSecurityPolicyViolationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SecurityPolicyViolationEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SecurityPolicyViolationEventInit Mozilla SecurityPolicyViolationEventInit documentation>
+newtype SecurityPolicyViolationEventInit = SecurityPolicyViolationEventInit { unSecurityPolicyViolationEventInit :: JSVal }
+
+instance Eq (SecurityPolicyViolationEventInit) where
+  (SecurityPolicyViolationEventInit a) == (SecurityPolicyViolationEventInit b) = js_eq a b
+
+instance PToJSVal SecurityPolicyViolationEventInit where
+  pToJSVal = unSecurityPolicyViolationEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SecurityPolicyViolationEventInit where
+  pFromJSVal = SecurityPolicyViolationEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SecurityPolicyViolationEventInit where
+  toJSVal = return . unSecurityPolicyViolationEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SecurityPolicyViolationEventInit where
+  fromJSVal = return . fmap SecurityPolicyViolationEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit SecurityPolicyViolationEventInit
+instance IsGObject SecurityPolicyViolationEventInit where
+  typeGType _ = gTypeSecurityPolicyViolationEventInit
+  {-# INLINE typeGType #-}
+noSecurityPolicyViolationEventInit :: Maybe SecurityPolicyViolationEventInit
+noSecurityPolicyViolationEventInit = Nothing
+{-# INLINE noSecurityPolicyViolationEventInit #-}
+
+foreign import javascript unsafe "window[\"SecurityPolicyViolationEventInit\"]" gTypeSecurityPolicyViolationEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Selection".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Selection Mozilla Selection documentation>
+newtype Selection = Selection { unSelection :: JSVal }
+
+instance Eq (Selection) where
+  (Selection a) == (Selection b) = js_eq a b
+
+instance PToJSVal Selection where
+  pToJSVal = unSelection
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Selection where
+  pFromJSVal = Selection
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Selection where
+  toJSVal = return . unSelection
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Selection where
+  fromJSVal = return . fmap Selection . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Selection where
+  typeGType _ = gTypeSelection
+  {-# INLINE typeGType #-}
+noSelection :: Maybe Selection
+noSelection = Nothing
+{-# INLINE noSelection #-}
+
+foreign import javascript unsafe "window[\"Selection\"]" gTypeSelection :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ShadowRoot".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.DocumentFragment"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonElementParentNode"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.DocumentOrShadowRoot"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRoot Mozilla ShadowRoot documentation>
+newtype ShadowRoot = ShadowRoot { unShadowRoot :: JSVal }
+
+instance Eq (ShadowRoot) where
+  (ShadowRoot a) == (ShadowRoot b) = js_eq a b
+
+instance PToJSVal ShadowRoot where
+  pToJSVal = unShadowRoot
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ShadowRoot where
+  pFromJSVal = ShadowRoot
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ShadowRoot where
+  toJSVal = return . unShadowRoot
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ShadowRoot where
+  fromJSVal = return . fmap ShadowRoot . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDocumentFragment ShadowRoot
+instance IsNode ShadowRoot
+instance IsEventTarget ShadowRoot
+instance IsNonElementParentNode ShadowRoot
+instance IsParentNode ShadowRoot
+instance IsDocumentOrShadowRoot ShadowRoot
+instance IsGObject ShadowRoot where
+  typeGType _ = gTypeShadowRoot
+  {-# INLINE typeGType #-}
+noShadowRoot :: Maybe ShadowRoot
+noShadowRoot = Nothing
+{-# INLINE noShadowRoot #-}
+
+foreign import javascript unsafe "window[\"ShadowRoot\"]" gTypeShadowRoot :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ShadowRootInit".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ShadowRootInit Mozilla ShadowRootInit documentation>
+newtype ShadowRootInit = ShadowRootInit { unShadowRootInit :: JSVal }
+
+instance Eq (ShadowRootInit) where
+  (ShadowRootInit a) == (ShadowRootInit b) = js_eq a b
+
+instance PToJSVal ShadowRootInit where
+  pToJSVal = unShadowRootInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ShadowRootInit where
+  pFromJSVal = ShadowRootInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ShadowRootInit where
+  toJSVal = return . unShadowRootInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ShadowRootInit where
+  fromJSVal = return . fmap ShadowRootInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ShadowRootInit where
+  typeGType _ = gTypeShadowRootInit
+  {-# INLINE typeGType #-}
+noShadowRootInit :: Maybe ShadowRootInit
+noShadowRootInit = Nothing
+{-# INLINE noShadowRootInit #-}
+
+foreign import javascript unsafe "window[\"ShadowRootInit\"]" gTypeShadowRootInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SiteBoundCredential".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.BasicCredential"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredential Mozilla SiteBoundCredential documentation>
+newtype SiteBoundCredential = SiteBoundCredential { unSiteBoundCredential :: JSVal }
+
+instance Eq (SiteBoundCredential) where
+  (SiteBoundCredential a) == (SiteBoundCredential b) = js_eq a b
+
+instance PToJSVal SiteBoundCredential where
+  pToJSVal = unSiteBoundCredential
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SiteBoundCredential where
+  pFromJSVal = SiteBoundCredential
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SiteBoundCredential where
+  toJSVal = return . unSiteBoundCredential
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SiteBoundCredential where
+  fromJSVal = return . fmap SiteBoundCredential . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsBasicCredential o, IsGObject o) => IsSiteBoundCredential o
+toSiteBoundCredential :: IsSiteBoundCredential o => o -> SiteBoundCredential
+toSiteBoundCredential = SiteBoundCredential . coerce
+
+instance IsSiteBoundCredential SiteBoundCredential
+instance IsBasicCredential SiteBoundCredential
+instance IsGObject SiteBoundCredential where
+  typeGType _ = gTypeSiteBoundCredential
+  {-# INLINE typeGType #-}
+noSiteBoundCredential :: Maybe SiteBoundCredential
+noSiteBoundCredential = Nothing
+{-# INLINE noSiteBoundCredential #-}
+
+foreign import javascript unsafe "window[\"SiteBoundCredential\"]" gTypeSiteBoundCredential :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SiteBoundCredentialData".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CredentialData"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SiteBoundCredentialData Mozilla SiteBoundCredentialData documentation>
+newtype SiteBoundCredentialData = SiteBoundCredentialData { unSiteBoundCredentialData :: JSVal }
+
+instance Eq (SiteBoundCredentialData) where
+  (SiteBoundCredentialData a) == (SiteBoundCredentialData b) = js_eq a b
+
+instance PToJSVal SiteBoundCredentialData where
+  pToJSVal = unSiteBoundCredentialData
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SiteBoundCredentialData where
+  pFromJSVal = SiteBoundCredentialData
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SiteBoundCredentialData where
+  toJSVal = return . unSiteBoundCredentialData
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SiteBoundCredentialData where
+  fromJSVal = return . fmap SiteBoundCredentialData . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsCredentialData o, IsGObject o) => IsSiteBoundCredentialData o
+toSiteBoundCredentialData :: IsSiteBoundCredentialData o => o -> SiteBoundCredentialData
+toSiteBoundCredentialData = SiteBoundCredentialData . coerce
+
+instance IsSiteBoundCredentialData SiteBoundCredentialData
+instance IsCredentialData SiteBoundCredentialData
+instance IsGObject SiteBoundCredentialData where
+  typeGType _ = gTypeSiteBoundCredentialData
+  {-# INLINE typeGType #-}
+noSiteBoundCredentialData :: Maybe SiteBoundCredentialData
+noSiteBoundCredentialData = Nothing
+{-# INLINE noSiteBoundCredentialData #-}
+
+foreign import javascript unsafe "window[\"SiteBoundCredentialData\"]" gTypeSiteBoundCredentialData :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Slotable".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Slotable Mozilla Slotable documentation>
+newtype Slotable = Slotable { unSlotable :: JSVal }
+
+instance Eq (Slotable) where
+  (Slotable a) == (Slotable b) = js_eq a b
+
+instance PToJSVal Slotable where
+  pToJSVal = unSlotable
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Slotable where
+  pFromJSVal = Slotable
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Slotable where
+  toJSVal = return . unSlotable
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Slotable where
+  fromJSVal = return . fmap Slotable . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsSlotable o
+toSlotable :: IsSlotable o => o -> Slotable
+toSlotable = Slotable . coerce
+
+instance IsSlotable Slotable
+instance IsGObject Slotable where
+  typeGType _ = gTypeSlotable
+  {-# INLINE typeGType #-}
+noSlotable :: Maybe Slotable
+noSlotable = Nothing
+{-# INLINE noSlotable #-}
+
+foreign import javascript unsafe "window[\"Slotable\"]" gTypeSlotable :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SourceBuffer".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBuffer Mozilla SourceBuffer documentation>
+newtype SourceBuffer = SourceBuffer { unSourceBuffer :: JSVal }
+
+instance Eq (SourceBuffer) where
+  (SourceBuffer a) == (SourceBuffer b) = js_eq a b
+
+instance PToJSVal SourceBuffer where
+  pToJSVal = unSourceBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBuffer where
+  pFromJSVal = SourceBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBuffer where
+  toJSVal = return . unSourceBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBuffer where
+  fromJSVal = return . fmap SourceBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget SourceBuffer
+instance IsGObject SourceBuffer where
+  typeGType _ = gTypeSourceBuffer
+  {-# INLINE typeGType #-}
+noSourceBuffer :: Maybe SourceBuffer
+noSourceBuffer = Nothing
+{-# INLINE noSourceBuffer #-}
+
+foreign import javascript unsafe "window[\"SourceBuffer\"]" gTypeSourceBuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SourceBufferList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SourceBufferList Mozilla SourceBufferList documentation>
+newtype SourceBufferList = SourceBufferList { unSourceBufferList :: JSVal }
+
+instance Eq (SourceBufferList) where
+  (SourceBufferList a) == (SourceBufferList b) = js_eq a b
+
+instance PToJSVal SourceBufferList where
+  pToJSVal = unSourceBufferList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SourceBufferList where
+  pFromJSVal = SourceBufferList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SourceBufferList where
+  toJSVal = return . unSourceBufferList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SourceBufferList where
+  fromJSVal = return . fmap SourceBufferList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget SourceBufferList
+instance IsGObject SourceBufferList where
+  typeGType _ = gTypeSourceBufferList
+  {-# INLINE typeGType #-}
+noSourceBufferList :: Maybe SourceBufferList
+noSourceBufferList = Nothing
+{-# INLINE noSourceBufferList #-}
+
+foreign import javascript unsafe "window[\"SourceBufferList\"]" gTypeSourceBufferList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechGrammar".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammar Mozilla SpeechGrammar documentation>
+newtype SpeechGrammar = SpeechGrammar { unSpeechGrammar :: JSVal }
+
+instance Eq (SpeechGrammar) where
+  (SpeechGrammar a) == (SpeechGrammar b) = js_eq a b
+
+instance PToJSVal SpeechGrammar where
+  pToJSVal = unSpeechGrammar
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechGrammar where
+  pFromJSVal = SpeechGrammar
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechGrammar where
+  toJSVal = return . unSpeechGrammar
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechGrammar where
+  fromJSVal = return . fmap SpeechGrammar . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechGrammar where
+  typeGType _ = gTypeSpeechGrammar
+  {-# INLINE typeGType #-}
+
+noSpeechGrammar :: Maybe SpeechGrammar
+noSpeechGrammar = Nothing
+{-# INLINE noSpeechGrammar #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechGrammar\"]" gTypeSpeechGrammar :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechGrammar".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechGrammarList Mozilla SpeechGrammarList documentation>
+newtype SpeechGrammarList = SpeechGrammarList { unSpeechGrammarList :: JSVal }
+
+instance Eq (SpeechGrammarList) where
+  (SpeechGrammarList a) == (SpeechGrammarList b) = js_eq a b
+
+instance PToJSVal SpeechGrammarList where
+  pToJSVal = unSpeechGrammarList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechGrammarList where
+  pFromJSVal = SpeechGrammarList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechGrammarList where
+  toJSVal = return . unSpeechGrammarList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechGrammarList where
+  fromJSVal = return . fmap SpeechGrammarList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechGrammarList where
+  typeGType _ = gTypeSpeechGrammarList
+  {-# INLINE typeGType #-}
+
+noSpeechGrammarList :: Maybe SpeechGrammarList
+noSpeechGrammarList = Nothing
+{-# INLINE noSpeechGrammarList #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechGrammarList\"]" gTypeSpeechGrammarList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognition".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognition Mozilla SpeechRecognition documentation>
+newtype SpeechRecognition = SpeechRecognition { unSpeechRecognition :: JSVal }
+
+instance Eq (SpeechRecognition) where
+  (SpeechRecognition a) == (SpeechRecognition b) = js_eq a b
+
+instance PToJSVal SpeechRecognition where
+  pToJSVal = unSpeechRecognition
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognition where
+  pFromJSVal = SpeechRecognition
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognition where
+  toJSVal = return . unSpeechRecognition
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognition where
+  fromJSVal = return . fmap SpeechRecognition . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget SpeechRecognition
+instance IsGObject SpeechRecognition where
+  typeGType _ = gTypeSpeechRecognition
+  {-# INLINE typeGType #-}
+
+noSpeechRecognition :: Maybe SpeechRecognition
+noSpeechRecognition = Nothing
+{-# INLINE noSpeechRecognition #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognition\"]" gTypeSpeechRecognition :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionEvent Mozilla SpeechRecognition documentation>
+newtype SpeechRecognitionEvent = SpeechRecognitionEvent { unSpeechRecognitionEvent :: JSVal }
+
+instance Eq (SpeechRecognitionEvent) where
+  (SpeechRecognitionEvent a) == (SpeechRecognitionEvent b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionEvent where
+  pToJSVal = unSpeechRecognitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionEvent where
+  pFromJSVal = SpeechRecognitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionEvent where
+  toJSVal = return . unSpeechRecognitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionEvent where
+  fromJSVal = return . fmap SpeechRecognitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SpeechRecognitionEvent
+instance IsGObject SpeechRecognitionEvent where
+  typeGType _ = gTypeSpeechRecognitionEvent
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionEvent :: Maybe SpeechRecognitionEvent
+noSpeechRecognitionEvent = Nothing
+{-# INLINE noSpeechRecognitionEvent #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionEvent\"]" gTypeSpeechRecognitionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionAlternative Mozilla SpeechRecognitionAlternative documentation>
+newtype SpeechRecognitionAlternative = SpeechRecognitionAlternative { unSpeechRecognitionAlternative :: JSVal }
+
+instance Eq (SpeechRecognitionAlternative) where
+  (SpeechRecognitionAlternative a) == (SpeechRecognitionAlternative b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionAlternative where
+  pToJSVal = unSpeechRecognitionAlternative
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionAlternative where
+  pFromJSVal = SpeechRecognitionAlternative
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionAlternative where
+  toJSVal = return . unSpeechRecognitionAlternative
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionAlternative where
+  fromJSVal = return . fmap SpeechRecognitionAlternative . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionAlternative where
+  typeGType _ = gTypeSpeechRecognitionAlternative
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionAlternative :: Maybe SpeechRecognitionAlternative
+noSpeechRecognitionAlternative = Nothing
+{-# INLINE noSpeechRecognitionAlternative #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionAlternative\"]" gTypeSpeechRecognitionAlternative :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResult Mozilla SpeechRecognitionResult documentation>
+newtype SpeechRecognitionResult = SpeechRecognitionResult { unSpeechRecognitionResult :: JSVal }
+
+instance Eq (SpeechRecognitionResult) where
+  (SpeechRecognitionResult a) == (SpeechRecognitionResult b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionResult where
+  pToJSVal = unSpeechRecognitionResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionResult where
+  pFromJSVal = SpeechRecognitionResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionResult where
+  toJSVal = return . unSpeechRecognitionResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionResult where
+  fromJSVal = return . fmap SpeechRecognitionResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionResult where
+  typeGType _ = gTypeSpeechRecognitionResult
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionResult :: Maybe SpeechRecognitionResult
+noSpeechRecognitionResult = Nothing
+{-# INLINE noSpeechRecognitionResult #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionResult\"]" gTypeSpeechRecognitionResult :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionEvent".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionResultList Mozilla SpeechRecognitionResultList documentation>
+newtype SpeechRecognitionResultList = SpeechRecognitionResultList { unSpeechRecognitionResultList :: JSVal }
+
+instance Eq (SpeechRecognitionResultList) where
+  (SpeechRecognitionResultList a) == (SpeechRecognitionResultList b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionResultList where
+  pToJSVal = unSpeechRecognitionResultList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionResultList where
+  pFromJSVal = SpeechRecognitionResultList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionResultList where
+  toJSVal = return . unSpeechRecognitionResultList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionResultList where
+  fromJSVal = return . fmap SpeechRecognitionResultList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechRecognitionResultList where
+  typeGType _ = gTypeSpeechRecognitionResultList
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionResultList :: Maybe SpeechRecognitionResultList
+noSpeechRecognitionResultList = Nothing
+{-# INLINE noSpeechRecognitionResultList #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionResultList\"]" gTypeSpeechRecognitionResultList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechRecognitionError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechRecognitionError Mozilla SpeechRecognitionError documentation>
+newtype SpeechRecognitionError = SpeechRecognitionError { unSpeechRecognitionError :: JSVal }
+
+instance Eq (SpeechRecognitionError) where
+  (SpeechRecognitionError a) == (SpeechRecognitionError b) = js_eq a b
+
+instance PToJSVal SpeechRecognitionError where
+  pToJSVal = unSpeechRecognitionError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechRecognitionError where
+  pFromJSVal = SpeechRecognitionError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechRecognitionError where
+  toJSVal = return . unSpeechRecognitionError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechRecognitionError where
+  fromJSVal = return . fmap SpeechRecognitionError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SpeechRecognitionError
+instance IsGObject SpeechRecognitionError where
+  typeGType _ = gTypeSpeechRecognitionError
+  {-# INLINE typeGType #-}
+
+noSpeechRecognitionError :: Maybe SpeechRecognitionError
+noSpeechRecognitionError = Nothing
+{-# INLINE noSpeechRecognitionError #-}
+
+foreign import javascript unsafe "window[\"webkitSpeechRecognitionError\"]" gTypeSpeechRecognitionError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechSynthesis".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesis Mozilla SpeechSynthesis documentation>
+newtype SpeechSynthesis = SpeechSynthesis { unSpeechSynthesis :: JSVal }
+
+instance Eq (SpeechSynthesis) where
+  (SpeechSynthesis a) == (SpeechSynthesis b) = js_eq a b
+
+instance PToJSVal SpeechSynthesis where
+  pToJSVal = unSpeechSynthesis
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesis where
+  pFromJSVal = SpeechSynthesis
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesis where
+  toJSVal = return . unSpeechSynthesis
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesis where
+  fromJSVal = return . fmap SpeechSynthesis . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechSynthesis where
+  typeGType _ = gTypeSpeechSynthesis
+  {-# INLINE typeGType #-}
+noSpeechSynthesis :: Maybe SpeechSynthesis
+noSpeechSynthesis = Nothing
+{-# INLINE noSpeechSynthesis #-}
+
+foreign import javascript unsafe "window[\"SpeechSynthesis\"]" gTypeSpeechSynthesis :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechSynthesisEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisEvent Mozilla SpeechSynthesisEvent documentation>
+newtype SpeechSynthesisEvent = SpeechSynthesisEvent { unSpeechSynthesisEvent :: JSVal }
+
+instance Eq (SpeechSynthesisEvent) where
+  (SpeechSynthesisEvent a) == (SpeechSynthesisEvent b) = js_eq a b
+
+instance PToJSVal SpeechSynthesisEvent where
+  pToJSVal = unSpeechSynthesisEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisEvent where
+  pFromJSVal = SpeechSynthesisEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisEvent where
+  toJSVal = return . unSpeechSynthesisEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisEvent where
+  fromJSVal = return . fmap SpeechSynthesisEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent SpeechSynthesisEvent
+instance IsGObject SpeechSynthesisEvent where
+  typeGType _ = gTypeSpeechSynthesisEvent
+  {-# INLINE typeGType #-}
+noSpeechSynthesisEvent :: Maybe SpeechSynthesisEvent
+noSpeechSynthesisEvent = Nothing
+{-# INLINE noSpeechSynthesisEvent #-}
+
+foreign import javascript unsafe "window[\"SpeechSynthesisEvent\"]" gTypeSpeechSynthesisEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechSynthesisUtterance".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisUtterance Mozilla SpeechSynthesisUtterance documentation>
+newtype SpeechSynthesisUtterance = SpeechSynthesisUtterance { unSpeechSynthesisUtterance :: JSVal }
+
+instance Eq (SpeechSynthesisUtterance) where
+  (SpeechSynthesisUtterance a) == (SpeechSynthesisUtterance b) = js_eq a b
+
+instance PToJSVal SpeechSynthesisUtterance where
+  pToJSVal = unSpeechSynthesisUtterance
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisUtterance where
+  pFromJSVal = SpeechSynthesisUtterance
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisUtterance where
+  toJSVal = return . unSpeechSynthesisUtterance
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisUtterance where
+  fromJSVal = return . fmap SpeechSynthesisUtterance . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget SpeechSynthesisUtterance
+instance IsGObject SpeechSynthesisUtterance where
+  typeGType _ = gTypeSpeechSynthesisUtterance
+  {-# INLINE typeGType #-}
+noSpeechSynthesisUtterance :: Maybe SpeechSynthesisUtterance
+noSpeechSynthesisUtterance = Nothing
+{-# INLINE noSpeechSynthesisUtterance #-}
+
+foreign import javascript unsafe "window[\"SpeechSynthesisUtterance\"]" gTypeSpeechSynthesisUtterance :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SpeechSynthesisVoice".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/SpeechSynthesisVoice Mozilla SpeechSynthesisVoice documentation>
+newtype SpeechSynthesisVoice = SpeechSynthesisVoice { unSpeechSynthesisVoice :: JSVal }
+
+instance Eq (SpeechSynthesisVoice) where
+  (SpeechSynthesisVoice a) == (SpeechSynthesisVoice b) = js_eq a b
+
+instance PToJSVal SpeechSynthesisVoice where
+  pToJSVal = unSpeechSynthesisVoice
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SpeechSynthesisVoice where
+  pFromJSVal = SpeechSynthesisVoice
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SpeechSynthesisVoice where
+  toJSVal = return . unSpeechSynthesisVoice
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SpeechSynthesisVoice where
+  fromJSVal = return . fmap SpeechSynthesisVoice . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SpeechSynthesisVoice where
+  typeGType _ = gTypeSpeechSynthesisVoice
+  {-# INLINE typeGType #-}
+noSpeechSynthesisVoice :: Maybe SpeechSynthesisVoice
+noSpeechSynthesisVoice = Nothing
+{-# INLINE noSpeechSynthesisVoice #-}
+
+foreign import javascript unsafe "window[\"SpeechSynthesisVoice\"]" gTypeSpeechSynthesisVoice :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StaticRange".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StaticRange Mozilla StaticRange documentation>
+newtype StaticRange = StaticRange { unStaticRange :: JSVal }
+
+instance Eq (StaticRange) where
+  (StaticRange a) == (StaticRange b) = js_eq a b
+
+instance PToJSVal StaticRange where
+  pToJSVal = unStaticRange
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StaticRange where
+  pFromJSVal = StaticRange
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StaticRange where
+  toJSVal = return . unStaticRange
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StaticRange where
+  fromJSVal = return . fmap StaticRange . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject StaticRange where
+  typeGType _ = gTypeStaticRange
+  {-# INLINE typeGType #-}
+noStaticRange :: Maybe StaticRange
+noStaticRange = Nothing
+{-# INLINE noStaticRange #-}
+
+foreign import javascript unsafe "window[\"StaticRange\"]" gTypeStaticRange :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Storage".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Storage Mozilla Storage documentation>
+newtype Storage = Storage { unStorage :: JSVal }
+
+instance Eq (Storage) where
+  (Storage a) == (Storage b) = js_eq a b
+
+instance PToJSVal Storage where
+  pToJSVal = unStorage
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Storage where
+  pFromJSVal = Storage
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Storage where
+  toJSVal = return . unStorage
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Storage where
+  fromJSVal = return . fmap Storage . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Storage where
+  typeGType _ = gTypeStorage
+  {-# INLINE typeGType #-}
+noStorage :: Maybe Storage
+noStorage = Nothing
+{-# INLINE noStorage #-}
+
+foreign import javascript unsafe "window[\"Storage\"]" gTypeStorage :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StorageEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageEvent Mozilla StorageEvent documentation>
+newtype StorageEvent = StorageEvent { unStorageEvent :: JSVal }
+
+instance Eq (StorageEvent) where
+  (StorageEvent a) == (StorageEvent b) = js_eq a b
+
+instance PToJSVal StorageEvent where
+  pToJSVal = unStorageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageEvent where
+  pFromJSVal = StorageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageEvent where
+  toJSVal = return . unStorageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageEvent where
+  fromJSVal = return . fmap StorageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent StorageEvent
+instance IsGObject StorageEvent where
+  typeGType _ = gTypeStorageEvent
+  {-# INLINE typeGType #-}
+noStorageEvent :: Maybe StorageEvent
+noStorageEvent = Nothing
+{-# INLINE noStorageEvent #-}
+
+foreign import javascript unsafe "window[\"StorageEvent\"]" gTypeStorageEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StorageEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageEventInit Mozilla StorageEventInit documentation>
+newtype StorageEventInit = StorageEventInit { unStorageEventInit :: JSVal }
+
+instance Eq (StorageEventInit) where
+  (StorageEventInit a) == (StorageEventInit b) = js_eq a b
+
+instance PToJSVal StorageEventInit where
+  pToJSVal = unStorageEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageEventInit where
+  pFromJSVal = StorageEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageEventInit where
+  toJSVal = return . unStorageEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageEventInit where
+  fromJSVal = return . fmap StorageEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit StorageEventInit
+instance IsGObject StorageEventInit where
+  typeGType _ = gTypeStorageEventInit
+  {-# INLINE typeGType #-}
+noStorageEventInit :: Maybe StorageEventInit
+noStorageEventInit = Nothing
+{-# INLINE noStorageEventInit #-}
+
+foreign import javascript unsafe "window[\"StorageEventInit\"]" gTypeStorageEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StorageInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageInfo Mozilla StorageInfo documentation>
+newtype StorageInfo = StorageInfo { unStorageInfo :: JSVal }
+
+instance Eq (StorageInfo) where
+  (StorageInfo a) == (StorageInfo b) = js_eq a b
+
+instance PToJSVal StorageInfo where
+  pToJSVal = unStorageInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageInfo where
+  pFromJSVal = StorageInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageInfo where
+  toJSVal = return . unStorageInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageInfo where
+  fromJSVal = return . fmap StorageInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject StorageInfo where
+  typeGType _ = gTypeStorageInfo
+  {-# INLINE typeGType #-}
+noStorageInfo :: Maybe StorageInfo
+noStorageInfo = Nothing
+{-# INLINE noStorageInfo #-}
+
+foreign import javascript unsafe "window[\"StorageInfo\"]" gTypeStorageInfo :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StorageQuota".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StorageQuota Mozilla StorageQuota documentation>
+newtype StorageQuota = StorageQuota { unStorageQuota :: JSVal }
+
+instance Eq (StorageQuota) where
+  (StorageQuota a) == (StorageQuota b) = js_eq a b
+
+instance PToJSVal StorageQuota where
+  pToJSVal = unStorageQuota
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StorageQuota where
+  pFromJSVal = StorageQuota
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StorageQuota where
+  toJSVal = return . unStorageQuota
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StorageQuota where
+  fromJSVal = return . fmap StorageQuota . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject StorageQuota where
+  typeGType _ = gTypeStorageQuota
+  {-# INLINE typeGType #-}
+noStorageQuota :: Maybe StorageQuota
+noStorageQuota = Nothing
+{-# INLINE noStorageQuota #-}
+
+foreign import javascript unsafe "window[\"StorageQuota\"]" gTypeStorageQuota :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StyleMedia".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleMedia Mozilla StyleMedia documentation>
+newtype StyleMedia = StyleMedia { unStyleMedia :: JSVal }
+
+instance Eq (StyleMedia) where
+  (StyleMedia a) == (StyleMedia b) = js_eq a b
+
+instance PToJSVal StyleMedia where
+  pToJSVal = unStyleMedia
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleMedia where
+  pFromJSVal = StyleMedia
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleMedia where
+  toJSVal = return . unStyleMedia
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleMedia where
+  fromJSVal = return . fmap StyleMedia . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject StyleMedia where
+  typeGType _ = gTypeStyleMedia
+  {-# INLINE typeGType #-}
+noStyleMedia :: Maybe StyleMedia
+noStyleMedia = Nothing
+{-# INLINE noStyleMedia #-}
+
+foreign import javascript unsafe "window[\"StyleMedia\"]" gTypeStyleMedia :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StyleSheet".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheet Mozilla StyleSheet documentation>
+newtype StyleSheet = StyleSheet { unStyleSheet :: JSVal }
+
+instance Eq (StyleSheet) where
+  (StyleSheet a) == (StyleSheet b) = js_eq a b
+
+instance PToJSVal StyleSheet where
+  pToJSVal = unStyleSheet
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheet where
+  pFromJSVal = StyleSheet
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheet where
+  toJSVal = return . unStyleSheet
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheet where
+  fromJSVal = return . fmap StyleSheet . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsStyleSheet o
+toStyleSheet :: IsStyleSheet o => o -> StyleSheet
+toStyleSheet = StyleSheet . coerce
+
+instance IsStyleSheet StyleSheet
+instance IsGObject StyleSheet where
+  typeGType _ = gTypeStyleSheet
+  {-# INLINE typeGType #-}
+noStyleSheet :: Maybe StyleSheet
+noStyleSheet = Nothing
+{-# INLINE noStyleSheet #-}
+
+foreign import javascript unsafe "window[\"StyleSheet\"]" gTypeStyleSheet :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.StyleSheetList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/StyleSheetList Mozilla StyleSheetList documentation>
+newtype StyleSheetList = StyleSheetList { unStyleSheetList :: JSVal }
+
+instance Eq (StyleSheetList) where
+  (StyleSheetList a) == (StyleSheetList b) = js_eq a b
+
+instance PToJSVal StyleSheetList where
+  pToJSVal = unStyleSheetList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal StyleSheetList where
+  pFromJSVal = StyleSheetList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal StyleSheetList where
+  toJSVal = return . unStyleSheetList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal StyleSheetList where
+  fromJSVal = return . fmap StyleSheetList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject StyleSheetList where
+  typeGType _ = gTypeStyleSheetList
+  {-# INLINE typeGType #-}
+noStyleSheetList :: Maybe StyleSheetList
+noStyleSheetList = Nothing
+{-# INLINE noStyleSheetList #-}
+
+foreign import javascript unsafe "window[\"StyleSheetList\"]" gTypeStyleSheetList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.SubtleCrypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto Mozilla WebKitSubtleCrypto documentation>
+newtype SubtleCrypto = SubtleCrypto { unSubtleCrypto :: JSVal }
+
+instance Eq (SubtleCrypto) where
+  (SubtleCrypto a) == (SubtleCrypto b) = js_eq a b
+
+instance PToJSVal SubtleCrypto where
+  pToJSVal = unSubtleCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal SubtleCrypto where
+  pFromJSVal = SubtleCrypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal SubtleCrypto where
+  toJSVal = return . unSubtleCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal SubtleCrypto where
+  fromJSVal = return . fmap SubtleCrypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject SubtleCrypto where
+  typeGType _ = gTypeSubtleCrypto
+  {-# INLINE typeGType #-}
+noSubtleCrypto :: Maybe SubtleCrypto
+noSubtleCrypto = Nothing
+{-# INLINE noSubtleCrypto #-}
+
+foreign import javascript unsafe "window[\"WebKitSubtleCrypto\"]" gTypeSubtleCrypto :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Text".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CharacterData"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.NonDocumentTypeChildNode"
+--     * "GHCJS.DOM.ChildNode"
+--     * "GHCJS.DOM.Slotable"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Text Mozilla Text documentation>
+newtype Text = Text { unText :: JSVal }
+
+instance Eq (Text) where
+  (Text a) == (Text b) = js_eq a b
+
+instance PToJSVal Text where
+  pToJSVal = unText
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Text where
+  pFromJSVal = Text
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Text where
+  toJSVal = return . unText
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Text where
+  fromJSVal = return . fmap Text . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsCharacterData o, IsNode o, IsEventTarget o, IsNonDocumentTypeChildNode o, IsChildNode o, IsSlotable o, IsGObject o) => IsText o
+toText :: IsText o => o -> Text
+toText = Text . coerce
+
+instance IsText Text
+instance IsCharacterData Text
+instance IsNode Text
+instance IsEventTarget Text
+instance IsNonDocumentTypeChildNode Text
+instance IsChildNode Text
+instance IsSlotable Text
+instance IsGObject Text where
+  typeGType _ = gTypeText
+  {-# INLINE typeGType #-}
+noText :: Maybe Text
+noText = Nothing
+{-# INLINE noText #-}
+
+foreign import javascript unsafe "window[\"Text\"]" gTypeText :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextDecodeOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextDecodeOptions Mozilla TextDecodeOptions documentation>
+newtype TextDecodeOptions = TextDecodeOptions { unTextDecodeOptions :: JSVal }
+
+instance Eq (TextDecodeOptions) where
+  (TextDecodeOptions a) == (TextDecodeOptions b) = js_eq a b
+
+instance PToJSVal TextDecodeOptions where
+  pToJSVal = unTextDecodeOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextDecodeOptions where
+  pFromJSVal = TextDecodeOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextDecodeOptions where
+  toJSVal = return . unTextDecodeOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextDecodeOptions where
+  fromJSVal = return . fmap TextDecodeOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextDecodeOptions where
+  typeGType _ = gTypeTextDecodeOptions
+  {-# INLINE typeGType #-}
+noTextDecodeOptions :: Maybe TextDecodeOptions
+noTextDecodeOptions = Nothing
+{-# INLINE noTextDecodeOptions #-}
+
+foreign import javascript unsafe "window[\"TextDecodeOptions\"]" gTypeTextDecodeOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextDecoder".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoder Mozilla TextDecoder documentation>
+newtype TextDecoder = TextDecoder { unTextDecoder :: JSVal }
+
+instance Eq (TextDecoder) where
+  (TextDecoder a) == (TextDecoder b) = js_eq a b
+
+instance PToJSVal TextDecoder where
+  pToJSVal = unTextDecoder
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextDecoder where
+  pFromJSVal = TextDecoder
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextDecoder where
+  toJSVal = return . unTextDecoder
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextDecoder where
+  fromJSVal = return . fmap TextDecoder . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextDecoder where
+  typeGType _ = gTypeTextDecoder
+  {-# INLINE typeGType #-}
+noTextDecoder :: Maybe TextDecoder
+noTextDecoder = Nothing
+{-# INLINE noTextDecoder #-}
+
+foreign import javascript unsafe "window[\"TextDecoder\"]" gTypeTextDecoder :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextDecoderOptions".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextDecoderOptions Mozilla TextDecoderOptions documentation>
+newtype TextDecoderOptions = TextDecoderOptions { unTextDecoderOptions :: JSVal }
+
+instance Eq (TextDecoderOptions) where
+  (TextDecoderOptions a) == (TextDecoderOptions b) = js_eq a b
+
+instance PToJSVal TextDecoderOptions where
+  pToJSVal = unTextDecoderOptions
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextDecoderOptions where
+  pFromJSVal = TextDecoderOptions
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextDecoderOptions where
+  toJSVal = return . unTextDecoderOptions
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextDecoderOptions where
+  fromJSVal = return . fmap TextDecoderOptions . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextDecoderOptions where
+  typeGType _ = gTypeTextDecoderOptions
+  {-# INLINE typeGType #-}
+noTextDecoderOptions :: Maybe TextDecoderOptions
+noTextDecoderOptions = Nothing
+{-# INLINE noTextDecoderOptions #-}
+
+foreign import javascript unsafe "window[\"TextDecoderOptions\"]" gTypeTextDecoderOptions :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextEncoder".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextEncoder Mozilla TextEncoder documentation>
+newtype TextEncoder = TextEncoder { unTextEncoder :: JSVal }
+
+instance Eq (TextEncoder) where
+  (TextEncoder a) == (TextEncoder b) = js_eq a b
+
+instance PToJSVal TextEncoder where
+  pToJSVal = unTextEncoder
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextEncoder where
+  pFromJSVal = TextEncoder
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextEncoder where
+  toJSVal = return . unTextEncoder
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextEncoder where
+  fromJSVal = return . fmap TextEncoder . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextEncoder where
+  typeGType _ = gTypeTextEncoder
+  {-# INLINE typeGType #-}
+noTextEncoder :: Maybe TextEncoder
+noTextEncoder = Nothing
+{-# INLINE noTextEncoder #-}
+
+foreign import javascript unsafe "window[\"TextEncoder\"]" gTypeTextEncoder :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextEvent Mozilla TextEvent documentation>
+newtype TextEvent = TextEvent { unTextEvent :: JSVal }
+
+instance Eq (TextEvent) where
+  (TextEvent a) == (TextEvent b) = js_eq a b
+
+instance PToJSVal TextEvent where
+  pToJSVal = unTextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextEvent where
+  pFromJSVal = TextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextEvent where
+  toJSVal = return . unTextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextEvent where
+  fromJSVal = return . fmap TextEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent TextEvent
+instance IsEvent TextEvent
+instance IsGObject TextEvent where
+  typeGType _ = gTypeTextEvent
+  {-# INLINE typeGType #-}
+noTextEvent :: Maybe TextEvent
+noTextEvent = Nothing
+{-# INLINE noTextEvent #-}
+
+foreign import javascript unsafe "window[\"TextEvent\"]" gTypeTextEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextMetrics".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextMetrics Mozilla TextMetrics documentation>
+newtype TextMetrics = TextMetrics { unTextMetrics :: JSVal }
+
+instance Eq (TextMetrics) where
+  (TextMetrics a) == (TextMetrics b) = js_eq a b
+
+instance PToJSVal TextMetrics where
+  pToJSVal = unTextMetrics
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextMetrics where
+  pFromJSVal = TextMetrics
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextMetrics where
+  toJSVal = return . unTextMetrics
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextMetrics where
+  fromJSVal = return . fmap TextMetrics . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextMetrics where
+  typeGType _ = gTypeTextMetrics
+  {-# INLINE typeGType #-}
+noTextMetrics :: Maybe TextMetrics
+noTextMetrics = Nothing
+{-# INLINE noTextMetrics #-}
+
+foreign import javascript unsafe "window[\"TextMetrics\"]" gTypeTextMetrics :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextTrack".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrack Mozilla TextTrack documentation>
+newtype TextTrack = TextTrack { unTextTrack :: JSVal }
+
+instance Eq (TextTrack) where
+  (TextTrack a) == (TextTrack b) = js_eq a b
+
+instance PToJSVal TextTrack where
+  pToJSVal = unTextTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrack where
+  pFromJSVal = TextTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrack where
+  toJSVal = return . unTextTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrack where
+  fromJSVal = return . fmap TextTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget TextTrack
+instance IsGObject TextTrack where
+  typeGType _ = gTypeTextTrack
+  {-# INLINE typeGType #-}
+noTextTrack :: Maybe TextTrack
+noTextTrack = Nothing
+{-# INLINE noTextTrack #-}
+
+foreign import javascript unsafe "window[\"TextTrack\"]" gTypeTextTrack :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextTrackCue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCue Mozilla TextTrackCue documentation>
+newtype TextTrackCue = TextTrackCue { unTextTrackCue :: JSVal }
+
+instance Eq (TextTrackCue) where
+  (TextTrackCue a) == (TextTrackCue b) = js_eq a b
+
+instance PToJSVal TextTrackCue where
+  pToJSVal = unTextTrackCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCue where
+  pFromJSVal = TextTrackCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCue where
+  toJSVal = return . unTextTrackCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCue where
+  fromJSVal = return . fmap TextTrackCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsTextTrackCue o
+toTextTrackCue :: IsTextTrackCue o => o -> TextTrackCue
+toTextTrackCue = TextTrackCue . coerce
+
+instance IsTextTrackCue TextTrackCue
+instance IsEventTarget TextTrackCue
+instance IsGObject TextTrackCue where
+  typeGType _ = gTypeTextTrackCue
+  {-# INLINE typeGType #-}
+noTextTrackCue :: Maybe TextTrackCue
+noTextTrackCue = Nothing
+{-# INLINE noTextTrackCue #-}
+
+foreign import javascript unsafe "window[\"TextTrackCue\"]" gTypeTextTrackCue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextTrackCueList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackCueList Mozilla TextTrackCueList documentation>
+newtype TextTrackCueList = TextTrackCueList { unTextTrackCueList :: JSVal }
+
+instance Eq (TextTrackCueList) where
+  (TextTrackCueList a) == (TextTrackCueList b) = js_eq a b
+
+instance PToJSVal TextTrackCueList where
+  pToJSVal = unTextTrackCueList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackCueList where
+  pFromJSVal = TextTrackCueList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackCueList where
+  toJSVal = return . unTextTrackCueList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackCueList where
+  fromJSVal = return . fmap TextTrackCueList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TextTrackCueList where
+  typeGType _ = gTypeTextTrackCueList
+  {-# INLINE typeGType #-}
+noTextTrackCueList :: Maybe TextTrackCueList
+noTextTrackCueList = Nothing
+{-# INLINE noTextTrackCueList #-}
+
+foreign import javascript unsafe "window[\"TextTrackCueList\"]" gTypeTextTrackCueList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TextTrackList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TextTrackList Mozilla TextTrackList documentation>
+newtype TextTrackList = TextTrackList { unTextTrackList :: JSVal }
+
+instance Eq (TextTrackList) where
+  (TextTrackList a) == (TextTrackList b) = js_eq a b
+
+instance PToJSVal TextTrackList where
+  pToJSVal = unTextTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TextTrackList where
+  pFromJSVal = TextTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TextTrackList where
+  toJSVal = return . unTextTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TextTrackList where
+  fromJSVal = return . fmap TextTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget TextTrackList
+instance IsGObject TextTrackList where
+  typeGType _ = gTypeTextTrackList
+  {-# INLINE typeGType #-}
+noTextTrackList :: Maybe TextTrackList
+noTextTrackList = Nothing
+{-# INLINE noTextTrackList #-}
+
+foreign import javascript unsafe "window[\"TextTrackList\"]" gTypeTextTrackList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TimeRanges".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TimeRanges Mozilla TimeRanges documentation>
+newtype TimeRanges = TimeRanges { unTimeRanges :: JSVal }
+
+instance Eq (TimeRanges) where
+  (TimeRanges a) == (TimeRanges b) = js_eq a b
+
+instance PToJSVal TimeRanges where
+  pToJSVal = unTimeRanges
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TimeRanges where
+  pFromJSVal = TimeRanges
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TimeRanges where
+  toJSVal = return . unTimeRanges
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TimeRanges where
+  fromJSVal = return . fmap TimeRanges . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TimeRanges where
+  typeGType _ = gTypeTimeRanges
+  {-# INLINE typeGType #-}
+noTimeRanges :: Maybe TimeRanges
+noTimeRanges = Nothing
+{-# INLINE noTimeRanges #-}
+
+foreign import javascript unsafe "window[\"TimeRanges\"]" gTypeTimeRanges :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Touch".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Touch Mozilla Touch documentation>
+newtype Touch = Touch { unTouch :: JSVal }
+
+instance Eq (Touch) where
+  (Touch a) == (Touch b) = js_eq a b
+
+instance PToJSVal Touch where
+  pToJSVal = unTouch
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Touch where
+  pFromJSVal = Touch
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Touch where
+  toJSVal = return . unTouch
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Touch where
+  fromJSVal = return . fmap Touch . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject Touch where
+  typeGType _ = gTypeTouch
+  {-# INLINE typeGType #-}
+noTouch :: Maybe Touch
+noTouch = Nothing
+{-# INLINE noTouch #-}
+
+foreign import javascript unsafe "window[\"Touch\"]" gTypeTouch :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TouchEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent Mozilla TouchEvent documentation>
+newtype TouchEvent = TouchEvent { unTouchEvent :: JSVal }
+
+instance Eq (TouchEvent) where
+  (TouchEvent a) == (TouchEvent b) = js_eq a b
+
+instance PToJSVal TouchEvent where
+  pToJSVal = unTouchEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchEvent where
+  pFromJSVal = TouchEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchEvent where
+  toJSVal = return . unTouchEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchEvent where
+  fromJSVal = return . fmap TouchEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEvent TouchEvent
+instance IsEvent TouchEvent
+instance IsGObject TouchEvent where
+  typeGType _ = gTypeTouchEvent
+  {-# INLINE typeGType #-}
+noTouchEvent :: Maybe TouchEvent
+noTouchEvent = Nothing
+{-# INLINE noTouchEvent #-}
+
+foreign import javascript unsafe "window[\"TouchEvent\"]" gTypeTouchEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TouchEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchEventInit Mozilla TouchEventInit documentation>
+newtype TouchEventInit = TouchEventInit { unTouchEventInit :: JSVal }
+
+instance Eq (TouchEventInit) where
+  (TouchEventInit a) == (TouchEventInit b) = js_eq a b
+
+instance PToJSVal TouchEventInit where
+  pToJSVal = unTouchEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchEventInit where
+  pFromJSVal = TouchEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchEventInit where
+  toJSVal = return . unTouchEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchEventInit where
+  fromJSVal = return . fmap TouchEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsUIEventInit TouchEventInit
+instance IsEventInit TouchEventInit
+instance IsGObject TouchEventInit where
+  typeGType _ = gTypeTouchEventInit
+  {-# INLINE typeGType #-}
+noTouchEventInit :: Maybe TouchEventInit
+noTouchEventInit = Nothing
+{-# INLINE noTouchEventInit #-}
+
+foreign import javascript unsafe "window[\"TouchEventInit\"]" gTypeTouchEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TouchList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TouchList Mozilla TouchList documentation>
+newtype TouchList = TouchList { unTouchList :: JSVal }
+
+instance Eq (TouchList) where
+  (TouchList a) == (TouchList b) = js_eq a b
+
+instance PToJSVal TouchList where
+  pToJSVal = unTouchList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TouchList where
+  pFromJSVal = TouchList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TouchList where
+  toJSVal = return . unTouchList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TouchList where
+  fromJSVal = return . fmap TouchList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TouchList where
+  typeGType _ = gTypeTouchList
+  {-# INLINE typeGType #-}
+noTouchList :: Maybe TouchList
+noTouchList = Nothing
+{-# INLINE noTouchList #-}
+
+foreign import javascript unsafe "window[\"TouchList\"]" gTypeTouchList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TrackEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TrackEvent Mozilla TrackEvent documentation>
+newtype TrackEvent = TrackEvent { unTrackEvent :: JSVal }
+
+instance Eq (TrackEvent) where
+  (TrackEvent a) == (TrackEvent b) = js_eq a b
+
+instance PToJSVal TrackEvent where
+  pToJSVal = unTrackEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TrackEvent where
+  pFromJSVal = TrackEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TrackEvent where
+  toJSVal = return . unTrackEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TrackEvent where
+  fromJSVal = return . fmap TrackEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent TrackEvent
+instance IsGObject TrackEvent where
+  typeGType _ = gTypeTrackEvent
+  {-# INLINE typeGType #-}
+noTrackEvent :: Maybe TrackEvent
+noTrackEvent = Nothing
+{-# INLINE noTrackEvent #-}
+
+foreign import javascript unsafe "window[\"TrackEvent\"]" gTypeTrackEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TrackEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TrackEventInit Mozilla TrackEventInit documentation>
+newtype TrackEventInit = TrackEventInit { unTrackEventInit :: JSVal }
+
+instance Eq (TrackEventInit) where
+  (TrackEventInit a) == (TrackEventInit b) = js_eq a b
+
+instance PToJSVal TrackEventInit where
+  pToJSVal = unTrackEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TrackEventInit where
+  pFromJSVal = TrackEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TrackEventInit where
+  toJSVal = return . unTrackEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TrackEventInit where
+  fromJSVal = return . fmap TrackEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit TrackEventInit
+instance IsGObject TrackEventInit where
+  typeGType _ = gTypeTrackEventInit
+  {-# INLINE typeGType #-}
+noTrackEventInit :: Maybe TrackEventInit
+noTrackEventInit = Nothing
+{-# INLINE noTrackEventInit #-}
+
+foreign import javascript unsafe "window[\"TrackEventInit\"]" gTypeTrackEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TransitionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent Mozilla TransitionEvent documentation>
+newtype TransitionEvent = TransitionEvent { unTransitionEvent :: JSVal }
+
+instance Eq (TransitionEvent) where
+  (TransitionEvent a) == (TransitionEvent b) = js_eq a b
+
+instance PToJSVal TransitionEvent where
+  pToJSVal = unTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TransitionEvent where
+  pFromJSVal = TransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TransitionEvent where
+  toJSVal = return . unTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TransitionEvent where
+  fromJSVal = return . fmap TransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent TransitionEvent
+instance IsGObject TransitionEvent where
+  typeGType _ = gTypeTransitionEvent
+  {-# INLINE typeGType #-}
+noTransitionEvent :: Maybe TransitionEvent
+noTransitionEvent = Nothing
+{-# INLINE noTransitionEvent #-}
+
+foreign import javascript unsafe "window[\"TransitionEvent\"]" gTypeTransitionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TransitionEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TransitionEventInit Mozilla TransitionEventInit documentation>
+newtype TransitionEventInit = TransitionEventInit { unTransitionEventInit :: JSVal }
+
+instance Eq (TransitionEventInit) where
+  (TransitionEventInit a) == (TransitionEventInit b) = js_eq a b
+
+instance PToJSVal TransitionEventInit where
+  pToJSVal = unTransitionEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TransitionEventInit where
+  pFromJSVal = TransitionEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TransitionEventInit where
+  toJSVal = return . unTransitionEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TransitionEventInit where
+  fromJSVal = return . fmap TransitionEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit TransitionEventInit
+instance IsGObject TransitionEventInit where
+  typeGType _ = gTypeTransitionEventInit
+  {-# INLINE typeGType #-}
+noTransitionEventInit :: Maybe TransitionEventInit
+noTransitionEventInit = Nothing
+{-# INLINE noTransitionEventInit #-}
+
+foreign import javascript unsafe "window[\"TransitionEventInit\"]" gTypeTransitionEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.TreeWalker".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/TreeWalker Mozilla TreeWalker documentation>
+newtype TreeWalker = TreeWalker { unTreeWalker :: JSVal }
+
+instance Eq (TreeWalker) where
+  (TreeWalker a) == (TreeWalker b) = js_eq a b
+
+instance PToJSVal TreeWalker where
+  pToJSVal = unTreeWalker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal TreeWalker where
+  pFromJSVal = TreeWalker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal TreeWalker where
+  toJSVal = return . unTreeWalker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal TreeWalker where
+  fromJSVal = return . fmap TreeWalker . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject TreeWalker where
+  typeGType _ = gTypeTreeWalker
+  {-# INLINE typeGType #-}
+noTreeWalker :: Maybe TreeWalker
+noTreeWalker = Nothing
+{-# INLINE noTreeWalker #-}
+
+foreign import javascript unsafe "window[\"TreeWalker\"]" gTypeTreeWalker :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.UIEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIEvent Mozilla UIEvent documentation>
+newtype UIEvent = UIEvent { unUIEvent :: JSVal }
+
+instance Eq (UIEvent) where
+  (UIEvent a) == (UIEvent b) = js_eq a b
+
+instance PToJSVal UIEvent where
+  pToJSVal = unUIEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIEvent where
+  pFromJSVal = UIEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIEvent where
+  toJSVal = return . unUIEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIEvent where
+  fromJSVal = return . fmap UIEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEvent o, IsGObject o) => IsUIEvent o
+toUIEvent :: IsUIEvent o => o -> UIEvent
+toUIEvent = UIEvent . coerce
+
+instance IsUIEvent UIEvent
+instance IsEvent UIEvent
+instance IsGObject UIEvent where
+  typeGType _ = gTypeUIEvent
+  {-# INLINE typeGType #-}
+noUIEvent :: Maybe UIEvent
+noUIEvent = Nothing
+{-# INLINE noUIEvent #-}
+
+foreign import javascript unsafe "window[\"UIEvent\"]" gTypeUIEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.UIEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UIEventInit Mozilla UIEventInit documentation>
+newtype UIEventInit = UIEventInit { unUIEventInit :: JSVal }
+
+instance Eq (UIEventInit) where
+  (UIEventInit a) == (UIEventInit b) = js_eq a b
+
+instance PToJSVal UIEventInit where
+  pToJSVal = unUIEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UIEventInit where
+  pFromJSVal = UIEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UIEventInit where
+  toJSVal = return . unUIEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UIEventInit where
+  fromJSVal = return . fmap UIEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventInit o, IsGObject o) => IsUIEventInit o
+toUIEventInit :: IsUIEventInit o => o -> UIEventInit
+toUIEventInit = UIEventInit . coerce
+
+instance IsUIEventInit UIEventInit
+instance IsEventInit UIEventInit
+instance IsGObject UIEventInit where
+  typeGType _ = gTypeUIEventInit
+  {-# INLINE typeGType #-}
+noUIEventInit :: Maybe UIEventInit
+noUIEventInit = Nothing
+{-# INLINE noUIEventInit #-}
+
+foreign import javascript unsafe "window[\"UIEventInit\"]" gTypeUIEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.URL".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URL Mozilla URL documentation>
+newtype URL = URL { unURL :: JSVal }
+
+instance Eq (URL) where
+  (URL a) == (URL b) = js_eq a b
+
+instance PToJSVal URL where
+  pToJSVal = unURL
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URL where
+  pFromJSVal = URL
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URL where
+  toJSVal = return . unURL
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URL where
+  fromJSVal = return . fmap URL . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject URL where
+  typeGType _ = gTypeURL
+  {-# INLINE typeGType #-}
+noURL :: Maybe URL
+noURL = Nothing
+{-# INLINE noURL #-}
+
+foreign import javascript unsafe "window[\"URL\"]" gTypeURL :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.URLSearchParams".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams Mozilla URLSearchParams documentation>
+newtype URLSearchParams = URLSearchParams { unURLSearchParams :: JSVal }
+
+instance Eq (URLSearchParams) where
+  (URLSearchParams a) == (URLSearchParams b) = js_eq a b
+
+instance PToJSVal URLSearchParams where
+  pToJSVal = unURLSearchParams
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal URLSearchParams where
+  pFromJSVal = URLSearchParams
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal URLSearchParams where
+  toJSVal = return . unURLSearchParams
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal URLSearchParams where
+  fromJSVal = return . fmap URLSearchParams . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject URLSearchParams where
+  typeGType _ = gTypeURLSearchParams
+  {-# INLINE typeGType #-}
+noURLSearchParams :: Maybe URLSearchParams
+noURLSearchParams = Nothing
+{-# INLINE noURLSearchParams #-}
+
+foreign import javascript unsafe "window[\"URLSearchParams\"]" gTypeURLSearchParams :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.UserMessageHandler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandler Mozilla UserMessageHandler documentation>
+newtype UserMessageHandler = UserMessageHandler { unUserMessageHandler :: JSVal }
+
+instance Eq (UserMessageHandler) where
+  (UserMessageHandler a) == (UserMessageHandler b) = js_eq a b
+
+instance PToJSVal UserMessageHandler where
+  pToJSVal = unUserMessageHandler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandler where
+  pFromJSVal = UserMessageHandler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandler where
+  toJSVal = return . unUserMessageHandler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandler where
+  fromJSVal = return . fmap UserMessageHandler . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject UserMessageHandler where
+  typeGType _ = gTypeUserMessageHandler
+  {-# INLINE typeGType #-}
+noUserMessageHandler :: Maybe UserMessageHandler
+noUserMessageHandler = Nothing
+{-# INLINE noUserMessageHandler #-}
+
+foreign import javascript unsafe "window[\"UserMessageHandler\"]" gTypeUserMessageHandler :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.UserMessageHandlersNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/UserMessageHandlersNamespace Mozilla UserMessageHandlersNamespace documentation>
+newtype UserMessageHandlersNamespace = UserMessageHandlersNamespace { unUserMessageHandlersNamespace :: JSVal }
+
+instance Eq (UserMessageHandlersNamespace) where
+  (UserMessageHandlersNamespace a) == (UserMessageHandlersNamespace b) = js_eq a b
+
+instance PToJSVal UserMessageHandlersNamespace where
+  pToJSVal = unUserMessageHandlersNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal UserMessageHandlersNamespace where
+  pFromJSVal = UserMessageHandlersNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal UserMessageHandlersNamespace where
+  toJSVal = return . unUserMessageHandlersNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal UserMessageHandlersNamespace where
+  fromJSVal = return . fmap UserMessageHandlersNamespace . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject UserMessageHandlersNamespace where
+  typeGType _ = gTypeUserMessageHandlersNamespace
+  {-# INLINE typeGType #-}
+noUserMessageHandlersNamespace :: Maybe UserMessageHandlersNamespace
+noUserMessageHandlersNamespace = Nothing
+{-# INLINE noUserMessageHandlersNamespace #-}
+
+foreign import javascript unsafe "window[\"UserMessageHandlersNamespace\"]" gTypeUserMessageHandlersNamespace :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VTTCue".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.TextTrackCue"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTCue Mozilla VTTCue documentation>
+newtype VTTCue = VTTCue { unVTTCue :: JSVal }
+
+instance Eq (VTTCue) where
+  (VTTCue a) == (VTTCue b) = js_eq a b
+
+instance PToJSVal VTTCue where
+  pToJSVal = unVTTCue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTCue where
+  pFromJSVal = VTTCue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTCue where
+  toJSVal = return . unVTTCue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTCue where
+  fromJSVal = return . fmap VTTCue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsTextTrackCue VTTCue
+instance IsEventTarget VTTCue
+instance IsGObject VTTCue where
+  typeGType _ = gTypeVTTCue
+  {-# INLINE typeGType #-}
+noVTTCue :: Maybe VTTCue
+noVTTCue = Nothing
+{-# INLINE noVTTCue #-}
+
+foreign import javascript unsafe "window[\"VTTCue\"]" gTypeVTTCue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VTTRegion".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegion Mozilla VTTRegion documentation>
+newtype VTTRegion = VTTRegion { unVTTRegion :: JSVal }
+
+instance Eq (VTTRegion) where
+  (VTTRegion a) == (VTTRegion b) = js_eq a b
+
+instance PToJSVal VTTRegion where
+  pToJSVal = unVTTRegion
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegion where
+  pFromJSVal = VTTRegion
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegion where
+  toJSVal = return . unVTTRegion
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegion where
+  fromJSVal = return . fmap VTTRegion . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject VTTRegion where
+  typeGType _ = gTypeVTTRegion
+  {-# INLINE typeGType #-}
+noVTTRegion :: Maybe VTTRegion
+noVTTRegion = Nothing
+{-# INLINE noVTTRegion #-}
+
+foreign import javascript unsafe "window[\"VTTRegion\"]" gTypeVTTRegion :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VTTRegionList".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VTTRegionList Mozilla VTTRegionList documentation>
+newtype VTTRegionList = VTTRegionList { unVTTRegionList :: JSVal }
+
+instance Eq (VTTRegionList) where
+  (VTTRegionList a) == (VTTRegionList b) = js_eq a b
+
+instance PToJSVal VTTRegionList where
+  pToJSVal = unVTTRegionList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VTTRegionList where
+  pFromJSVal = VTTRegionList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VTTRegionList where
+  toJSVal = return . unVTTRegionList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VTTRegionList where
+  fromJSVal = return . fmap VTTRegionList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject VTTRegionList where
+  typeGType _ = gTypeVTTRegionList
+  {-# INLINE typeGType #-}
+noVTTRegionList :: Maybe VTTRegionList
+noVTTRegionList = Nothing
+{-# INLINE noVTTRegionList #-}
+
+foreign import javascript unsafe "window[\"VTTRegionList\"]" gTypeVTTRegionList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.ValidityState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/ValidityState Mozilla ValidityState documentation>
+newtype ValidityState = ValidityState { unValidityState :: JSVal }
+
+instance Eq (ValidityState) where
+  (ValidityState a) == (ValidityState b) = js_eq a b
+
+instance PToJSVal ValidityState where
+  pToJSVal = unValidityState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal ValidityState where
+  pFromJSVal = ValidityState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal ValidityState where
+  toJSVal = return . unValidityState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal ValidityState where
+  fromJSVal = return . fmap ValidityState . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject ValidityState where
+  typeGType _ = gTypeValidityState
+  {-# INLINE typeGType #-}
+noValidityState :: Maybe ValidityState
+noValidityState = Nothing
+{-# INLINE noValidityState #-}
+
+foreign import javascript unsafe "window[\"ValidityState\"]" gTypeValidityState :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VideoPlaybackQuality".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoPlaybackQuality Mozilla VideoPlaybackQuality documentation>
+newtype VideoPlaybackQuality = VideoPlaybackQuality { unVideoPlaybackQuality :: JSVal }
+
+instance Eq (VideoPlaybackQuality) where
+  (VideoPlaybackQuality a) == (VideoPlaybackQuality b) = js_eq a b
+
+instance PToJSVal VideoPlaybackQuality where
+  pToJSVal = unVideoPlaybackQuality
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoPlaybackQuality where
+  pFromJSVal = VideoPlaybackQuality
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoPlaybackQuality where
+  toJSVal = return . unVideoPlaybackQuality
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoPlaybackQuality where
+  fromJSVal = return . fmap VideoPlaybackQuality . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject VideoPlaybackQuality where
+  typeGType _ = gTypeVideoPlaybackQuality
+  {-# INLINE typeGType #-}
+noVideoPlaybackQuality :: Maybe VideoPlaybackQuality
+noVideoPlaybackQuality = Nothing
+{-# INLINE noVideoPlaybackQuality #-}
+
+foreign import javascript unsafe "window[\"VideoPlaybackQuality\"]" gTypeVideoPlaybackQuality :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VideoTrack".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrack Mozilla VideoTrack documentation>
+newtype VideoTrack = VideoTrack { unVideoTrack :: JSVal }
+
+instance Eq (VideoTrack) where
+  (VideoTrack a) == (VideoTrack b) = js_eq a b
+
+instance PToJSVal VideoTrack where
+  pToJSVal = unVideoTrack
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrack where
+  pFromJSVal = VideoTrack
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrack where
+  toJSVal = return . unVideoTrack
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrack where
+  fromJSVal = return . fmap VideoTrack . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject VideoTrack where
+  typeGType _ = gTypeVideoTrack
+  {-# INLINE typeGType #-}
+noVideoTrack :: Maybe VideoTrack
+noVideoTrack = Nothing
+{-# INLINE noVideoTrack #-}
+
+foreign import javascript unsafe "window[\"VideoTrack\"]" gTypeVideoTrack :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.VideoTrackList".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/VideoTrackList Mozilla VideoTrackList documentation>
+newtype VideoTrackList = VideoTrackList { unVideoTrackList :: JSVal }
+
+instance Eq (VideoTrackList) where
+  (VideoTrackList a) == (VideoTrackList b) = js_eq a b
+
+instance PToJSVal VideoTrackList where
+  pToJSVal = unVideoTrackList
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal VideoTrackList where
+  pFromJSVal = VideoTrackList
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal VideoTrackList where
+  toJSVal = return . unVideoTrackList
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal VideoTrackList where
+  fromJSVal = return . fmap VideoTrackList . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget VideoTrackList
+instance IsGObject VideoTrackList where
+  typeGType _ = gTypeVideoTrackList
+  {-# INLINE typeGType #-}
+noVideoTrackList :: Maybe VideoTrackList
+noVideoTrackList = Nothing
+{-# INLINE noVideoTrackList #-}
+
+foreign import javascript unsafe "window[\"VideoTrackList\"]" gTypeVideoTrackList :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WaveShaperNode".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.AudioNode"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WaveShaperNode Mozilla WaveShaperNode documentation>
+newtype WaveShaperNode = WaveShaperNode { unWaveShaperNode :: JSVal }
+
+instance Eq (WaveShaperNode) where
+  (WaveShaperNode a) == (WaveShaperNode b) = js_eq a b
+
+instance PToJSVal WaveShaperNode where
+  pToJSVal = unWaveShaperNode
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WaveShaperNode where
+  pFromJSVal = WaveShaperNode
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WaveShaperNode where
+  toJSVal = return . unWaveShaperNode
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WaveShaperNode where
+  fromJSVal = return . fmap WaveShaperNode . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsAudioNode WaveShaperNode
+instance IsEventTarget WaveShaperNode
+instance IsGObject WaveShaperNode where
+  typeGType _ = gTypeWaveShaperNode
+  {-# INLINE typeGType #-}
+noWaveShaperNode :: Maybe WaveShaperNode
+noWaveShaperNode = Nothing
+{-# INLINE noWaveShaperNode #-}
+
+foreign import javascript unsafe "window[\"WaveShaperNode\"]" gTypeWaveShaperNode :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGL2RenderingContext".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.WebGLRenderingContextBase"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGL2RenderingContext Mozilla WebGL2RenderingContext documentation>
+newtype WebGL2RenderingContext = WebGL2RenderingContext { unWebGL2RenderingContext :: JSVal }
+
+instance Eq (WebGL2RenderingContext) where
+  (WebGL2RenderingContext a) == (WebGL2RenderingContext b) = js_eq a b
+
+instance PToJSVal WebGL2RenderingContext where
+  pToJSVal = unWebGL2RenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGL2RenderingContext where
+  pFromJSVal = WebGL2RenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGL2RenderingContext where
+  toJSVal = return . unWebGL2RenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGL2RenderingContext where
+  fromJSVal = return . fmap WebGL2RenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsWebGLRenderingContextBase WebGL2RenderingContext
+instance IsGObject WebGL2RenderingContext where
+  typeGType _ = gTypeWebGL2RenderingContext
+  {-# INLINE typeGType #-}
+noWebGL2RenderingContext :: Maybe WebGL2RenderingContext
+noWebGL2RenderingContext = Nothing
+{-# INLINE noWebGL2RenderingContext #-}
+
+foreign import javascript unsafe "window[\"WebGL2RenderingContext\"]" gTypeWebGL2RenderingContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLActiveInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLActiveInfo Mozilla WebGLActiveInfo documentation>
+newtype WebGLActiveInfo = WebGLActiveInfo { unWebGLActiveInfo :: JSVal }
+
+instance Eq (WebGLActiveInfo) where
+  (WebGLActiveInfo a) == (WebGLActiveInfo b) = js_eq a b
+
+instance PToJSVal WebGLActiveInfo where
+  pToJSVal = unWebGLActiveInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLActiveInfo where
+  pFromJSVal = WebGLActiveInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLActiveInfo where
+  toJSVal = return . unWebGLActiveInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLActiveInfo where
+  fromJSVal = return . fmap WebGLActiveInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLActiveInfo where
+  typeGType _ = gTypeWebGLActiveInfo
+  {-# INLINE typeGType #-}
+noWebGLActiveInfo :: Maybe WebGLActiveInfo
+noWebGLActiveInfo = Nothing
+{-# INLINE noWebGLActiveInfo #-}
+
+foreign import javascript unsafe "window[\"WebGLActiveInfo\"]" gTypeWebGLActiveInfo :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer Mozilla WebGLBuffer documentation>
+newtype WebGLBuffer = WebGLBuffer { unWebGLBuffer :: JSVal }
+
+instance Eq (WebGLBuffer) where
+  (WebGLBuffer a) == (WebGLBuffer b) = js_eq a b
+
+instance PToJSVal WebGLBuffer where
+  pToJSVal = unWebGLBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLBuffer where
+  pFromJSVal = WebGLBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLBuffer where
+  toJSVal = return . unWebGLBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLBuffer where
+  fromJSVal = return . fmap WebGLBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLBuffer where
+  typeGType _ = gTypeWebGLBuffer
+  {-# INLINE typeGType #-}
+noWebGLBuffer :: Maybe WebGLBuffer
+noWebGLBuffer = Nothing
+{-# INLINE noWebGLBuffer #-}
+
+foreign import javascript unsafe "window[\"WebGLBuffer\"]" gTypeWebGLBuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLCompressedTextureATC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureATC Mozilla WebGLCompressedTextureATC documentation>
+newtype WebGLCompressedTextureATC = WebGLCompressedTextureATC { unWebGLCompressedTextureATC :: JSVal }
+
+instance Eq (WebGLCompressedTextureATC) where
+  (WebGLCompressedTextureATC a) == (WebGLCompressedTextureATC b) = js_eq a b
+
+instance PToJSVal WebGLCompressedTextureATC where
+  pToJSVal = unWebGLCompressedTextureATC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureATC where
+  pFromJSVal = WebGLCompressedTextureATC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureATC where
+  toJSVal = return . unWebGLCompressedTextureATC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureATC where
+  fromJSVal = return . fmap WebGLCompressedTextureATC . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLCompressedTextureATC where
+  typeGType _ = gTypeWebGLCompressedTextureATC
+  {-# INLINE typeGType #-}
+noWebGLCompressedTextureATC :: Maybe WebGLCompressedTextureATC
+noWebGLCompressedTextureATC = Nothing
+{-# INLINE noWebGLCompressedTextureATC #-}
+
+foreign import javascript unsafe "window[\"WebGLCompressedTextureATC\"]" gTypeWebGLCompressedTextureATC :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLCompressedTexturePVRTC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTexturePVRTC Mozilla WebGLCompressedTexturePVRTC documentation>
+newtype WebGLCompressedTexturePVRTC = WebGLCompressedTexturePVRTC { unWebGLCompressedTexturePVRTC :: JSVal }
+
+instance Eq (WebGLCompressedTexturePVRTC) where
+  (WebGLCompressedTexturePVRTC a) == (WebGLCompressedTexturePVRTC b) = js_eq a b
+
+instance PToJSVal WebGLCompressedTexturePVRTC where
+  pToJSVal = unWebGLCompressedTexturePVRTC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTexturePVRTC where
+  pFromJSVal = WebGLCompressedTexturePVRTC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTexturePVRTC where
+  toJSVal = return . unWebGLCompressedTexturePVRTC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTexturePVRTC where
+  fromJSVal = return . fmap WebGLCompressedTexturePVRTC . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLCompressedTexturePVRTC where
+  typeGType _ = gTypeWebGLCompressedTexturePVRTC
+  {-# INLINE typeGType #-}
+noWebGLCompressedTexturePVRTC :: Maybe WebGLCompressedTexturePVRTC
+noWebGLCompressedTexturePVRTC = Nothing
+{-# INLINE noWebGLCompressedTexturePVRTC #-}
+
+foreign import javascript unsafe "window[\"WebGLCompressedTexturePVRTC\"]" gTypeWebGLCompressedTexturePVRTC :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLCompressedTextureS3TC".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLCompressedTextureS3TC Mozilla WebGLCompressedTextureS3TC documentation>
+newtype WebGLCompressedTextureS3TC = WebGLCompressedTextureS3TC { unWebGLCompressedTextureS3TC :: JSVal }
+
+instance Eq (WebGLCompressedTextureS3TC) where
+  (WebGLCompressedTextureS3TC a) == (WebGLCompressedTextureS3TC b) = js_eq a b
+
+instance PToJSVal WebGLCompressedTextureS3TC where
+  pToJSVal = unWebGLCompressedTextureS3TC
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLCompressedTextureS3TC where
+  pFromJSVal = WebGLCompressedTextureS3TC
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLCompressedTextureS3TC where
+  toJSVal = return . unWebGLCompressedTextureS3TC
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLCompressedTextureS3TC where
+  fromJSVal = return . fmap WebGLCompressedTextureS3TC . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLCompressedTextureS3TC where
+  typeGType _ = gTypeWebGLCompressedTextureS3TC
+  {-# INLINE typeGType #-}
+noWebGLCompressedTextureS3TC :: Maybe WebGLCompressedTextureS3TC
+noWebGLCompressedTextureS3TC = Nothing
+{-# INLINE noWebGLCompressedTextureS3TC #-}
+
+foreign import javascript unsafe "window[\"WebGLCompressedTextureS3TC\"]" gTypeWebGLCompressedTextureS3TC :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLContextAttributes".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextAttributes Mozilla WebGLContextAttributes documentation>
+newtype WebGLContextAttributes = WebGLContextAttributes { unWebGLContextAttributes :: JSVal }
+
+instance Eq (WebGLContextAttributes) where
+  (WebGLContextAttributes a) == (WebGLContextAttributes b) = js_eq a b
+
+instance PToJSVal WebGLContextAttributes where
+  pToJSVal = unWebGLContextAttributes
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextAttributes where
+  pFromJSVal = WebGLContextAttributes
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextAttributes where
+  toJSVal = return . unWebGLContextAttributes
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextAttributes where
+  fromJSVal = return . fmap WebGLContextAttributes . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLContextAttributes where
+  typeGType _ = gTypeWebGLContextAttributes
+  {-# INLINE typeGType #-}
+noWebGLContextAttributes :: Maybe WebGLContextAttributes
+noWebGLContextAttributes = Nothing
+{-# INLINE noWebGLContextAttributes #-}
+
+foreign import javascript unsafe "window[\"WebGLContextAttributes\"]" gTypeWebGLContextAttributes :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLContextEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEvent Mozilla WebGLContextEvent documentation>
+newtype WebGLContextEvent = WebGLContextEvent { unWebGLContextEvent :: JSVal }
+
+instance Eq (WebGLContextEvent) where
+  (WebGLContextEvent a) == (WebGLContextEvent b) = js_eq a b
+
+instance PToJSVal WebGLContextEvent where
+  pToJSVal = unWebGLContextEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextEvent where
+  pFromJSVal = WebGLContextEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextEvent where
+  toJSVal = return . unWebGLContextEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextEvent where
+  fromJSVal = return . fmap WebGLContextEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebGLContextEvent
+instance IsGObject WebGLContextEvent where
+  typeGType _ = gTypeWebGLContextEvent
+  {-# INLINE typeGType #-}
+noWebGLContextEvent :: Maybe WebGLContextEvent
+noWebGLContextEvent = Nothing
+{-# INLINE noWebGLContextEvent #-}
+
+foreign import javascript unsafe "window[\"WebGLContextEvent\"]" gTypeWebGLContextEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLContextEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLContextEventInit Mozilla WebGLContextEventInit documentation>
+newtype WebGLContextEventInit = WebGLContextEventInit { unWebGLContextEventInit :: JSVal }
+
+instance Eq (WebGLContextEventInit) where
+  (WebGLContextEventInit a) == (WebGLContextEventInit b) = js_eq a b
+
+instance PToJSVal WebGLContextEventInit where
+  pToJSVal = unWebGLContextEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLContextEventInit where
+  pFromJSVal = WebGLContextEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLContextEventInit where
+  toJSVal = return . unWebGLContextEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLContextEventInit where
+  fromJSVal = return . fmap WebGLContextEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebGLContextEventInit
+instance IsGObject WebGLContextEventInit where
+  typeGType _ = gTypeWebGLContextEventInit
+  {-# INLINE typeGType #-}
+noWebGLContextEventInit :: Maybe WebGLContextEventInit
+noWebGLContextEventInit = Nothing
+{-# INLINE noWebGLContextEventInit #-}
+
+foreign import javascript unsafe "window[\"WebGLContextEventInit\"]" gTypeWebGLContextEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLDebugRendererInfo".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugRendererInfo Mozilla WebGLDebugRendererInfo documentation>
+newtype WebGLDebugRendererInfo = WebGLDebugRendererInfo { unWebGLDebugRendererInfo :: JSVal }
+
+instance Eq (WebGLDebugRendererInfo) where
+  (WebGLDebugRendererInfo a) == (WebGLDebugRendererInfo b) = js_eq a b
+
+instance PToJSVal WebGLDebugRendererInfo where
+  pToJSVal = unWebGLDebugRendererInfo
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugRendererInfo where
+  pFromJSVal = WebGLDebugRendererInfo
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugRendererInfo where
+  toJSVal = return . unWebGLDebugRendererInfo
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugRendererInfo where
+  fromJSVal = return . fmap WebGLDebugRendererInfo . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLDebugRendererInfo where
+  typeGType _ = gTypeWebGLDebugRendererInfo
+  {-# INLINE typeGType #-}
+noWebGLDebugRendererInfo :: Maybe WebGLDebugRendererInfo
+noWebGLDebugRendererInfo = Nothing
+{-# INLINE noWebGLDebugRendererInfo #-}
+
+foreign import javascript unsafe "window[\"WebGLDebugRendererInfo\"]" gTypeWebGLDebugRendererInfo :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLDebugShaders".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDebugShaders Mozilla WebGLDebugShaders documentation>
+newtype WebGLDebugShaders = WebGLDebugShaders { unWebGLDebugShaders :: JSVal }
+
+instance Eq (WebGLDebugShaders) where
+  (WebGLDebugShaders a) == (WebGLDebugShaders b) = js_eq a b
+
+instance PToJSVal WebGLDebugShaders where
+  pToJSVal = unWebGLDebugShaders
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDebugShaders where
+  pFromJSVal = WebGLDebugShaders
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDebugShaders where
+  toJSVal = return . unWebGLDebugShaders
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDebugShaders where
+  fromJSVal = return . fmap WebGLDebugShaders . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLDebugShaders where
+  typeGType _ = gTypeWebGLDebugShaders
+  {-# INLINE typeGType #-}
+noWebGLDebugShaders :: Maybe WebGLDebugShaders
+noWebGLDebugShaders = Nothing
+{-# INLINE noWebGLDebugShaders #-}
+
+foreign import javascript unsafe "window[\"WebGLDebugShaders\"]" gTypeWebGLDebugShaders :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLDepthTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDepthTexture Mozilla WebGLDepthTexture documentation>
+newtype WebGLDepthTexture = WebGLDepthTexture { unWebGLDepthTexture :: JSVal }
+
+instance Eq (WebGLDepthTexture) where
+  (WebGLDepthTexture a) == (WebGLDepthTexture b) = js_eq a b
+
+instance PToJSVal WebGLDepthTexture where
+  pToJSVal = unWebGLDepthTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDepthTexture where
+  pFromJSVal = WebGLDepthTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDepthTexture where
+  toJSVal = return . unWebGLDepthTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDepthTexture where
+  fromJSVal = return . fmap WebGLDepthTexture . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLDepthTexture where
+  typeGType _ = gTypeWebGLDepthTexture
+  {-# INLINE typeGType #-}
+noWebGLDepthTexture :: Maybe WebGLDepthTexture
+noWebGLDepthTexture = Nothing
+{-# INLINE noWebGLDepthTexture #-}
+
+foreign import javascript unsafe "window[\"WebGLDepthTexture\"]" gTypeWebGLDepthTexture :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLDrawBuffers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLDrawBuffers Mozilla WebGLDrawBuffers documentation>
+newtype WebGLDrawBuffers = WebGLDrawBuffers { unWebGLDrawBuffers :: JSVal }
+
+instance Eq (WebGLDrawBuffers) where
+  (WebGLDrawBuffers a) == (WebGLDrawBuffers b) = js_eq a b
+
+instance PToJSVal WebGLDrawBuffers where
+  pToJSVal = unWebGLDrawBuffers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLDrawBuffers where
+  pFromJSVal = WebGLDrawBuffers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLDrawBuffers where
+  toJSVal = return . unWebGLDrawBuffers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLDrawBuffers where
+  fromJSVal = return . fmap WebGLDrawBuffers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLDrawBuffers where
+  typeGType _ = gTypeWebGLDrawBuffers
+  {-# INLINE typeGType #-}
+noWebGLDrawBuffers :: Maybe WebGLDrawBuffers
+noWebGLDrawBuffers = Nothing
+{-# INLINE noWebGLDrawBuffers #-}
+
+foreign import javascript unsafe "window[\"WebGLDrawBuffers\"]" gTypeWebGLDrawBuffers :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLFramebuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLFramebuffer Mozilla WebGLFramebuffer documentation>
+newtype WebGLFramebuffer = WebGLFramebuffer { unWebGLFramebuffer :: JSVal }
+
+instance Eq (WebGLFramebuffer) where
+  (WebGLFramebuffer a) == (WebGLFramebuffer b) = js_eq a b
+
+instance PToJSVal WebGLFramebuffer where
+  pToJSVal = unWebGLFramebuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLFramebuffer where
+  pFromJSVal = WebGLFramebuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLFramebuffer where
+  toJSVal = return . unWebGLFramebuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLFramebuffer where
+  fromJSVal = return . fmap WebGLFramebuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLFramebuffer where
+  typeGType _ = gTypeWebGLFramebuffer
+  {-# INLINE typeGType #-}
+noWebGLFramebuffer :: Maybe WebGLFramebuffer
+noWebGLFramebuffer = Nothing
+{-# INLINE noWebGLFramebuffer #-}
+
+foreign import javascript unsafe "window[\"WebGLFramebuffer\"]" gTypeWebGLFramebuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLLoseContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLLoseContext Mozilla WebGLLoseContext documentation>
+newtype WebGLLoseContext = WebGLLoseContext { unWebGLLoseContext :: JSVal }
+
+instance Eq (WebGLLoseContext) where
+  (WebGLLoseContext a) == (WebGLLoseContext b) = js_eq a b
+
+instance PToJSVal WebGLLoseContext where
+  pToJSVal = unWebGLLoseContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLLoseContext where
+  pFromJSVal = WebGLLoseContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLLoseContext where
+  toJSVal = return . unWebGLLoseContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLLoseContext where
+  fromJSVal = return . fmap WebGLLoseContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLLoseContext where
+  typeGType _ = gTypeWebGLLoseContext
+  {-# INLINE typeGType #-}
+noWebGLLoseContext :: Maybe WebGLLoseContext
+noWebGLLoseContext = Nothing
+{-# INLINE noWebGLLoseContext #-}
+
+foreign import javascript unsafe "window[\"WebGLLoseContext\"]" gTypeWebGLLoseContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLProgram".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLProgram Mozilla WebGLProgram documentation>
+newtype WebGLProgram = WebGLProgram { unWebGLProgram :: JSVal }
+
+instance Eq (WebGLProgram) where
+  (WebGLProgram a) == (WebGLProgram b) = js_eq a b
+
+instance PToJSVal WebGLProgram where
+  pToJSVal = unWebGLProgram
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLProgram where
+  pFromJSVal = WebGLProgram
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLProgram where
+  toJSVal = return . unWebGLProgram
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLProgram where
+  fromJSVal = return . fmap WebGLProgram . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLProgram where
+  typeGType _ = gTypeWebGLProgram
+  {-# INLINE typeGType #-}
+noWebGLProgram :: Maybe WebGLProgram
+noWebGLProgram = Nothing
+{-# INLINE noWebGLProgram #-}
+
+foreign import javascript unsafe "window[\"WebGLProgram\"]" gTypeWebGLProgram :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLQuery".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLQuery Mozilla WebGLQuery documentation>
+newtype WebGLQuery = WebGLQuery { unWebGLQuery :: JSVal }
+
+instance Eq (WebGLQuery) where
+  (WebGLQuery a) == (WebGLQuery b) = js_eq a b
+
+instance PToJSVal WebGLQuery where
+  pToJSVal = unWebGLQuery
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLQuery where
+  pFromJSVal = WebGLQuery
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLQuery where
+  toJSVal = return . unWebGLQuery
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLQuery where
+  fromJSVal = return . fmap WebGLQuery . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLQuery where
+  typeGType _ = gTypeWebGLQuery
+  {-# INLINE typeGType #-}
+noWebGLQuery :: Maybe WebGLQuery
+noWebGLQuery = Nothing
+{-# INLINE noWebGLQuery #-}
+
+foreign import javascript unsafe "window[\"WebGLQuery\"]" gTypeWebGLQuery :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLRenderbuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderbuffer Mozilla WebGLRenderbuffer documentation>
+newtype WebGLRenderbuffer = WebGLRenderbuffer { unWebGLRenderbuffer :: JSVal }
+
+instance Eq (WebGLRenderbuffer) where
+  (WebGLRenderbuffer a) == (WebGLRenderbuffer b) = js_eq a b
+
+instance PToJSVal WebGLRenderbuffer where
+  pToJSVal = unWebGLRenderbuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderbuffer where
+  pFromJSVal = WebGLRenderbuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderbuffer where
+  toJSVal = return . unWebGLRenderbuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderbuffer where
+  fromJSVal = return . fmap WebGLRenderbuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLRenderbuffer where
+  typeGType _ = gTypeWebGLRenderbuffer
+  {-# INLINE typeGType #-}
+noWebGLRenderbuffer :: Maybe WebGLRenderbuffer
+noWebGLRenderbuffer = Nothing
+{-# INLINE noWebGLRenderbuffer #-}
+
+foreign import javascript unsafe "window[\"WebGLRenderbuffer\"]" gTypeWebGLRenderbuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLRenderingContext".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.WebGLRenderingContextBase"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContext Mozilla WebGLRenderingContext documentation>
+newtype WebGLRenderingContext = WebGLRenderingContext { unWebGLRenderingContext :: JSVal }
+
+instance Eq (WebGLRenderingContext) where
+  (WebGLRenderingContext a) == (WebGLRenderingContext b) = js_eq a b
+
+instance PToJSVal WebGLRenderingContext where
+  pToJSVal = unWebGLRenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContext where
+  pFromJSVal = WebGLRenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContext where
+  toJSVal = return . unWebGLRenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContext where
+  fromJSVal = return . fmap WebGLRenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsWebGLRenderingContextBase WebGLRenderingContext
+instance IsGObject WebGLRenderingContext where
+  typeGType _ = gTypeWebGLRenderingContext
+  {-# INLINE typeGType #-}
+noWebGLRenderingContext :: Maybe WebGLRenderingContext
+noWebGLRenderingContext = Nothing
+{-# INLINE noWebGLRenderingContext #-}
+
+foreign import javascript unsafe "window[\"WebGLRenderingContext\"]" gTypeWebGLRenderingContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLRenderingContextBase".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLRenderingContextBase Mozilla WebGLRenderingContextBase documentation>
+newtype WebGLRenderingContextBase = WebGLRenderingContextBase { unWebGLRenderingContextBase :: JSVal }
+
+instance Eq (WebGLRenderingContextBase) where
+  (WebGLRenderingContextBase a) == (WebGLRenderingContextBase b) = js_eq a b
+
+instance PToJSVal WebGLRenderingContextBase where
+  pToJSVal = unWebGLRenderingContextBase
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLRenderingContextBase where
+  pFromJSVal = WebGLRenderingContextBase
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLRenderingContextBase where
+  toJSVal = return . unWebGLRenderingContextBase
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLRenderingContextBase where
+  fromJSVal = return . fmap WebGLRenderingContextBase . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsWebGLRenderingContextBase o
+toWebGLRenderingContextBase :: IsWebGLRenderingContextBase o => o -> WebGLRenderingContextBase
+toWebGLRenderingContextBase = WebGLRenderingContextBase . coerce
+
+instance IsWebGLRenderingContextBase WebGLRenderingContextBase
+instance IsGObject WebGLRenderingContextBase where
+  typeGType _ = gTypeWebGLRenderingContextBase
+  {-# INLINE typeGType #-}
+noWebGLRenderingContextBase :: Maybe WebGLRenderingContextBase
+noWebGLRenderingContextBase = Nothing
+{-# INLINE noWebGLRenderingContextBase #-}
+
+foreign import javascript unsafe "window[\"WebGLRenderingContextBase\"]" gTypeWebGLRenderingContextBase :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLSampler".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSampler Mozilla WebGLSampler documentation>
+newtype WebGLSampler = WebGLSampler { unWebGLSampler :: JSVal }
+
+instance Eq (WebGLSampler) where
+  (WebGLSampler a) == (WebGLSampler b) = js_eq a b
+
+instance PToJSVal WebGLSampler where
+  pToJSVal = unWebGLSampler
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSampler where
+  pFromJSVal = WebGLSampler
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSampler where
+  toJSVal = return . unWebGLSampler
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSampler where
+  fromJSVal = return . fmap WebGLSampler . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLSampler where
+  typeGType _ = gTypeWebGLSampler
+  {-# INLINE typeGType #-}
+noWebGLSampler :: Maybe WebGLSampler
+noWebGLSampler = Nothing
+{-# INLINE noWebGLSampler #-}
+
+foreign import javascript unsafe "window[\"WebGLSampler\"]" gTypeWebGLSampler :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLShader".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShader Mozilla WebGLShader documentation>
+newtype WebGLShader = WebGLShader { unWebGLShader :: JSVal }
+
+instance Eq (WebGLShader) where
+  (WebGLShader a) == (WebGLShader b) = js_eq a b
+
+instance PToJSVal WebGLShader where
+  pToJSVal = unWebGLShader
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShader where
+  pFromJSVal = WebGLShader
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShader where
+  toJSVal = return . unWebGLShader
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShader where
+  fromJSVal = return . fmap WebGLShader . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLShader where
+  typeGType _ = gTypeWebGLShader
+  {-# INLINE typeGType #-}
+noWebGLShader :: Maybe WebGLShader
+noWebGLShader = Nothing
+{-# INLINE noWebGLShader #-}
+
+foreign import javascript unsafe "window[\"WebGLShader\"]" gTypeWebGLShader :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLShaderPrecisionFormat".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLShaderPrecisionFormat Mozilla WebGLShaderPrecisionFormat documentation>
+newtype WebGLShaderPrecisionFormat = WebGLShaderPrecisionFormat { unWebGLShaderPrecisionFormat :: JSVal }
+
+instance Eq (WebGLShaderPrecisionFormat) where
+  (WebGLShaderPrecisionFormat a) == (WebGLShaderPrecisionFormat b) = js_eq a b
+
+instance PToJSVal WebGLShaderPrecisionFormat where
+  pToJSVal = unWebGLShaderPrecisionFormat
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLShaderPrecisionFormat where
+  pFromJSVal = WebGLShaderPrecisionFormat
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLShaderPrecisionFormat where
+  toJSVal = return . unWebGLShaderPrecisionFormat
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLShaderPrecisionFormat where
+  fromJSVal = return . fmap WebGLShaderPrecisionFormat . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLShaderPrecisionFormat where
+  typeGType _ = gTypeWebGLShaderPrecisionFormat
+  {-# INLINE typeGType #-}
+noWebGLShaderPrecisionFormat :: Maybe WebGLShaderPrecisionFormat
+noWebGLShaderPrecisionFormat = Nothing
+{-# INLINE noWebGLShaderPrecisionFormat #-}
+
+foreign import javascript unsafe "window[\"WebGLShaderPrecisionFormat\"]" gTypeWebGLShaderPrecisionFormat :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLSync".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLSync Mozilla WebGLSync documentation>
+newtype WebGLSync = WebGLSync { unWebGLSync :: JSVal }
+
+instance Eq (WebGLSync) where
+  (WebGLSync a) == (WebGLSync b) = js_eq a b
+
+instance PToJSVal WebGLSync where
+  pToJSVal = unWebGLSync
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLSync where
+  pFromJSVal = WebGLSync
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLSync where
+  toJSVal = return . unWebGLSync
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLSync where
+  fromJSVal = return . fmap WebGLSync . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLSync where
+  typeGType _ = gTypeWebGLSync
+  {-# INLINE typeGType #-}
+noWebGLSync :: Maybe WebGLSync
+noWebGLSync = Nothing
+{-# INLINE noWebGLSync #-}
+
+foreign import javascript unsafe "window[\"WebGLSync\"]" gTypeWebGLSync :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTexture Mozilla WebGLTexture documentation>
+newtype WebGLTexture = WebGLTexture { unWebGLTexture :: JSVal }
+
+instance Eq (WebGLTexture) where
+  (WebGLTexture a) == (WebGLTexture b) = js_eq a b
+
+instance PToJSVal WebGLTexture where
+  pToJSVal = unWebGLTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTexture where
+  pFromJSVal = WebGLTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTexture where
+  toJSVal = return . unWebGLTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTexture where
+  fromJSVal = return . fmap WebGLTexture . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLTexture where
+  typeGType _ = gTypeWebGLTexture
+  {-# INLINE typeGType #-}
+noWebGLTexture :: Maybe WebGLTexture
+noWebGLTexture = Nothing
+{-# INLINE noWebGLTexture #-}
+
+foreign import javascript unsafe "window[\"WebGLTexture\"]" gTypeWebGLTexture :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLTransformFeedback".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLTransformFeedback Mozilla WebGLTransformFeedback documentation>
+newtype WebGLTransformFeedback = WebGLTransformFeedback { unWebGLTransformFeedback :: JSVal }
+
+instance Eq (WebGLTransformFeedback) where
+  (WebGLTransformFeedback a) == (WebGLTransformFeedback b) = js_eq a b
+
+instance PToJSVal WebGLTransformFeedback where
+  pToJSVal = unWebGLTransformFeedback
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLTransformFeedback where
+  pFromJSVal = WebGLTransformFeedback
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLTransformFeedback where
+  toJSVal = return . unWebGLTransformFeedback
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLTransformFeedback where
+  fromJSVal = return . fmap WebGLTransformFeedback . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLTransformFeedback where
+  typeGType _ = gTypeWebGLTransformFeedback
+  {-# INLINE typeGType #-}
+noWebGLTransformFeedback :: Maybe WebGLTransformFeedback
+noWebGLTransformFeedback = Nothing
+{-# INLINE noWebGLTransformFeedback #-}
+
+foreign import javascript unsafe "window[\"WebGLTransformFeedback\"]" gTypeWebGLTransformFeedback :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLUniformLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLUniformLocation Mozilla WebGLUniformLocation documentation>
+newtype WebGLUniformLocation = WebGLUniformLocation { unWebGLUniformLocation :: JSVal }
+
+instance Eq (WebGLUniformLocation) where
+  (WebGLUniformLocation a) == (WebGLUniformLocation b) = js_eq a b
+
+instance PToJSVal WebGLUniformLocation where
+  pToJSVal = unWebGLUniformLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLUniformLocation where
+  pFromJSVal = WebGLUniformLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLUniformLocation where
+  toJSVal = return . unWebGLUniformLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLUniformLocation where
+  fromJSVal = return . fmap WebGLUniformLocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLUniformLocation where
+  typeGType _ = gTypeWebGLUniformLocation
+  {-# INLINE typeGType #-}
+noWebGLUniformLocation :: Maybe WebGLUniformLocation
+noWebGLUniformLocation = Nothing
+{-# INLINE noWebGLUniformLocation #-}
+
+foreign import javascript unsafe "window[\"WebGLUniformLocation\"]" gTypeWebGLUniformLocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLVertexArrayObject".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObject Mozilla WebGLVertexArrayObject documentation>
+newtype WebGLVertexArrayObject = WebGLVertexArrayObject { unWebGLVertexArrayObject :: JSVal }
+
+instance Eq (WebGLVertexArrayObject) where
+  (WebGLVertexArrayObject a) == (WebGLVertexArrayObject b) = js_eq a b
+
+instance PToJSVal WebGLVertexArrayObject where
+  pToJSVal = unWebGLVertexArrayObject
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObject where
+  pFromJSVal = WebGLVertexArrayObject
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObject where
+  toJSVal = return . unWebGLVertexArrayObject
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObject where
+  fromJSVal = return . fmap WebGLVertexArrayObject . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLVertexArrayObject where
+  typeGType _ = gTypeWebGLVertexArrayObject
+  {-# INLINE typeGType #-}
+noWebGLVertexArrayObject :: Maybe WebGLVertexArrayObject
+noWebGLVertexArrayObject = Nothing
+{-# INLINE noWebGLVertexArrayObject #-}
+
+foreign import javascript unsafe "window[\"WebGLVertexArrayObject\"]" gTypeWebGLVertexArrayObject :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGLVertexArrayObjectOES".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGLVertexArrayObjectOES Mozilla WebGLVertexArrayObjectOES documentation>
+newtype WebGLVertexArrayObjectOES = WebGLVertexArrayObjectOES { unWebGLVertexArrayObjectOES :: JSVal }
+
+instance Eq (WebGLVertexArrayObjectOES) where
+  (WebGLVertexArrayObjectOES a) == (WebGLVertexArrayObjectOES b) = js_eq a b
+
+instance PToJSVal WebGLVertexArrayObjectOES where
+  pToJSVal = unWebGLVertexArrayObjectOES
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGLVertexArrayObjectOES where
+  pFromJSVal = WebGLVertexArrayObjectOES
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGLVertexArrayObjectOES where
+  toJSVal = return . unWebGLVertexArrayObjectOES
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGLVertexArrayObjectOES where
+  fromJSVal = return . fmap WebGLVertexArrayObjectOES . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGLVertexArrayObjectOES where
+  typeGType _ = gTypeWebGLVertexArrayObjectOES
+  {-# INLINE typeGType #-}
+noWebGLVertexArrayObjectOES :: Maybe WebGLVertexArrayObjectOES
+noWebGLVertexArrayObjectOES = Nothing
+{-# INLINE noWebGLVertexArrayObjectOES #-}
+
+foreign import javascript unsafe "window[\"WebGLVertexArrayObjectOES\"]" gTypeWebGLVertexArrayObjectOES :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUBuffer Mozilla WebGPUBuffer documentation>
+newtype WebGPUBuffer = WebGPUBuffer { unWebGPUBuffer :: JSVal }
+
+instance Eq (WebGPUBuffer) where
+  (WebGPUBuffer a) == (WebGPUBuffer b) = js_eq a b
+
+instance PToJSVal WebGPUBuffer where
+  pToJSVal = unWebGPUBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUBuffer where
+  pFromJSVal = WebGPUBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUBuffer where
+  toJSVal = return . unWebGPUBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUBuffer where
+  fromJSVal = return . fmap WebGPUBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUBuffer where
+  typeGType _ = gTypeWebGPUBuffer
+  {-# INLINE typeGType #-}
+noWebGPUBuffer :: Maybe WebGPUBuffer
+noWebGPUBuffer = Nothing
+{-# INLINE noWebGPUBuffer #-}
+
+foreign import javascript unsafe "window[\"WebGPUBuffer\"]" gTypeWebGPUBuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUCommandBuffer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandBuffer Mozilla WebGPUCommandBuffer documentation>
+newtype WebGPUCommandBuffer = WebGPUCommandBuffer { unWebGPUCommandBuffer :: JSVal }
+
+instance Eq (WebGPUCommandBuffer) where
+  (WebGPUCommandBuffer a) == (WebGPUCommandBuffer b) = js_eq a b
+
+instance PToJSVal WebGPUCommandBuffer where
+  pToJSVal = unWebGPUCommandBuffer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUCommandBuffer where
+  pFromJSVal = WebGPUCommandBuffer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUCommandBuffer where
+  toJSVal = return . unWebGPUCommandBuffer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUCommandBuffer where
+  fromJSVal = return . fmap WebGPUCommandBuffer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUCommandBuffer where
+  typeGType _ = gTypeWebGPUCommandBuffer
+  {-# INLINE typeGType #-}
+noWebGPUCommandBuffer :: Maybe WebGPUCommandBuffer
+noWebGPUCommandBuffer = Nothing
+{-# INLINE noWebGPUCommandBuffer #-}
+
+foreign import javascript unsafe "window[\"WebGPUCommandBuffer\"]" gTypeWebGPUCommandBuffer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUCommandQueue".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUCommandQueue Mozilla WebGPUCommandQueue documentation>
+newtype WebGPUCommandQueue = WebGPUCommandQueue { unWebGPUCommandQueue :: JSVal }
+
+instance Eq (WebGPUCommandQueue) where
+  (WebGPUCommandQueue a) == (WebGPUCommandQueue b) = js_eq a b
+
+instance PToJSVal WebGPUCommandQueue where
+  pToJSVal = unWebGPUCommandQueue
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUCommandQueue where
+  pFromJSVal = WebGPUCommandQueue
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUCommandQueue where
+  toJSVal = return . unWebGPUCommandQueue
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUCommandQueue where
+  fromJSVal = return . fmap WebGPUCommandQueue . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUCommandQueue where
+  typeGType _ = gTypeWebGPUCommandQueue
+  {-# INLINE typeGType #-}
+noWebGPUCommandQueue :: Maybe WebGPUCommandQueue
+noWebGPUCommandQueue = Nothing
+{-# INLINE noWebGPUCommandQueue #-}
+
+foreign import javascript unsafe "window[\"WebGPUCommandQueue\"]" gTypeWebGPUCommandQueue :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUComputeCommandEncoder".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputeCommandEncoder Mozilla WebGPUComputeCommandEncoder documentation>
+newtype WebGPUComputeCommandEncoder = WebGPUComputeCommandEncoder { unWebGPUComputeCommandEncoder :: JSVal }
+
+instance Eq (WebGPUComputeCommandEncoder) where
+  (WebGPUComputeCommandEncoder a) == (WebGPUComputeCommandEncoder b) = js_eq a b
+
+instance PToJSVal WebGPUComputeCommandEncoder where
+  pToJSVal = unWebGPUComputeCommandEncoder
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUComputeCommandEncoder where
+  pFromJSVal = WebGPUComputeCommandEncoder
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUComputeCommandEncoder where
+  toJSVal = return . unWebGPUComputeCommandEncoder
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUComputeCommandEncoder where
+  fromJSVal = return . fmap WebGPUComputeCommandEncoder . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUComputeCommandEncoder where
+  typeGType _ = gTypeWebGPUComputeCommandEncoder
+  {-# INLINE typeGType #-}
+noWebGPUComputeCommandEncoder :: Maybe WebGPUComputeCommandEncoder
+noWebGPUComputeCommandEncoder = Nothing
+{-# INLINE noWebGPUComputeCommandEncoder #-}
+
+foreign import javascript unsafe "window[\"WebGPUComputeCommandEncoder\"]" gTypeWebGPUComputeCommandEncoder :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUComputePipelineState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUComputePipelineState Mozilla WebGPUComputePipelineState documentation>
+newtype WebGPUComputePipelineState = WebGPUComputePipelineState { unWebGPUComputePipelineState :: JSVal }
+
+instance Eq (WebGPUComputePipelineState) where
+  (WebGPUComputePipelineState a) == (WebGPUComputePipelineState b) = js_eq a b
+
+instance PToJSVal WebGPUComputePipelineState where
+  pToJSVal = unWebGPUComputePipelineState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUComputePipelineState where
+  pFromJSVal = WebGPUComputePipelineState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUComputePipelineState where
+  toJSVal = return . unWebGPUComputePipelineState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUComputePipelineState where
+  fromJSVal = return . fmap WebGPUComputePipelineState . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUComputePipelineState where
+  typeGType _ = gTypeWebGPUComputePipelineState
+  {-# INLINE typeGType #-}
+noWebGPUComputePipelineState :: Maybe WebGPUComputePipelineState
+noWebGPUComputePipelineState = Nothing
+{-# INLINE noWebGPUComputePipelineState #-}
+
+foreign import javascript unsafe "window[\"WebGPUComputePipelineState\"]" gTypeWebGPUComputePipelineState :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUDepthStencilDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilDescriptor Mozilla WebGPUDepthStencilDescriptor documentation>
+newtype WebGPUDepthStencilDescriptor = WebGPUDepthStencilDescriptor { unWebGPUDepthStencilDescriptor :: JSVal }
+
+instance Eq (WebGPUDepthStencilDescriptor) where
+  (WebGPUDepthStencilDescriptor a) == (WebGPUDepthStencilDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPUDepthStencilDescriptor where
+  pToJSVal = unWebGPUDepthStencilDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUDepthStencilDescriptor where
+  pFromJSVal = WebGPUDepthStencilDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUDepthStencilDescriptor where
+  toJSVal = return . unWebGPUDepthStencilDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUDepthStencilDescriptor where
+  fromJSVal = return . fmap WebGPUDepthStencilDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUDepthStencilDescriptor where
+  typeGType _ = gTypeWebGPUDepthStencilDescriptor
+  {-# INLINE typeGType #-}
+noWebGPUDepthStencilDescriptor :: Maybe WebGPUDepthStencilDescriptor
+noWebGPUDepthStencilDescriptor = Nothing
+{-# INLINE noWebGPUDepthStencilDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPUDepthStencilDescriptor\"]" gTypeWebGPUDepthStencilDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUDepthStencilState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDepthStencilState Mozilla WebGPUDepthStencilState documentation>
+newtype WebGPUDepthStencilState = WebGPUDepthStencilState { unWebGPUDepthStencilState :: JSVal }
+
+instance Eq (WebGPUDepthStencilState) where
+  (WebGPUDepthStencilState a) == (WebGPUDepthStencilState b) = js_eq a b
+
+instance PToJSVal WebGPUDepthStencilState where
+  pToJSVal = unWebGPUDepthStencilState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUDepthStencilState where
+  pFromJSVal = WebGPUDepthStencilState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUDepthStencilState where
+  toJSVal = return . unWebGPUDepthStencilState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUDepthStencilState where
+  fromJSVal = return . fmap WebGPUDepthStencilState . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUDepthStencilState where
+  typeGType _ = gTypeWebGPUDepthStencilState
+  {-# INLINE typeGType #-}
+noWebGPUDepthStencilState :: Maybe WebGPUDepthStencilState
+noWebGPUDepthStencilState = Nothing
+{-# INLINE noWebGPUDepthStencilState #-}
+
+foreign import javascript unsafe "window[\"WebGPUDepthStencilState\"]" gTypeWebGPUDepthStencilState :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUDrawable".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUDrawable Mozilla WebGPUDrawable documentation>
+newtype WebGPUDrawable = WebGPUDrawable { unWebGPUDrawable :: JSVal }
+
+instance Eq (WebGPUDrawable) where
+  (WebGPUDrawable a) == (WebGPUDrawable b) = js_eq a b
+
+instance PToJSVal WebGPUDrawable where
+  pToJSVal = unWebGPUDrawable
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUDrawable where
+  pFromJSVal = WebGPUDrawable
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUDrawable where
+  toJSVal = return . unWebGPUDrawable
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUDrawable where
+  fromJSVal = return . fmap WebGPUDrawable . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUDrawable where
+  typeGType _ = gTypeWebGPUDrawable
+  {-# INLINE typeGType #-}
+noWebGPUDrawable :: Maybe WebGPUDrawable
+noWebGPUDrawable = Nothing
+{-# INLINE noWebGPUDrawable #-}
+
+foreign import javascript unsafe "window[\"WebGPUDrawable\"]" gTypeWebGPUDrawable :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUFunction".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUFunction Mozilla WebGPUFunction documentation>
+newtype WebGPUFunction = WebGPUFunction { unWebGPUFunction :: JSVal }
+
+instance Eq (WebGPUFunction) where
+  (WebGPUFunction a) == (WebGPUFunction b) = js_eq a b
+
+instance PToJSVal WebGPUFunction where
+  pToJSVal = unWebGPUFunction
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUFunction where
+  pFromJSVal = WebGPUFunction
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUFunction where
+  toJSVal = return . unWebGPUFunction
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUFunction where
+  fromJSVal = return . fmap WebGPUFunction . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUFunction where
+  typeGType _ = gTypeWebGPUFunction
+  {-# INLINE typeGType #-}
+noWebGPUFunction :: Maybe WebGPUFunction
+noWebGPUFunction = Nothing
+{-# INLINE noWebGPUFunction #-}
+
+foreign import javascript unsafe "window[\"WebGPUFunction\"]" gTypeWebGPUFunction :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPULibrary".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPULibrary Mozilla WebGPULibrary documentation>
+newtype WebGPULibrary = WebGPULibrary { unWebGPULibrary :: JSVal }
+
+instance Eq (WebGPULibrary) where
+  (WebGPULibrary a) == (WebGPULibrary b) = js_eq a b
+
+instance PToJSVal WebGPULibrary where
+  pToJSVal = unWebGPULibrary
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPULibrary where
+  pFromJSVal = WebGPULibrary
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPULibrary where
+  toJSVal = return . unWebGPULibrary
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPULibrary where
+  fromJSVal = return . fmap WebGPULibrary . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPULibrary where
+  typeGType _ = gTypeWebGPULibrary
+  {-# INLINE typeGType #-}
+noWebGPULibrary :: Maybe WebGPULibrary
+noWebGPULibrary = Nothing
+{-# INLINE noWebGPULibrary #-}
+
+foreign import javascript unsafe "window[\"WebGPULibrary\"]" gTypeWebGPULibrary :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderCommandEncoder".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderCommandEncoder Mozilla WebGPURenderCommandEncoder documentation>
+newtype WebGPURenderCommandEncoder = WebGPURenderCommandEncoder { unWebGPURenderCommandEncoder :: JSVal }
+
+instance Eq (WebGPURenderCommandEncoder) where
+  (WebGPURenderCommandEncoder a) == (WebGPURenderCommandEncoder b) = js_eq a b
+
+instance PToJSVal WebGPURenderCommandEncoder where
+  pToJSVal = unWebGPURenderCommandEncoder
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderCommandEncoder where
+  pFromJSVal = WebGPURenderCommandEncoder
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderCommandEncoder where
+  toJSVal = return . unWebGPURenderCommandEncoder
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderCommandEncoder where
+  fromJSVal = return . fmap WebGPURenderCommandEncoder . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderCommandEncoder where
+  typeGType _ = gTypeWebGPURenderCommandEncoder
+  {-# INLINE typeGType #-}
+noWebGPURenderCommandEncoder :: Maybe WebGPURenderCommandEncoder
+noWebGPURenderCommandEncoder = Nothing
+{-# INLINE noWebGPURenderCommandEncoder #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderCommandEncoder\"]" gTypeWebGPURenderCommandEncoder :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPassAttachmentDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassAttachmentDescriptor Mozilla WebGPURenderPassAttachmentDescriptor documentation>
+newtype WebGPURenderPassAttachmentDescriptor = WebGPURenderPassAttachmentDescriptor { unWebGPURenderPassAttachmentDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPassAttachmentDescriptor) where
+  (WebGPURenderPassAttachmentDescriptor a) == (WebGPURenderPassAttachmentDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPassAttachmentDescriptor where
+  pToJSVal = unWebGPURenderPassAttachmentDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPassAttachmentDescriptor where
+  pFromJSVal = WebGPURenderPassAttachmentDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPassAttachmentDescriptor where
+  toJSVal = return . unWebGPURenderPassAttachmentDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPassAttachmentDescriptor where
+  fromJSVal = return . fmap WebGPURenderPassAttachmentDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsWebGPURenderPassAttachmentDescriptor o
+toWebGPURenderPassAttachmentDescriptor :: IsWebGPURenderPassAttachmentDescriptor o => o -> WebGPURenderPassAttachmentDescriptor
+toWebGPURenderPassAttachmentDescriptor = WebGPURenderPassAttachmentDescriptor . coerce
+
+instance IsWebGPURenderPassAttachmentDescriptor WebGPURenderPassAttachmentDescriptor
+instance IsGObject WebGPURenderPassAttachmentDescriptor where
+  typeGType _ = gTypeWebGPURenderPassAttachmentDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPassAttachmentDescriptor :: Maybe WebGPURenderPassAttachmentDescriptor
+noWebGPURenderPassAttachmentDescriptor = Nothing
+{-# INLINE noWebGPURenderPassAttachmentDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPassAttachmentDescriptor\"]" gTypeWebGPURenderPassAttachmentDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPassColorAttachmentDescriptor".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.WebGPURenderPassAttachmentDescriptor"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassColorAttachmentDescriptor Mozilla WebGPURenderPassColorAttachmentDescriptor documentation>
+newtype WebGPURenderPassColorAttachmentDescriptor = WebGPURenderPassColorAttachmentDescriptor { unWebGPURenderPassColorAttachmentDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPassColorAttachmentDescriptor) where
+  (WebGPURenderPassColorAttachmentDescriptor a) == (WebGPURenderPassColorAttachmentDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPassColorAttachmentDescriptor where
+  pToJSVal = unWebGPURenderPassColorAttachmentDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPassColorAttachmentDescriptor where
+  pFromJSVal = WebGPURenderPassColorAttachmentDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPassColorAttachmentDescriptor where
+  toJSVal = return . unWebGPURenderPassColorAttachmentDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPassColorAttachmentDescriptor where
+  fromJSVal = return . fmap WebGPURenderPassColorAttachmentDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsWebGPURenderPassAttachmentDescriptor WebGPURenderPassColorAttachmentDescriptor
+instance IsGObject WebGPURenderPassColorAttachmentDescriptor where
+  typeGType _ = gTypeWebGPURenderPassColorAttachmentDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPassColorAttachmentDescriptor :: Maybe WebGPURenderPassColorAttachmentDescriptor
+noWebGPURenderPassColorAttachmentDescriptor = Nothing
+{-# INLINE noWebGPURenderPassColorAttachmentDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPassColorAttachmentDescriptor\"]" gTypeWebGPURenderPassColorAttachmentDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPassDepthAttachmentDescriptor".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.WebGPURenderPassAttachmentDescriptor"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDepthAttachmentDescriptor Mozilla WebGPURenderPassDepthAttachmentDescriptor documentation>
+newtype WebGPURenderPassDepthAttachmentDescriptor = WebGPURenderPassDepthAttachmentDescriptor { unWebGPURenderPassDepthAttachmentDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPassDepthAttachmentDescriptor) where
+  (WebGPURenderPassDepthAttachmentDescriptor a) == (WebGPURenderPassDepthAttachmentDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPassDepthAttachmentDescriptor where
+  pToJSVal = unWebGPURenderPassDepthAttachmentDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPassDepthAttachmentDescriptor where
+  pFromJSVal = WebGPURenderPassDepthAttachmentDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPassDepthAttachmentDescriptor where
+  toJSVal = return . unWebGPURenderPassDepthAttachmentDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPassDepthAttachmentDescriptor where
+  fromJSVal = return . fmap WebGPURenderPassDepthAttachmentDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsWebGPURenderPassAttachmentDescriptor WebGPURenderPassDepthAttachmentDescriptor
+instance IsGObject WebGPURenderPassDepthAttachmentDescriptor where
+  typeGType _ = gTypeWebGPURenderPassDepthAttachmentDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPassDepthAttachmentDescriptor :: Maybe WebGPURenderPassDepthAttachmentDescriptor
+noWebGPURenderPassDepthAttachmentDescriptor = Nothing
+{-# INLINE noWebGPURenderPassDepthAttachmentDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPassDepthAttachmentDescriptor\"]" gTypeWebGPURenderPassDepthAttachmentDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPassDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPassDescriptor Mozilla WebGPURenderPassDescriptor documentation>
+newtype WebGPURenderPassDescriptor = WebGPURenderPassDescriptor { unWebGPURenderPassDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPassDescriptor) where
+  (WebGPURenderPassDescriptor a) == (WebGPURenderPassDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPassDescriptor where
+  pToJSVal = unWebGPURenderPassDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPassDescriptor where
+  pFromJSVal = WebGPURenderPassDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPassDescriptor where
+  toJSVal = return . unWebGPURenderPassDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPassDescriptor where
+  fromJSVal = return . fmap WebGPURenderPassDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderPassDescriptor where
+  typeGType _ = gTypeWebGPURenderPassDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPassDescriptor :: Maybe WebGPURenderPassDescriptor
+noWebGPURenderPassDescriptor = Nothing
+{-# INLINE noWebGPURenderPassDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPassDescriptor\"]" gTypeWebGPURenderPassDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPipelineColorAttachmentDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineColorAttachmentDescriptor Mozilla WebGPURenderPipelineColorAttachmentDescriptor documentation>
+newtype WebGPURenderPipelineColorAttachmentDescriptor = WebGPURenderPipelineColorAttachmentDescriptor { unWebGPURenderPipelineColorAttachmentDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPipelineColorAttachmentDescriptor) where
+  (WebGPURenderPipelineColorAttachmentDescriptor a) == (WebGPURenderPipelineColorAttachmentDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPipelineColorAttachmentDescriptor where
+  pToJSVal = unWebGPURenderPipelineColorAttachmentDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPipelineColorAttachmentDescriptor where
+  pFromJSVal = WebGPURenderPipelineColorAttachmentDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPipelineColorAttachmentDescriptor where
+  toJSVal = return . unWebGPURenderPipelineColorAttachmentDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPipelineColorAttachmentDescriptor where
+  fromJSVal = return . fmap WebGPURenderPipelineColorAttachmentDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderPipelineColorAttachmentDescriptor where
+  typeGType _ = gTypeWebGPURenderPipelineColorAttachmentDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPipelineColorAttachmentDescriptor :: Maybe WebGPURenderPipelineColorAttachmentDescriptor
+noWebGPURenderPipelineColorAttachmentDescriptor = Nothing
+{-# INLINE noWebGPURenderPipelineColorAttachmentDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPipelineColorAttachmentDescriptor\"]" gTypeWebGPURenderPipelineColorAttachmentDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPipelineDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineDescriptor Mozilla WebGPURenderPipelineDescriptor documentation>
+newtype WebGPURenderPipelineDescriptor = WebGPURenderPipelineDescriptor { unWebGPURenderPipelineDescriptor :: JSVal }
+
+instance Eq (WebGPURenderPipelineDescriptor) where
+  (WebGPURenderPipelineDescriptor a) == (WebGPURenderPipelineDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPURenderPipelineDescriptor where
+  pToJSVal = unWebGPURenderPipelineDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPipelineDescriptor where
+  pFromJSVal = WebGPURenderPipelineDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPipelineDescriptor where
+  toJSVal = return . unWebGPURenderPipelineDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPipelineDescriptor where
+  fromJSVal = return . fmap WebGPURenderPipelineDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderPipelineDescriptor where
+  typeGType _ = gTypeWebGPURenderPipelineDescriptor
+  {-# INLINE typeGType #-}
+noWebGPURenderPipelineDescriptor :: Maybe WebGPURenderPipelineDescriptor
+noWebGPURenderPipelineDescriptor = Nothing
+{-# INLINE noWebGPURenderPipelineDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPipelineDescriptor\"]" gTypeWebGPURenderPipelineDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderPipelineState".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderPipelineState Mozilla WebGPURenderPipelineState documentation>
+newtype WebGPURenderPipelineState = WebGPURenderPipelineState { unWebGPURenderPipelineState :: JSVal }
+
+instance Eq (WebGPURenderPipelineState) where
+  (WebGPURenderPipelineState a) == (WebGPURenderPipelineState b) = js_eq a b
+
+instance PToJSVal WebGPURenderPipelineState where
+  pToJSVal = unWebGPURenderPipelineState
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderPipelineState where
+  pFromJSVal = WebGPURenderPipelineState
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderPipelineState where
+  toJSVal = return . unWebGPURenderPipelineState
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderPipelineState where
+  fromJSVal = return . fmap WebGPURenderPipelineState . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderPipelineState where
+  typeGType _ = gTypeWebGPURenderPipelineState
+  {-# INLINE typeGType #-}
+noWebGPURenderPipelineState :: Maybe WebGPURenderPipelineState
+noWebGPURenderPipelineState = Nothing
+{-# INLINE noWebGPURenderPipelineState #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderPipelineState\"]" gTypeWebGPURenderPipelineState :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPURenderingContext".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPURenderingContext Mozilla WebGPURenderingContext documentation>
+newtype WebGPURenderingContext = WebGPURenderingContext { unWebGPURenderingContext :: JSVal }
+
+instance Eq (WebGPURenderingContext) where
+  (WebGPURenderingContext a) == (WebGPURenderingContext b) = js_eq a b
+
+instance PToJSVal WebGPURenderingContext where
+  pToJSVal = unWebGPURenderingContext
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPURenderingContext where
+  pFromJSVal = WebGPURenderingContext
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPURenderingContext where
+  toJSVal = return . unWebGPURenderingContext
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPURenderingContext where
+  fromJSVal = return . fmap WebGPURenderingContext . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPURenderingContext where
+  typeGType _ = gTypeWebGPURenderingContext
+  {-# INLINE typeGType #-}
+noWebGPURenderingContext :: Maybe WebGPURenderingContext
+noWebGPURenderingContext = Nothing
+{-# INLINE noWebGPURenderingContext #-}
+
+foreign import javascript unsafe "window[\"WebGPURenderingContext\"]" gTypeWebGPURenderingContext :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUSize".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUSize Mozilla WebGPUSize documentation>
+newtype WebGPUSize = WebGPUSize { unWebGPUSize :: JSVal }
+
+instance Eq (WebGPUSize) where
+  (WebGPUSize a) == (WebGPUSize b) = js_eq a b
+
+instance PToJSVal WebGPUSize where
+  pToJSVal = unWebGPUSize
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUSize where
+  pFromJSVal = WebGPUSize
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUSize where
+  toJSVal = return . unWebGPUSize
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUSize where
+  fromJSVal = return . fmap WebGPUSize . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUSize where
+  typeGType _ = gTypeWebGPUSize
+  {-# INLINE typeGType #-}
+noWebGPUSize :: Maybe WebGPUSize
+noWebGPUSize = Nothing
+{-# INLINE noWebGPUSize #-}
+
+foreign import javascript unsafe "window[\"WebGPUSize\"]" gTypeWebGPUSize :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUTexture".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTexture Mozilla WebGPUTexture documentation>
+newtype WebGPUTexture = WebGPUTexture { unWebGPUTexture :: JSVal }
+
+instance Eq (WebGPUTexture) where
+  (WebGPUTexture a) == (WebGPUTexture b) = js_eq a b
+
+instance PToJSVal WebGPUTexture where
+  pToJSVal = unWebGPUTexture
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUTexture where
+  pFromJSVal = WebGPUTexture
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUTexture where
+  toJSVal = return . unWebGPUTexture
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUTexture where
+  fromJSVal = return . fmap WebGPUTexture . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUTexture where
+  typeGType _ = gTypeWebGPUTexture
+  {-# INLINE typeGType #-}
+noWebGPUTexture :: Maybe WebGPUTexture
+noWebGPUTexture = Nothing
+{-# INLINE noWebGPUTexture #-}
+
+foreign import javascript unsafe "window[\"WebGPUTexture\"]" gTypeWebGPUTexture :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebGPUTextureDescriptor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebGPUTextureDescriptor Mozilla WebGPUTextureDescriptor documentation>
+newtype WebGPUTextureDescriptor = WebGPUTextureDescriptor { unWebGPUTextureDescriptor :: JSVal }
+
+instance Eq (WebGPUTextureDescriptor) where
+  (WebGPUTextureDescriptor a) == (WebGPUTextureDescriptor b) = js_eq a b
+
+instance PToJSVal WebGPUTextureDescriptor where
+  pToJSVal = unWebGPUTextureDescriptor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebGPUTextureDescriptor where
+  pFromJSVal = WebGPUTextureDescriptor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebGPUTextureDescriptor where
+  toJSVal = return . unWebGPUTextureDescriptor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebGPUTextureDescriptor where
+  fromJSVal = return . fmap WebGPUTextureDescriptor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebGPUTextureDescriptor where
+  typeGType _ = gTypeWebGPUTextureDescriptor
+  {-# INLINE typeGType #-}
+noWebGPUTextureDescriptor :: Maybe WebGPUTextureDescriptor
+noWebGPUTextureDescriptor = Nothing
+{-# INLINE noWebGPUTextureDescriptor #-}
+
+foreign import javascript unsafe "window[\"WebGPUTextureDescriptor\"]" gTypeWebGPUTextureDescriptor :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitAnimationEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEvent Mozilla WebKitAnimationEvent documentation>
+newtype WebKitAnimationEvent = WebKitAnimationEvent { unWebKitAnimationEvent :: JSVal }
+
+instance Eq (WebKitAnimationEvent) where
+  (WebKitAnimationEvent a) == (WebKitAnimationEvent b) = js_eq a b
+
+instance PToJSVal WebKitAnimationEvent where
+  pToJSVal = unWebKitAnimationEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitAnimationEvent where
+  pFromJSVal = WebKitAnimationEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitAnimationEvent where
+  toJSVal = return . unWebKitAnimationEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitAnimationEvent where
+  fromJSVal = return . fmap WebKitAnimationEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebKitAnimationEvent
+instance IsGObject WebKitAnimationEvent where
+  typeGType _ = gTypeWebKitAnimationEvent
+  {-# INLINE typeGType #-}
+noWebKitAnimationEvent :: Maybe WebKitAnimationEvent
+noWebKitAnimationEvent = Nothing
+{-# INLINE noWebKitAnimationEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitAnimationEvent\"]" gTypeWebKitAnimationEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitAnimationEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitAnimationEventInit Mozilla WebKitAnimationEventInit documentation>
+newtype WebKitAnimationEventInit = WebKitAnimationEventInit { unWebKitAnimationEventInit :: JSVal }
+
+instance Eq (WebKitAnimationEventInit) where
+  (WebKitAnimationEventInit a) == (WebKitAnimationEventInit b) = js_eq a b
+
+instance PToJSVal WebKitAnimationEventInit where
+  pToJSVal = unWebKitAnimationEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitAnimationEventInit where
+  pFromJSVal = WebKitAnimationEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitAnimationEventInit where
+  toJSVal = return . unWebKitAnimationEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitAnimationEventInit where
+  fromJSVal = return . fmap WebKitAnimationEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebKitAnimationEventInit
+instance IsGObject WebKitAnimationEventInit where
+  typeGType _ = gTypeWebKitAnimationEventInit
+  {-# INLINE typeGType #-}
+noWebKitAnimationEventInit :: Maybe WebKitAnimationEventInit
+noWebKitAnimationEventInit = Nothing
+{-# INLINE noWebKitAnimationEventInit #-}
+
+foreign import javascript unsafe "window[\"WebKitAnimationEventInit\"]" gTypeWebKitAnimationEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitCSSMatrix".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSMatrix Mozilla WebKitCSSMatrix documentation>
+newtype WebKitCSSMatrix = WebKitCSSMatrix { unWebKitCSSMatrix :: JSVal }
+
+instance Eq (WebKitCSSMatrix) where
+  (WebKitCSSMatrix a) == (WebKitCSSMatrix b) = js_eq a b
+
+instance PToJSVal WebKitCSSMatrix where
+  pToJSVal = unWebKitCSSMatrix
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSMatrix where
+  pFromJSVal = WebKitCSSMatrix
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSMatrix where
+  toJSVal = return . unWebKitCSSMatrix
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSMatrix where
+  fromJSVal = return . fmap WebKitCSSMatrix . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitCSSMatrix where
+  typeGType _ = gTypeWebKitCSSMatrix
+  {-# INLINE typeGType #-}
+noWebKitCSSMatrix :: Maybe WebKitCSSMatrix
+noWebKitCSSMatrix = Nothing
+{-# INLINE noWebKitCSSMatrix #-}
+
+foreign import javascript unsafe "window[\"WebKitCSSMatrix\"]" gTypeWebKitCSSMatrix :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitCSSRegionRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSRegionRule Mozilla WebKitCSSRegionRule documentation>
+newtype WebKitCSSRegionRule = WebKitCSSRegionRule { unWebKitCSSRegionRule :: JSVal }
+
+instance Eq (WebKitCSSRegionRule) where
+  (WebKitCSSRegionRule a) == (WebKitCSSRegionRule b) = js_eq a b
+
+instance PToJSVal WebKitCSSRegionRule where
+  pToJSVal = unWebKitCSSRegionRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSRegionRule where
+  pFromJSVal = WebKitCSSRegionRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSRegionRule where
+  toJSVal = return . unWebKitCSSRegionRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSRegionRule where
+  fromJSVal = return . fmap WebKitCSSRegionRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule WebKitCSSRegionRule
+instance IsGObject WebKitCSSRegionRule where
+  typeGType _ = gTypeWebKitCSSRegionRule
+  {-# INLINE typeGType #-}
+noWebKitCSSRegionRule :: Maybe WebKitCSSRegionRule
+noWebKitCSSRegionRule = Nothing
+{-# INLINE noWebKitCSSRegionRule #-}
+
+foreign import javascript unsafe "window[\"WebKitCSSRegionRule\"]" gTypeWebKitCSSRegionRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitCSSViewportRule".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.CSSRule"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitCSSViewportRule Mozilla WebKitCSSViewportRule documentation>
+newtype WebKitCSSViewportRule = WebKitCSSViewportRule { unWebKitCSSViewportRule :: JSVal }
+
+instance Eq (WebKitCSSViewportRule) where
+  (WebKitCSSViewportRule a) == (WebKitCSSViewportRule b) = js_eq a b
+
+instance PToJSVal WebKitCSSViewportRule where
+  pToJSVal = unWebKitCSSViewportRule
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitCSSViewportRule where
+  pFromJSVal = WebKitCSSViewportRule
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitCSSViewportRule where
+  toJSVal = return . unWebKitCSSViewportRule
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitCSSViewportRule where
+  fromJSVal = return . fmap WebKitCSSViewportRule . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsCSSRule WebKitCSSViewportRule
+instance IsGObject WebKitCSSViewportRule where
+  typeGType _ = gTypeWebKitCSSViewportRule
+  {-# INLINE typeGType #-}
+noWebKitCSSViewportRule :: Maybe WebKitCSSViewportRule
+noWebKitCSSViewportRule = Nothing
+{-# INLINE noWebKitCSSViewportRule #-}
+
+foreign import javascript unsafe "window[\"WebKitCSSViewportRule\"]" gTypeWebKitCSSViewportRule :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeyError".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyError Mozilla WebKitMediaKeyError documentation>
+newtype WebKitMediaKeyError = WebKitMediaKeyError { unWebKitMediaKeyError :: JSVal }
+
+instance Eq (WebKitMediaKeyError) where
+  (WebKitMediaKeyError a) == (WebKitMediaKeyError b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeyError where
+  pToJSVal = unWebKitMediaKeyError
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeyError where
+  pFromJSVal = WebKitMediaKeyError
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeyError where
+  toJSVal = return . unWebKitMediaKeyError
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeyError where
+  fromJSVal = return . fmap WebKitMediaKeyError . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitMediaKeyError where
+  typeGType _ = gTypeWebKitMediaKeyError
+  {-# INLINE typeGType #-}
+noWebKitMediaKeyError :: Maybe WebKitMediaKeyError
+noWebKitMediaKeyError = Nothing
+{-# INLINE noWebKitMediaKeyError #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyError\"]" gTypeWebKitMediaKeyError :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeyMessageEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEvent Mozilla WebKitMediaKeyMessageEvent documentation>
+newtype WebKitMediaKeyMessageEvent = WebKitMediaKeyMessageEvent { unWebKitMediaKeyMessageEvent :: JSVal }
+
+instance Eq (WebKitMediaKeyMessageEvent) where
+  (WebKitMediaKeyMessageEvent a) == (WebKitMediaKeyMessageEvent b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeyMessageEvent where
+  pToJSVal = unWebKitMediaKeyMessageEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeyMessageEvent where
+  pFromJSVal = WebKitMediaKeyMessageEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeyMessageEvent where
+  toJSVal = return . unWebKitMediaKeyMessageEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeyMessageEvent where
+  fromJSVal = return . fmap WebKitMediaKeyMessageEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebKitMediaKeyMessageEvent
+instance IsGObject WebKitMediaKeyMessageEvent where
+  typeGType _ = gTypeWebKitMediaKeyMessageEvent
+  {-# INLINE typeGType #-}
+noWebKitMediaKeyMessageEvent :: Maybe WebKitMediaKeyMessageEvent
+noWebKitMediaKeyMessageEvent = Nothing
+{-# INLINE noWebKitMediaKeyMessageEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyMessageEvent\"]" gTypeWebKitMediaKeyMessageEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeyMessageEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyMessageEventInit Mozilla WebKitMediaKeyMessageEventInit documentation>
+newtype WebKitMediaKeyMessageEventInit = WebKitMediaKeyMessageEventInit { unWebKitMediaKeyMessageEventInit :: JSVal }
+
+instance Eq (WebKitMediaKeyMessageEventInit) where
+  (WebKitMediaKeyMessageEventInit a) == (WebKitMediaKeyMessageEventInit b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeyMessageEventInit where
+  pToJSVal = unWebKitMediaKeyMessageEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeyMessageEventInit where
+  pFromJSVal = WebKitMediaKeyMessageEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeyMessageEventInit where
+  toJSVal = return . unWebKitMediaKeyMessageEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeyMessageEventInit where
+  fromJSVal = return . fmap WebKitMediaKeyMessageEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebKitMediaKeyMessageEventInit
+instance IsGObject WebKitMediaKeyMessageEventInit where
+  typeGType _ = gTypeWebKitMediaKeyMessageEventInit
+  {-# INLINE typeGType #-}
+noWebKitMediaKeyMessageEventInit :: Maybe WebKitMediaKeyMessageEventInit
+noWebKitMediaKeyMessageEventInit = Nothing
+{-# INLINE noWebKitMediaKeyMessageEventInit #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyMessageEventInit\"]" gTypeWebKitMediaKeyMessageEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeyNeededEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEvent Mozilla WebKitMediaKeyNeededEvent documentation>
+newtype WebKitMediaKeyNeededEvent = WebKitMediaKeyNeededEvent { unWebKitMediaKeyNeededEvent :: JSVal }
+
+instance Eq (WebKitMediaKeyNeededEvent) where
+  (WebKitMediaKeyNeededEvent a) == (WebKitMediaKeyNeededEvent b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeyNeededEvent where
+  pToJSVal = unWebKitMediaKeyNeededEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeyNeededEvent where
+  pFromJSVal = WebKitMediaKeyNeededEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeyNeededEvent where
+  toJSVal = return . unWebKitMediaKeyNeededEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeyNeededEvent where
+  fromJSVal = return . fmap WebKitMediaKeyNeededEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebKitMediaKeyNeededEvent
+instance IsGObject WebKitMediaKeyNeededEvent where
+  typeGType _ = gTypeWebKitMediaKeyNeededEvent
+  {-# INLINE typeGType #-}
+noWebKitMediaKeyNeededEvent :: Maybe WebKitMediaKeyNeededEvent
+noWebKitMediaKeyNeededEvent = Nothing
+{-# INLINE noWebKitMediaKeyNeededEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyNeededEvent\"]" gTypeWebKitMediaKeyNeededEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeyNeededEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeyNeededEventInit Mozilla WebKitMediaKeyNeededEventInit documentation>
+newtype WebKitMediaKeyNeededEventInit = WebKitMediaKeyNeededEventInit { unWebKitMediaKeyNeededEventInit :: JSVal }
+
+instance Eq (WebKitMediaKeyNeededEventInit) where
+  (WebKitMediaKeyNeededEventInit a) == (WebKitMediaKeyNeededEventInit b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeyNeededEventInit where
+  pToJSVal = unWebKitMediaKeyNeededEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeyNeededEventInit where
+  pFromJSVal = WebKitMediaKeyNeededEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeyNeededEventInit where
+  toJSVal = return . unWebKitMediaKeyNeededEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeyNeededEventInit where
+  fromJSVal = return . fmap WebKitMediaKeyNeededEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebKitMediaKeyNeededEventInit
+instance IsGObject WebKitMediaKeyNeededEventInit where
+  typeGType _ = gTypeWebKitMediaKeyNeededEventInit
+  {-# INLINE typeGType #-}
+noWebKitMediaKeyNeededEventInit :: Maybe WebKitMediaKeyNeededEventInit
+noWebKitMediaKeyNeededEventInit = Nothing
+{-# INLINE noWebKitMediaKeyNeededEventInit #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeyNeededEventInit\"]" gTypeWebKitMediaKeyNeededEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeySession".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeySession Mozilla WebKitMediaKeySession documentation>
+newtype WebKitMediaKeySession = WebKitMediaKeySession { unWebKitMediaKeySession :: JSVal }
+
+instance Eq (WebKitMediaKeySession) where
+  (WebKitMediaKeySession a) == (WebKitMediaKeySession b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeySession where
+  pToJSVal = unWebKitMediaKeySession
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeySession where
+  pFromJSVal = WebKitMediaKeySession
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeySession where
+  toJSVal = return . unWebKitMediaKeySession
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeySession where
+  fromJSVal = return . fmap WebKitMediaKeySession . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget WebKitMediaKeySession
+instance IsGObject WebKitMediaKeySession where
+  typeGType _ = gTypeWebKitMediaKeySession
+  {-# INLINE typeGType #-}
+noWebKitMediaKeySession :: Maybe WebKitMediaKeySession
+noWebKitMediaKeySession = Nothing
+{-# INLINE noWebKitMediaKeySession #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeySession\"]" gTypeWebKitMediaKeySession :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitMediaKeys".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitMediaKeys Mozilla WebKitMediaKeys documentation>
+newtype WebKitMediaKeys = WebKitMediaKeys { unWebKitMediaKeys :: JSVal }
+
+instance Eq (WebKitMediaKeys) where
+  (WebKitMediaKeys a) == (WebKitMediaKeys b) = js_eq a b
+
+instance PToJSVal WebKitMediaKeys where
+  pToJSVal = unWebKitMediaKeys
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitMediaKeys where
+  pFromJSVal = WebKitMediaKeys
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitMediaKeys where
+  toJSVal = return . unWebKitMediaKeys
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitMediaKeys where
+  fromJSVal = return . fmap WebKitMediaKeys . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitMediaKeys where
+  typeGType _ = gTypeWebKitMediaKeys
+  {-# INLINE typeGType #-}
+noWebKitMediaKeys :: Maybe WebKitMediaKeys
+noWebKitMediaKeys = Nothing
+{-# INLINE noWebKitMediaKeys #-}
+
+foreign import javascript unsafe "window[\"WebKitMediaKeys\"]" gTypeWebKitMediaKeys :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitNamedFlow".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamedFlow Mozilla WebKitNamedFlow documentation>
+newtype WebKitNamedFlow = WebKitNamedFlow { unWebKitNamedFlow :: JSVal }
+
+instance Eq (WebKitNamedFlow) where
+  (WebKitNamedFlow a) == (WebKitNamedFlow b) = js_eq a b
+
+instance PToJSVal WebKitNamedFlow where
+  pToJSVal = unWebKitNamedFlow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamedFlow where
+  pFromJSVal = WebKitNamedFlow
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamedFlow where
+  toJSVal = return . unWebKitNamedFlow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamedFlow where
+  fromJSVal = return . fmap WebKitNamedFlow . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget WebKitNamedFlow
+instance IsGObject WebKitNamedFlow where
+  typeGType _ = gTypeWebKitNamedFlow
+  {-# INLINE typeGType #-}
+noWebKitNamedFlow :: Maybe WebKitNamedFlow
+noWebKitNamedFlow = Nothing
+{-# INLINE noWebKitNamedFlow #-}
+
+foreign import javascript unsafe "window[\"WebKitNamedFlow\"]" gTypeWebKitNamedFlow :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitNamespace".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitNamespace Mozilla WebKitNamespace documentation>
+newtype WebKitNamespace = WebKitNamespace { unWebKitNamespace :: JSVal }
+
+instance Eq (WebKitNamespace) where
+  (WebKitNamespace a) == (WebKitNamespace b) = js_eq a b
+
+instance PToJSVal WebKitNamespace where
+  pToJSVal = unWebKitNamespace
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitNamespace where
+  pFromJSVal = WebKitNamespace
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitNamespace where
+  toJSVal = return . unWebKitNamespace
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitNamespace where
+  fromJSVal = return . fmap WebKitNamespace . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitNamespace where
+  typeGType _ = gTypeWebKitNamespace
+  {-# INLINE typeGType #-}
+noWebKitNamespace :: Maybe WebKitNamespace
+noWebKitNamespace = Nothing
+{-# INLINE noWebKitNamespace #-}
+
+foreign import javascript unsafe "window[\"WebKitNamespace\"]" gTypeWebKitNamespace :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitPlaybackTargetAvailabilityEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEvent Mozilla WebKitPlaybackTargetAvailabilityEvent documentation>
+newtype WebKitPlaybackTargetAvailabilityEvent = WebKitPlaybackTargetAvailabilityEvent { unWebKitPlaybackTargetAvailabilityEvent :: JSVal }
+
+instance Eq (WebKitPlaybackTargetAvailabilityEvent) where
+  (WebKitPlaybackTargetAvailabilityEvent a) == (WebKitPlaybackTargetAvailabilityEvent b) = js_eq a b
+
+instance PToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pToJSVal = unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  pFromJSVal = WebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPlaybackTargetAvailabilityEvent where
+  toJSVal = return . unWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPlaybackTargetAvailabilityEvent where
+  fromJSVal = return . fmap WebKitPlaybackTargetAvailabilityEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebKitPlaybackTargetAvailabilityEvent
+instance IsGObject WebKitPlaybackTargetAvailabilityEvent where
+  typeGType _ = gTypeWebKitPlaybackTargetAvailabilityEvent
+  {-# INLINE typeGType #-}
+noWebKitPlaybackTargetAvailabilityEvent :: Maybe WebKitPlaybackTargetAvailabilityEvent
+noWebKitPlaybackTargetAvailabilityEvent = Nothing
+{-# INLINE noWebKitPlaybackTargetAvailabilityEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitPlaybackTargetAvailabilityEvent\"]" gTypeWebKitPlaybackTargetAvailabilityEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitPlaybackTargetAvailabilityEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPlaybackTargetAvailabilityEventInit Mozilla WebKitPlaybackTargetAvailabilityEventInit documentation>
+newtype WebKitPlaybackTargetAvailabilityEventInit = WebKitPlaybackTargetAvailabilityEventInit { unWebKitPlaybackTargetAvailabilityEventInit :: JSVal }
+
+instance Eq (WebKitPlaybackTargetAvailabilityEventInit) where
+  (WebKitPlaybackTargetAvailabilityEventInit a) == (WebKitPlaybackTargetAvailabilityEventInit b) = js_eq a b
+
+instance PToJSVal WebKitPlaybackTargetAvailabilityEventInit where
+  pToJSVal = unWebKitPlaybackTargetAvailabilityEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPlaybackTargetAvailabilityEventInit where
+  pFromJSVal = WebKitPlaybackTargetAvailabilityEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPlaybackTargetAvailabilityEventInit where
+  toJSVal = return . unWebKitPlaybackTargetAvailabilityEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPlaybackTargetAvailabilityEventInit where
+  fromJSVal = return . fmap WebKitPlaybackTargetAvailabilityEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebKitPlaybackTargetAvailabilityEventInit
+instance IsGObject WebKitPlaybackTargetAvailabilityEventInit where
+  typeGType _ = gTypeWebKitPlaybackTargetAvailabilityEventInit
+  {-# INLINE typeGType #-}
+noWebKitPlaybackTargetAvailabilityEventInit :: Maybe WebKitPlaybackTargetAvailabilityEventInit
+noWebKitPlaybackTargetAvailabilityEventInit = Nothing
+{-# INLINE noWebKitPlaybackTargetAvailabilityEventInit #-}
+
+foreign import javascript unsafe "window[\"WebKitPlaybackTargetAvailabilityEventInit\"]" gTypeWebKitPlaybackTargetAvailabilityEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitPoint".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitPoint Mozilla WebKitPoint documentation>
+newtype WebKitPoint = WebKitPoint { unWebKitPoint :: JSVal }
+
+instance Eq (WebKitPoint) where
+  (WebKitPoint a) == (WebKitPoint b) = js_eq a b
+
+instance PToJSVal WebKitPoint where
+  pToJSVal = unWebKitPoint
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitPoint where
+  pFromJSVal = WebKitPoint
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitPoint where
+  toJSVal = return . unWebKitPoint
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitPoint where
+  fromJSVal = return . fmap WebKitPoint . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitPoint where
+  typeGType _ = gTypeWebKitPoint
+  {-# INLINE typeGType #-}
+noWebKitPoint :: Maybe WebKitPoint
+noWebKitPoint = Nothing
+{-# INLINE noWebKitPoint #-}
+
+foreign import javascript unsafe "window[\"WebKitPoint\"]" gTypeWebKitPoint :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitSubtleCrypto".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitSubtleCrypto Mozilla WebKitSubtleCrypto documentation>
+newtype WebKitSubtleCrypto = WebKitSubtleCrypto { unWebKitSubtleCrypto :: JSVal }
+
+instance Eq (WebKitSubtleCrypto) where
+  (WebKitSubtleCrypto a) == (WebKitSubtleCrypto b) = js_eq a b
+
+instance PToJSVal WebKitSubtleCrypto where
+  pToJSVal = unWebKitSubtleCrypto
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitSubtleCrypto where
+  pFromJSVal = WebKitSubtleCrypto
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitSubtleCrypto where
+  toJSVal = return . unWebKitSubtleCrypto
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitSubtleCrypto where
+  fromJSVal = return . fmap WebKitSubtleCrypto . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WebKitSubtleCrypto where
+  typeGType _ = gTypeWebKitSubtleCrypto
+  {-# INLINE typeGType #-}
+noWebKitSubtleCrypto :: Maybe WebKitSubtleCrypto
+noWebKitSubtleCrypto = Nothing
+{-# INLINE noWebKitSubtleCrypto #-}
+
+foreign import javascript unsafe "window[\"WebKitSubtleCrypto\"]" gTypeWebKitSubtleCrypto :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitTransitionEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEvent Mozilla WebKitTransitionEvent documentation>
+newtype WebKitTransitionEvent = WebKitTransitionEvent { unWebKitTransitionEvent :: JSVal }
+
+instance Eq (WebKitTransitionEvent) where
+  (WebKitTransitionEvent a) == (WebKitTransitionEvent b) = js_eq a b
+
+instance PToJSVal WebKitTransitionEvent where
+  pToJSVal = unWebKitTransitionEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitTransitionEvent where
+  pFromJSVal = WebKitTransitionEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitTransitionEvent where
+  toJSVal = return . unWebKitTransitionEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitTransitionEvent where
+  fromJSVal = return . fmap WebKitTransitionEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEvent WebKitTransitionEvent
+instance IsGObject WebKitTransitionEvent where
+  typeGType _ = gTypeWebKitTransitionEvent
+  {-# INLINE typeGType #-}
+noWebKitTransitionEvent :: Maybe WebKitTransitionEvent
+noWebKitTransitionEvent = Nothing
+{-# INLINE noWebKitTransitionEvent #-}
+
+foreign import javascript unsafe "window[\"WebKitTransitionEvent\"]" gTypeWebKitTransitionEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebKitTransitionEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebKitTransitionEventInit Mozilla WebKitTransitionEventInit documentation>
+newtype WebKitTransitionEventInit = WebKitTransitionEventInit { unWebKitTransitionEventInit :: JSVal }
+
+instance Eq (WebKitTransitionEventInit) where
+  (WebKitTransitionEventInit a) == (WebKitTransitionEventInit b) = js_eq a b
+
+instance PToJSVal WebKitTransitionEventInit where
+  pToJSVal = unWebKitTransitionEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebKitTransitionEventInit where
+  pFromJSVal = WebKitTransitionEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebKitTransitionEventInit where
+  toJSVal = return . unWebKitTransitionEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebKitTransitionEventInit where
+  fromJSVal = return . fmap WebKitTransitionEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventInit WebKitTransitionEventInit
+instance IsGObject WebKitTransitionEventInit where
+  typeGType _ = gTypeWebKitTransitionEventInit
+  {-# INLINE typeGType #-}
+noWebKitTransitionEventInit :: Maybe WebKitTransitionEventInit
+noWebKitTransitionEventInit = Nothing
+{-# INLINE noWebKitTransitionEventInit #-}
+
+foreign import javascript unsafe "window[\"WebKitTransitionEventInit\"]" gTypeWebKitTransitionEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WebSocket".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WebSocket Mozilla WebSocket documentation>
+newtype WebSocket = WebSocket { unWebSocket :: JSVal }
+
+instance Eq (WebSocket) where
+  (WebSocket a) == (WebSocket b) = js_eq a b
+
+instance PToJSVal WebSocket where
+  pToJSVal = unWebSocket
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WebSocket where
+  pFromJSVal = WebSocket
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WebSocket where
+  toJSVal = return . unWebSocket
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WebSocket where
+  fromJSVal = return . fmap WebSocket . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget WebSocket
+instance IsGObject WebSocket where
+  typeGType _ = gTypeWebSocket
+  {-# INLINE typeGType #-}
+noWebSocket :: Maybe WebSocket
+noWebSocket = Nothing
+{-# INLINE noWebSocket #-}
+
+foreign import javascript unsafe "window[\"WebSocket\"]" gTypeWebSocket :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WheelEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MouseEvent"
+--     * "GHCJS.DOM.UIEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent Mozilla WheelEvent documentation>
+newtype WheelEvent = WheelEvent { unWheelEvent :: JSVal }
+
+instance Eq (WheelEvent) where
+  (WheelEvent a) == (WheelEvent b) = js_eq a b
+
+instance PToJSVal WheelEvent where
+  pToJSVal = unWheelEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WheelEvent where
+  pFromJSVal = WheelEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WheelEvent where
+  toJSVal = return . unWheelEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WheelEvent where
+  fromJSVal = return . fmap WheelEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMouseEvent WheelEvent
+instance IsUIEvent WheelEvent
+instance IsEvent WheelEvent
+instance IsGObject WheelEvent where
+  typeGType _ = gTypeWheelEvent
+  {-# INLINE typeGType #-}
+noWheelEvent :: Maybe WheelEvent
+noWheelEvent = Nothing
+{-# INLINE noWheelEvent #-}
+
+foreign import javascript unsafe "window[\"WheelEvent\"]" gTypeWheelEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WheelEventInit".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.MouseEventInit"
+--     * "GHCJS.DOM.EventModifierInit"
+--     * "GHCJS.DOM.UIEventInit"
+--     * "GHCJS.DOM.EventInit"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WheelEventInit Mozilla WheelEventInit documentation>
+newtype WheelEventInit = WheelEventInit { unWheelEventInit :: JSVal }
+
+instance Eq (WheelEventInit) where
+  (WheelEventInit a) == (WheelEventInit b) = js_eq a b
+
+instance PToJSVal WheelEventInit where
+  pToJSVal = unWheelEventInit
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WheelEventInit where
+  pFromJSVal = WheelEventInit
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WheelEventInit where
+  toJSVal = return . unWheelEventInit
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WheelEventInit where
+  fromJSVal = return . fmap WheelEventInit . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsMouseEventInit WheelEventInit
+instance IsEventModifierInit WheelEventInit
+instance IsUIEventInit WheelEventInit
+instance IsEventInit WheelEventInit
+instance IsGObject WheelEventInit where
+  typeGType _ = gTypeWheelEventInit
+  {-# INLINE typeGType #-}
+noWheelEventInit :: Maybe WheelEventInit
+noWheelEventInit = Nothing
+{-# INLINE noWheelEventInit #-}
+
+foreign import javascript unsafe "window[\"WheelEventInit\"]" gTypeWheelEventInit :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Window".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.WindowOrWorkerGlobalScope"
+--     * "GHCJS.DOM.WindowEventHandlers"
+--     * "GHCJS.DOM.GlobalPerformance"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.GlobalCrypto"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Window Mozilla Window documentation>
+newtype Window = Window { unWindow :: JSVal }
+
+instance Eq (Window) where
+  (Window a) == (Window b) = js_eq a b
+
+instance PToJSVal Window where
+  pToJSVal = unWindow
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Window where
+  pFromJSVal = Window
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Window where
+  toJSVal = return . unWindow
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Window where
+  fromJSVal = return . fmap Window . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget Window
+instance IsWindowOrWorkerGlobalScope Window
+instance IsWindowEventHandlers Window
+instance IsGlobalPerformance Window
+instance IsGlobalEventHandlers Window
+instance IsGlobalCrypto Window
+instance IsGObject Window where
+  typeGType _ = gTypeWindow
+  {-# INLINE typeGType #-}
+noWindow :: Maybe Window
+noWindow = Nothing
+{-# INLINE noWindow #-}
+
+foreign import javascript unsafe "window[\"Window\"]" gTypeWindow :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WindowEventHandlers".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowEventHandlers Mozilla WindowEventHandlers documentation>
+newtype WindowEventHandlers = WindowEventHandlers { unWindowEventHandlers :: JSVal }
+
+instance Eq (WindowEventHandlers) where
+  (WindowEventHandlers a) == (WindowEventHandlers b) = js_eq a b
+
+instance PToJSVal WindowEventHandlers where
+  pToJSVal = unWindowEventHandlers
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowEventHandlers where
+  pFromJSVal = WindowEventHandlers
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowEventHandlers where
+  toJSVal = return . unWindowEventHandlers
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowEventHandlers where
+  fromJSVal = return . fmap WindowEventHandlers . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsWindowEventHandlers o
+toWindowEventHandlers :: IsWindowEventHandlers o => o -> WindowEventHandlers
+toWindowEventHandlers = WindowEventHandlers . coerce
+
+instance IsWindowEventHandlers WindowEventHandlers
+instance IsGObject WindowEventHandlers where
+  typeGType _ = gTypeWindowEventHandlers
+  {-# INLINE typeGType #-}
+noWindowEventHandlers :: Maybe WindowEventHandlers
+noWindowEventHandlers = Nothing
+{-# INLINE noWindowEventHandlers #-}
+
+foreign import javascript unsafe "window[\"WindowEventHandlers\"]" gTypeWindowEventHandlers :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WindowOrWorkerGlobalScope".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope Mozilla WindowOrWorkerGlobalScope documentation>
+newtype WindowOrWorkerGlobalScope = WindowOrWorkerGlobalScope { unWindowOrWorkerGlobalScope :: JSVal }
+
+instance Eq (WindowOrWorkerGlobalScope) where
+  (WindowOrWorkerGlobalScope a) == (WindowOrWorkerGlobalScope b) = js_eq a b
+
+instance PToJSVal WindowOrWorkerGlobalScope where
+  pToJSVal = unWindowOrWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WindowOrWorkerGlobalScope where
+  pFromJSVal = WindowOrWorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WindowOrWorkerGlobalScope where
+  toJSVal = return . unWindowOrWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WindowOrWorkerGlobalScope where
+  fromJSVal = return . fmap WindowOrWorkerGlobalScope . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsGObject o) => IsWindowOrWorkerGlobalScope o
+toWindowOrWorkerGlobalScope :: IsWindowOrWorkerGlobalScope o => o -> WindowOrWorkerGlobalScope
+toWindowOrWorkerGlobalScope = WindowOrWorkerGlobalScope . coerce
+
+instance IsWindowOrWorkerGlobalScope WindowOrWorkerGlobalScope
+instance IsGObject WindowOrWorkerGlobalScope where
+  typeGType _ = gTypeWindowOrWorkerGlobalScope
+  {-# INLINE typeGType #-}
+noWindowOrWorkerGlobalScope :: Maybe WindowOrWorkerGlobalScope
+noWindowOrWorkerGlobalScope = Nothing
+{-# INLINE noWindowOrWorkerGlobalScope #-}
+
+foreign import javascript unsafe "window[\"WindowOrWorkerGlobalScope\"]" gTypeWindowOrWorkerGlobalScope :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.Worker".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.AbstractWorker"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/Worker Mozilla Worker documentation>
+newtype Worker = Worker { unWorker :: JSVal }
+
+instance Eq (Worker) where
+  (Worker a) == (Worker b) = js_eq a b
+
+instance PToJSVal Worker where
+  pToJSVal = unWorker
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal Worker where
+  pFromJSVal = Worker
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal Worker where
+  toJSVal = return . unWorker
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal Worker where
+  fromJSVal = return . fmap Worker . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsEventTarget Worker
+instance IsAbstractWorker Worker
+instance IsGObject Worker where
+  typeGType _ = gTypeWorker
+  {-# INLINE typeGType #-}
+noWorker :: Maybe Worker
+noWorker = Nothing
+{-# INLINE noWorker #-}
+
+foreign import javascript unsafe "window[\"Worker\"]" gTypeWorker :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WorkerGlobalScope".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.WindowOrWorkerGlobalScope"
+--     * "GHCJS.DOM.GlobalPerformance"
+--     * "GHCJS.DOM.GlobalCrypto"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerGlobalScope Mozilla WorkerGlobalScope documentation>
+newtype WorkerGlobalScope = WorkerGlobalScope { unWorkerGlobalScope :: JSVal }
+
+instance Eq (WorkerGlobalScope) where
+  (WorkerGlobalScope a) == (WorkerGlobalScope b) = js_eq a b
+
+instance PToJSVal WorkerGlobalScope where
+  pToJSVal = unWorkerGlobalScope
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerGlobalScope where
+  pFromJSVal = WorkerGlobalScope
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerGlobalScope where
+  toJSVal = return . unWorkerGlobalScope
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerGlobalScope where
+  fromJSVal = return . fmap WorkerGlobalScope . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsWindowOrWorkerGlobalScope o, IsGlobalPerformance o, IsGlobalCrypto o, IsGObject o) => IsWorkerGlobalScope o
+toWorkerGlobalScope :: IsWorkerGlobalScope o => o -> WorkerGlobalScope
+toWorkerGlobalScope = WorkerGlobalScope . coerce
+
+instance IsWorkerGlobalScope WorkerGlobalScope
+instance IsEventTarget WorkerGlobalScope
+instance IsWindowOrWorkerGlobalScope WorkerGlobalScope
+instance IsGlobalPerformance WorkerGlobalScope
+instance IsGlobalCrypto WorkerGlobalScope
+instance IsGObject WorkerGlobalScope where
+  typeGType _ = gTypeWorkerGlobalScope
+  {-# INLINE typeGType #-}
+noWorkerGlobalScope :: Maybe WorkerGlobalScope
+noWorkerGlobalScope = Nothing
+{-# INLINE noWorkerGlobalScope #-}
+
+foreign import javascript unsafe "window[\"WorkerGlobalScope\"]" gTypeWorkerGlobalScope :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WorkerLocation".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerLocation Mozilla WorkerLocation documentation>
+newtype WorkerLocation = WorkerLocation { unWorkerLocation :: JSVal }
+
+instance Eq (WorkerLocation) where
+  (WorkerLocation a) == (WorkerLocation b) = js_eq a b
+
+instance PToJSVal WorkerLocation where
+  pToJSVal = unWorkerLocation
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerLocation where
+  pFromJSVal = WorkerLocation
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerLocation where
+  toJSVal = return . unWorkerLocation
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerLocation where
+  fromJSVal = return . fmap WorkerLocation . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WorkerLocation where
+  typeGType _ = gTypeWorkerLocation
+  {-# INLINE typeGType #-}
+noWorkerLocation :: Maybe WorkerLocation
+noWorkerLocation = Nothing
+{-# INLINE noWorkerLocation #-}
+
+foreign import javascript unsafe "window[\"WorkerLocation\"]" gTypeWorkerLocation :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WorkerNavigator".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.NavigatorOnLine"
+--     * "GHCJS.DOM.NavigatorLanguage"
+--     * "GHCJS.DOM.NavigatorID"
+--     * "GHCJS.DOM.NavigatorConcurrentHardware"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WorkerNavigator Mozilla WorkerNavigator documentation>
+newtype WorkerNavigator = WorkerNavigator { unWorkerNavigator :: JSVal }
+
+instance Eq (WorkerNavigator) where
+  (WorkerNavigator a) == (WorkerNavigator b) = js_eq a b
+
+instance PToJSVal WorkerNavigator where
+  pToJSVal = unWorkerNavigator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WorkerNavigator where
+  pFromJSVal = WorkerNavigator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WorkerNavigator where
+  toJSVal = return . unWorkerNavigator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WorkerNavigator where
+  fromJSVal = return . fmap WorkerNavigator . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsNavigatorOnLine WorkerNavigator
+instance IsNavigatorLanguage WorkerNavigator
+instance IsNavigatorID WorkerNavigator
+instance IsNavigatorConcurrentHardware WorkerNavigator
+instance IsGObject WorkerNavigator where
+  typeGType _ = gTypeWorkerNavigator
+  {-# INLINE typeGType #-}
+noWorkerNavigator :: Maybe WorkerNavigator
+noWorkerNavigator = Nothing
+{-# INLINE noWorkerNavigator #-}
+
+foreign import javascript unsafe "window[\"WorkerNavigator\"]" gTypeWorkerNavigator :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.WritableStream".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/WritableStream Mozilla WritableStream documentation>
+newtype WritableStream = WritableStream { unWritableStream :: JSVal }
+
+instance Eq (WritableStream) where
+  (WritableStream a) == (WritableStream b) = js_eq a b
+
+instance PToJSVal WritableStream where
+  pToJSVal = unWritableStream
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal WritableStream where
+  pFromJSVal = WritableStream
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal WritableStream where
+  toJSVal = return . unWritableStream
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal WritableStream where
+  fromJSVal = return . fmap WritableStream . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject WritableStream where
+  typeGType _ = gTypeWritableStream
+  {-# INLINE typeGType #-}
+noWritableStream :: Maybe WritableStream
+noWritableStream = Nothing
+{-# INLINE noWritableStream #-}
+
+foreign import javascript unsafe "window[\"WritableStream\"]" gTypeWritableStream :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLDocument".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.Document"
+--     * "GHCJS.DOM.Node"
+--     * "GHCJS.DOM.EventTarget"
+--     * "GHCJS.DOM.GlobalEventHandlers"
+--     * "GHCJS.DOM.DocumentOrShadowRoot"
+--     * "GHCJS.DOM.NonElementParentNode"
+--     * "GHCJS.DOM.ParentNode"
+--     * "GHCJS.DOM.DocumentAndElementEventHandlers"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLDocument Mozilla XMLDocument documentation>
+newtype XMLDocument = XMLDocument { unXMLDocument :: JSVal }
+
+instance Eq (XMLDocument) where
+  (XMLDocument a) == (XMLDocument b) = js_eq a b
+
+instance PToJSVal XMLDocument where
+  pToJSVal = unXMLDocument
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLDocument where
+  pFromJSVal = XMLDocument
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLDocument where
+  toJSVal = return . unXMLDocument
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLDocument where
+  fromJSVal = return . fmap XMLDocument . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsDocument XMLDocument
+instance IsNode XMLDocument
+instance IsEventTarget XMLDocument
+instance IsGlobalEventHandlers XMLDocument
+instance IsDocumentOrShadowRoot XMLDocument
+instance IsNonElementParentNode XMLDocument
+instance IsParentNode XMLDocument
+instance IsDocumentAndElementEventHandlers XMLDocument
+instance IsGObject XMLDocument where
+  typeGType _ = gTypeXMLDocument
+  {-# INLINE typeGType #-}
+noXMLDocument :: Maybe XMLDocument
+noXMLDocument = Nothing
+{-# INLINE noXMLDocument #-}
+
+foreign import javascript unsafe "window[\"XMLDocument\"]" gTypeXMLDocument :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequest".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.XMLHttpRequestEventTarget"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest Mozilla XMLHttpRequest documentation>
+newtype XMLHttpRequest = XMLHttpRequest { unXMLHttpRequest :: JSVal }
+
+instance Eq (XMLHttpRequest) where
+  (XMLHttpRequest a) == (XMLHttpRequest b) = js_eq a b
+
+instance PToJSVal XMLHttpRequest where
+  pToJSVal = unXMLHttpRequest
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequest where
+  pFromJSVal = XMLHttpRequest
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequest where
+  toJSVal = return . unXMLHttpRequest
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequest where
+  fromJSVal = return . fmap XMLHttpRequest . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsXMLHttpRequestEventTarget XMLHttpRequest
+instance IsEventTarget XMLHttpRequest
+instance IsGObject XMLHttpRequest where
+  typeGType _ = gTypeXMLHttpRequest
+  {-# INLINE typeGType #-}
+noXMLHttpRequest :: Maybe XMLHttpRequest
+noXMLHttpRequest = Nothing
+{-# INLINE noXMLHttpRequest #-}
+
+foreign import javascript unsafe "window[\"XMLHttpRequest\"]" gTypeXMLHttpRequest :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequestEventTarget".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestEventTarget Mozilla XMLHttpRequestEventTarget documentation>
+newtype XMLHttpRequestEventTarget = XMLHttpRequestEventTarget { unXMLHttpRequestEventTarget :: JSVal }
+
+instance Eq (XMLHttpRequestEventTarget) where
+  (XMLHttpRequestEventTarget a) == (XMLHttpRequestEventTarget b) = js_eq a b
+
+instance PToJSVal XMLHttpRequestEventTarget where
+  pToJSVal = unXMLHttpRequestEventTarget
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestEventTarget where
+  pFromJSVal = XMLHttpRequestEventTarget
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestEventTarget where
+  toJSVal = return . unXMLHttpRequestEventTarget
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestEventTarget where
+  fromJSVal = return . fmap XMLHttpRequestEventTarget . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+class (IsEventTarget o, IsGObject o) => IsXMLHttpRequestEventTarget o
+toXMLHttpRequestEventTarget :: IsXMLHttpRequestEventTarget o => o -> XMLHttpRequestEventTarget
+toXMLHttpRequestEventTarget = XMLHttpRequestEventTarget . coerce
+
+instance IsXMLHttpRequestEventTarget XMLHttpRequestEventTarget
+instance IsEventTarget XMLHttpRequestEventTarget
+instance IsGObject XMLHttpRequestEventTarget where
+  typeGType _ = gTypeXMLHttpRequestEventTarget
+  {-# INLINE typeGType #-}
+noXMLHttpRequestEventTarget :: Maybe XMLHttpRequestEventTarget
+noXMLHttpRequestEventTarget = Nothing
+{-# INLINE noXMLHttpRequestEventTarget #-}
+
+foreign import javascript unsafe "window[\"XMLHttpRequestEventTarget\"]" gTypeXMLHttpRequestEventTarget :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequestProgressEvent".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.ProgressEvent"
+--     * "GHCJS.DOM.Event"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestProgressEvent Mozilla XMLHttpRequestProgressEvent documentation>
+newtype XMLHttpRequestProgressEvent = XMLHttpRequestProgressEvent { unXMLHttpRequestProgressEvent :: JSVal }
+
+instance Eq (XMLHttpRequestProgressEvent) where
+  (XMLHttpRequestProgressEvent a) == (XMLHttpRequestProgressEvent b) = js_eq a b
+
+instance PToJSVal XMLHttpRequestProgressEvent where
+  pToJSVal = unXMLHttpRequestProgressEvent
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestProgressEvent where
+  pFromJSVal = XMLHttpRequestProgressEvent
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestProgressEvent where
+  toJSVal = return . unXMLHttpRequestProgressEvent
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestProgressEvent where
+  fromJSVal = return . fmap XMLHttpRequestProgressEvent . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsProgressEvent XMLHttpRequestProgressEvent
+instance IsEvent XMLHttpRequestProgressEvent
+instance IsGObject XMLHttpRequestProgressEvent where
+  typeGType _ = gTypeXMLHttpRequestProgressEvent
+  {-# INLINE typeGType #-}
+noXMLHttpRequestProgressEvent :: Maybe XMLHttpRequestProgressEvent
+noXMLHttpRequestProgressEvent = Nothing
+{-# INLINE noXMLHttpRequestProgressEvent #-}
+
+foreign import javascript unsafe "window[\"XMLHttpRequestProgressEvent\"]" gTypeXMLHttpRequestProgressEvent :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLHttpRequestUpload".
+-- Base interface functions are in:
+--
+--     * "GHCJS.DOM.XMLHttpRequestEventTarget"
+--     * "GHCJS.DOM.EventTarget"
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequestUpload Mozilla XMLHttpRequestUpload documentation>
+newtype XMLHttpRequestUpload = XMLHttpRequestUpload { unXMLHttpRequestUpload :: JSVal }
+
+instance Eq (XMLHttpRequestUpload) where
+  (XMLHttpRequestUpload a) == (XMLHttpRequestUpload b) = js_eq a b
+
+instance PToJSVal XMLHttpRequestUpload where
+  pToJSVal = unXMLHttpRequestUpload
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLHttpRequestUpload where
+  pFromJSVal = XMLHttpRequestUpload
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLHttpRequestUpload where
+  toJSVal = return . unXMLHttpRequestUpload
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLHttpRequestUpload where
+  fromJSVal = return . fmap XMLHttpRequestUpload . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsXMLHttpRequestEventTarget XMLHttpRequestUpload
+instance IsEventTarget XMLHttpRequestUpload
+instance IsGObject XMLHttpRequestUpload where
+  typeGType _ = gTypeXMLHttpRequestUpload
+  {-# INLINE typeGType #-}
+noXMLHttpRequestUpload :: Maybe XMLHttpRequestUpload
+noXMLHttpRequestUpload = Nothing
+{-# INLINE noXMLHttpRequestUpload #-}
+
+foreign import javascript unsafe "window[\"XMLHttpRequestUpload\"]" gTypeXMLHttpRequestUpload :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XMLSerializer".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XMLSerializer Mozilla XMLSerializer documentation>
+newtype XMLSerializer = XMLSerializer { unXMLSerializer :: JSVal }
+
+instance Eq (XMLSerializer) where
+  (XMLSerializer a) == (XMLSerializer b) = js_eq a b
+
+instance PToJSVal XMLSerializer where
+  pToJSVal = unXMLSerializer
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XMLSerializer where
+  pFromJSVal = XMLSerializer
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XMLSerializer where
+  toJSVal = return . unXMLSerializer
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XMLSerializer where
+  fromJSVal = return . fmap XMLSerializer . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XMLSerializer where
+  typeGType _ = gTypeXMLSerializer
+  {-# INLINE typeGType #-}
+noXMLSerializer :: Maybe XMLSerializer
+noXMLSerializer = Nothing
+{-# INLINE noXMLSerializer #-}
+
+foreign import javascript unsafe "window[\"XMLSerializer\"]" gTypeXMLSerializer :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XPathEvaluator".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathEvaluator Mozilla XPathEvaluator documentation>
+newtype XPathEvaluator = XPathEvaluator { unXPathEvaluator :: JSVal }
+
+instance Eq (XPathEvaluator) where
+  (XPathEvaluator a) == (XPathEvaluator b) = js_eq a b
+
+instance PToJSVal XPathEvaluator where
+  pToJSVal = unXPathEvaluator
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathEvaluator where
+  pFromJSVal = XPathEvaluator
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathEvaluator where
+  toJSVal = return . unXPathEvaluator
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathEvaluator where
+  fromJSVal = return . fmap XPathEvaluator . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XPathEvaluator where
+  typeGType _ = gTypeXPathEvaluator
+  {-# INLINE typeGType #-}
+noXPathEvaluator :: Maybe XPathEvaluator
+noXPathEvaluator = Nothing
+{-# INLINE noXPathEvaluator #-}
+
+foreign import javascript unsafe "window[\"XPathEvaluator\"]" gTypeXPathEvaluator :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XPathException".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathException Mozilla XPathException documentation>
+newtype XPathException = XPathException { unXPathException :: JSVal }
+
+instance Eq (XPathException) where
+  (XPathException a) == (XPathException b) = js_eq a b
+
+instance PToJSVal XPathException where
+  pToJSVal = unXPathException
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathException where
+  pFromJSVal = XPathException
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathException where
+  toJSVal = return . unXPathException
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathException where
+  fromJSVal = return . fmap XPathException . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XPathException where
+  typeGType _ = gTypeXPathException
+  {-# INLINE typeGType #-}
+noXPathException :: Maybe XPathException
+noXPathException = Nothing
+{-# INLINE noXPathException #-}
+
+foreign import javascript unsafe "window[\"XPathException\"]" gTypeXPathException :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XPathExpression".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathExpression Mozilla XPathExpression documentation>
+newtype XPathExpression = XPathExpression { unXPathExpression :: JSVal }
+
+instance Eq (XPathExpression) where
+  (XPathExpression a) == (XPathExpression b) = js_eq a b
+
+instance PToJSVal XPathExpression where
+  pToJSVal = unXPathExpression
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathExpression where
+  pFromJSVal = XPathExpression
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathExpression where
+  toJSVal = return . unXPathExpression
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathExpression where
+  fromJSVal = return . fmap XPathExpression . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XPathExpression where
+  typeGType _ = gTypeXPathExpression
+  {-# INLINE typeGType #-}
+noXPathExpression :: Maybe XPathExpression
+noXPathExpression = Nothing
+{-# INLINE noXPathExpression #-}
+
+foreign import javascript unsafe "window[\"XPathExpression\"]" gTypeXPathExpression :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XPathNSResolver".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathNSResolver Mozilla XPathNSResolver documentation>
+newtype XPathNSResolver = XPathNSResolver { unXPathNSResolver :: JSVal }
+
+instance Eq (XPathNSResolver) where
+  (XPathNSResolver a) == (XPathNSResolver b) = js_eq a b
+
+instance PToJSVal XPathNSResolver where
+  pToJSVal = unXPathNSResolver
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathNSResolver where
+  pFromJSVal = XPathNSResolver
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathNSResolver where
+  toJSVal = return . unXPathNSResolver
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathNSResolver where
+  fromJSVal = return . fmap XPathNSResolver . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XPathNSResolver where
+  typeGType _ = gTypeXPathNSResolver
+  {-# INLINE typeGType #-}
+noXPathNSResolver :: Maybe XPathNSResolver
+noXPathNSResolver = Nothing
+{-# INLINE noXPathNSResolver #-}
+
+foreign import javascript unsafe "window[\"XPathNSResolver\"]" gTypeXPathNSResolver :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XPathResult".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XPathResult Mozilla XPathResult documentation>
+newtype XPathResult = XPathResult { unXPathResult :: JSVal }
+
+instance Eq (XPathResult) where
+  (XPathResult a) == (XPathResult b) = js_eq a b
+
+instance PToJSVal XPathResult where
+  pToJSVal = unXPathResult
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XPathResult where
+  pFromJSVal = XPathResult
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XPathResult where
+  toJSVal = return . unXPathResult
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XPathResult where
+  fromJSVal = return . fmap XPathResult . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XPathResult where
+  typeGType _ = gTypeXPathResult
+  {-# INLINE typeGType #-}
+noXPathResult :: Maybe XPathResult
+noXPathResult = Nothing
+{-# INLINE noXPathResult #-}
+
+foreign import javascript unsafe "window[\"XPathResult\"]" gTypeXPathResult :: GType
+
+-- | Functions for this inteface are in "GHCJS.DOM.XSLTProcessor".
+--
+-- <https://developer.mozilla.org/en-US/docs/Web/API/XSLTProcessor Mozilla XSLTProcessor documentation>
+newtype XSLTProcessor = XSLTProcessor { unXSLTProcessor :: JSVal }
+
+instance Eq (XSLTProcessor) where
+  (XSLTProcessor a) == (XSLTProcessor b) = js_eq a b
+
+instance PToJSVal XSLTProcessor where
+  pToJSVal = unXSLTProcessor
+  {-# INLINE pToJSVal #-}
+
+instance PFromJSVal XSLTProcessor where
+  pFromJSVal = XSLTProcessor
+  {-# INLINE pFromJSVal #-}
+
+instance ToJSVal XSLTProcessor where
+  toJSVal = return . unXSLTProcessor
+  {-# INLINE toJSVal #-}
+
+instance FromJSVal XSLTProcessor where
+  fromJSVal = return . fmap XSLTProcessor . maybeJSNullOrUndefined
+  {-# INLINE fromJSVal #-}
+
+instance IsGObject XSLTProcessor where
+  typeGType _ = gTypeXSLTProcessor
+  {-# INLINE typeGType #-}
+noXSLTProcessor :: Maybe XSLTProcessor
+noXSLTProcessor = Nothing
+{-# INLINE noXSLTProcessor #-}
+
+foreign import javascript unsafe "window[\"XSLTProcessor\"]" gTypeXSLTProcessor :: GType
